鱼C论坛

 找回密码
 立即注册
查看: 1491|回复: 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);
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

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

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

以下是修正后的代码:
  1. #include <stdio.h>
  2. #include <string.h>
  3. void fun(char tt[])
  4. {
  5.     for (int i = 0; i < strlen(tt); i++) {
  6.         if (tt[i] >= 'A' && tt[i] <= 'Z') {
  7.             tt[i] += 32;  // 将大写字母改为小写字母
  8.         }
  9.     }
  10. }
  11. int main()
  12. {
  13.     char str[50];
  14.     printf("请输入字符串:");
  15.     gets(str);
  16.     fun(str);
  17.     printf("转换后的字符串为:%s\n", str);
  18.     return 0;
  19. }
复制代码

在这里我们使用到了C语言的字符串操作函数strlen()来获取字符串的长度,并且输入字符串使用了gets()函数,避免了空格等特殊字符的问题。最后,通过主函数打印出了转换后的字符串。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 07:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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