为什么最后一个识别不出


#include 
int main()
{
    char a[10];
    int letter=0,blank=0,digit=0,other=0,i;
    for(i=0;i<10;i++)
    {
        scanf("%c",&a[i]);
        if(i==5) printf("\n");
    }
    for(i=0;i<10;i++)
    {
        if(a[i]==' ')  blank++;
        else if((a[i]>='A'&&a[i]<='Z')||(a[i]>='a'&&a[i]<='z' ))letter++;
        else if(a[i]>='0'&&a[i]<='9') digit++;
        else other++;
    }
    printf("letter=%d,blank=%d,digit=%d,other=%d",letter,blank,digit,other);
    return 0;
}

img


可以识别啊

修改如下,供参考:

#include <stdio.h>
int main()
{
    char a[10];
    int letter=0,blank=0,digit=0,other=0,i=0;
    while ((a[i]=getchar()) != '\n' && i < 10) 
    {                                //for(i=0;i<10;i++)
                                     //scanf("%c",&a[i]);
                                     //if(i==5) printf("\n");
                                     //}
                                     //for(i=0;i<10;i++)
                                     //{
        if(a[i]==' ')
            blank++;
        else if((a[i]>='A'&&a[i]<='Z')||(a[i]>='a'&&a[i]<='z' ))
            letter++;
        else if(a[i]>='0'&&a[i]<='9')
            digit++;
        else other++;
        i++;
    }
    printf("letter=%d,blank=%d,digit=%d,other=%d",letter,blank,digit,other);
    return 0;
}

没有大问题。

img


#include <stdio.h>
int main()
{
    char a[10];
    int letter = 0, blank = 0, digit = 0, other = 0, i;
    for (i = 0; i < 10; i++)
    {
        scanf("%c", &a[i]);
        //    if (i == 5)//这行是多余的
        //    printf("\n"); //这行是多余的
    }
    for (i = 0; i < 10; i++)
    {
        if (a[i] == ' ')
            blank++;
        else if ((a[i] >= 'A' && a[i] <= 'Z') || (a[i] >= 'a' && a[i] <= 'z'))
            letter++;
        else if (a[i] >= '0' && a[i] <= '9')
            digit++;
        else
            other++;
    }
    printf("letter=%d,blank=%d,digit=%d,other=%d", letter, blank, digit, other);
    return 0;
}