一个达布刘(o゚v゚)ノ 2022-07-21 10:44 采纳率: 43.8%
浏览 53
已结题

根据代码找到所存在的问题

不知道哪里出了问题
输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数。

#include <stdio.h>
int main()
{
    char a[1000];
    int count=0,count1=0,count2=0,other=0;
    while(scanf("%s",&a[1000])!=EOF)
    {
        for(int i=0;i<1000;i++)
    {
        if((a[i]>='a' && a[i]<='z')||(a[i]>='A' && a[i]<='Z'))
            count++;
        else
            if(a[i]==' ')
                count1++;
        else
            if(a[i]>='0' && a[i]<='9')
                count2++;
        else
            other++;
    }        
    }
    printf("%d\n%d\n%d\n%d\n",count,count1,count2,other);
    return 0;
}

  • 写回答

5条回答 默认 最新

  • 浪客 2022-07-21 11:26
    关注

    scanf不接收空格,要用getchar

    
    int main()
    {
        char a[1000] = {0}, ch;
        int count = 0, count1 = 0, count2 = 0, other = 0, len = 0;
        // while (scanf("%s", &a[1000]) != EOF) 
        while ((ch = getchar()) != '\n' && len < 1000)
        {
            a[len++] = ch;
        }
    
        for (int i = 0; i < len; i++)//
        {
            if ((a[i] >= 'a' && a[i] <= 'z') || (a[i] >= 'A' && a[i] <= 'Z'))
                count++;
            else if (a[i] == ' ')
                count1++;
            else if (a[i] >= '0' && a[i] <= '9')
                count2++;
            else
                other++;
        }
    
        printf("%d\n%d\n%d\n%d\n", count, count1, count2, other);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 8月13日
  • 已采纳回答 8月5日
  • 创建了问题 7月21日