cs宇帝 发表于 2023-11-3 19:38:28

我这个为啥不能运行为了求大写的字母

#include<stdio.h>
main()
{
        int i=0,count=0;
        char ch;
        gets(ch);
        printf("%s\n",ch);
        for(i=0;i<5;i++)
        {
                while(ch>='A'&&ch<='Z')
                {
                        count++;
       
                }
    }
       
        printf("%d\n",count);
       
}

isdkz 发表于 2023-11-3 19:39:13

这段代码不能正确计算大写字母的个数的原因是在内层的while循环中没有对循环变量进行更新,导致循环无法结束。为了修复这个问题,你可以在while循环中添加 i++ 语句,使得循环变量 i 每次都会增加,从而遍历整个字符数组。修改后的代码如下所示:

#include <stdio.h>

int main() {
    int i = 0, count = 0;
    char ch;
   
    gets(ch);
    printf("%s\n", ch);
   
    for (i = 0; i < 5; i++) {
      while (ch[ i] >= 'A' && ch[ i] <= 'Z') {
            count++;
            i++;// 添加这行代码来更新循环变量i
      }
    }
   
    printf("%d\n", count);
   
    return 0;
}


请注意,使用 gets() 函数是不安全的,因为它没有提供缓冲区溢出保护。建议使用更安全的函数 fgets() 来替代。另外,你可以考虑使用 strlen() 函数来获取输入字符串的长度,而不是硬编码为5。
页: [1]
查看完整版本: 我这个为啥不能运行为了求大写的字母