|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
main()
{
int i=0,count=0;
char ch[5];
gets(ch);
printf("%s\n",ch);
for(i=0;i<5;i++)
{
while(ch[i]>='A'&&ch[i]<='Z')
{
count++;
}
}
printf("%d\n",count);
}
这段代码不能正确计算大写字母的个数的原因是在内层的while循环中没有对循环变量进行更新,导致循环无法结束。为了修复这个问题,你可以在while循环中添加 i++ 语句,使得循环变量 i 每次都会增加,从而遍历整个字符数组。修改后的代码如下所示:
#include <stdio.h>
int main() {
int i = 0, count = 0;
char ch[5];
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。
|
|