速速,代码是否有错,感觉打了5个,只反映前三个

img

快帮忙想想办法看一下,这个代码是否有错误。
就是本来上次打还是正确的,但这次照着抄输入5个字符,只反映前两个。

程序本身是没有问题的,但我估计你不是想这么操作,现在程序里必须完成240个字符输入才能出最终的结果,你应该是想输入一串字符串,然后计算大写字母、小写字母和数字的个数。代码修改如下图所示:

#include <stdio.h>

int main()
{
    char c[240];
    int zc1=0,zc2=0,zc3=0,i;

    scanf("%s",c);
    for(i=0;i<240;i++)
    {
        
        
        if('A'<=c[i]&&c[i]<='Z')
            zc1++;
        else if('a'<=c[i]&&c[i]<='z')
            zc2++;
        else if('0'<=c[i]&&c[i]<='9')
            zc3++;
        
    }
    printf("大写字母共有:%d\n",zc1);
    printf("小写字母共有:%d\n",zc2);
    printf("数字共有:%d\n",zc3);
}

看着没问题,
最好写成 以下这种形式,如果有帮助麻烦给个采纳,谢谢~

if (i = 0; i < 3; ++i)
{
    scanf("%s", c[i]);
}

scanf在缓冲区里没有东西的时候是阻塞状态
你使用双重循环,一共循环3x80次,那么就需要你输入240个字符(算回车),否则代码执行不到printf
如果你只是想输入3行字符串,字符数不限,那应该用scanf("%s")来接收,不要循环接收char

因为不知道题目具体是求什么,这里假设是求输入字符串中各字符的个数,使用gets()从输入获取一行字符串,然后统计字符串中各字符的个数。

修改如下:

参考链接:


#include <stdio.h>
#include <string.h>

int main(void){
    
    //char c[3][80];
    char c[80];  // 存储输入的一行字符串的字符数组 
    int zc1=0,zc2=0,zc3=0,i,j;
    
    // https://www.runoob.com/cprogramming/c-function-gets.html
    gets(c);  //从输入获取一个字符串 
//    for(i=0;i<3;i++){
         // 遍历字符串,统计各字符的个数 
        for(j=0;j<strlen(c);j++){
            
            
            if('A'<=c[j]&&c[j]<='Z'){
                zc1++;
            }else if('a'<=c[j]&&c[j]<='z'){
                zc2++;
            }else  if('0'<=c[j]&&c[j]<='9'){
                zc3++;
            }
        }
//    }
    
    
    printf("大写字母共有:%d\n",zc1);
    printf("小写字母共有:%d\n",zc2);
    printf("数字共有:%d\n",zc3);
    
    return 0; 
    
} 

img