鱼C论坛

 找回密码
 立即注册
查看: 1097|回复: 1

请问这段代码有什么问题

[复制链接]
发表于 2023-12-13 20:19:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这段代码有什么问题?@FishC
编一个函数void fun(char tt[]),它的功能是:将字符串tt中的大写字母都改为对应的小写字母,其它字符不变。
#include <stdio.h>
void fun(char tt[])
{
        int i;
        char a[50];
        while(1){
                for(int i=0;i<50;i++){
                if(a[i]>= 'A'&& a[i]<='Z'){
                        a[i]+=32;
                       
                }
                }
         break ;
        }
}
int main()
{   char tt[50];
        printf("请输入字符串:");
        scanf("%s",tt);
    fun(tt);
        printf("转换后:%s",tt);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-13 20:19:34 | 显示全部楼层
这段代码的问题在于逻辑错误和语法错误。

首先,循环中的条件应该是`i < strlen(tt)`而不是`i= 'A' && a[i] <= 'Z'`,因为我们要遍历整个字符串tt。

其次,循环中的变量i在外部已经声明了,所以在for循环中再次声明会导致重复定义的错误。可以直接使用外部的i。

最后,函数内部创建了一个新的字符数组a,并没有将结果返回给原始字符串tt。可以直接在原始字符串上进行修改。

以下是修正后的代码:
#include <stdio.h>#include <string.h>void fun(char tt[]){    for (int i = 0; i < strlen(tt); i++) {        if (tt[i] >= 'A' && tt[i] <= 'Z') {            tt[i] += 32;  // 将大写字母改为小写字母        }    }}int main(){    char str[50];    printf("请输入字符串:");    gets(str);    fun(str);    printf("转换后的字符串为:%s\n", str);    return 0;}
在这里我们使用到了C语言的字符串操作函数strlen()来获取字符串的长度,并且输入字符串使用了gets()函数,避免了空格等特殊字符的问题。最后,通过主函数打印出了转换后的字符串。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 23:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表