#include
#include
int main()
{
int capitalletter=0,lowercaser=0,blank=0,digit=0,other=0,x;
char str[10];
printf("Input 10 characters: ");
scanf("%s",&str);
for (x=0;x {
if (str[x]>='A'&str[x]<= 'Z')
capitalletter++;
else if (str[x]>='a'&str[x]<='z')
lowercaser++;
else if (str[x]>='0'&str[x]<='9')
digit++;
else if (str[x]=='032')
blank++;
else
other++;
}
printf("capital letter=%d,lower caser=%d,blank=%d,digit=%d,other=%d\n",capitalletter,lowercaser,blank,digit,other);
return 0;
}
为什么只要输入的数组里面有空格,就会把空格及其以后的字符都当成other输出。
如果输入的字符里没有空格,那么就都正确
scanf是接受不到空格的,你可以用gets(str) 读取一行字符
你那可能要把gets_s改成gets
#include <stdio.h>
#include<string.h>
int main()
{
int capitalletter = 0, lowercaser = 0, blank = 0, digit = 0, other = 0, x;
char str[30];
printf("Input 10 characters: ");
gets_s(str);
for (x = 0;x<strlen(str); x++){
if (str[x] >= 'A'&str[x] <= 'Z')
capitalletter++;
else if (str[x] >= 'a'&str[x] <= 'z')
lowercaser++;
else if (str[x] >= '0'&str[x] <= '9')
digit++;
else if (str[x] == ' ')
blank++;
else
other++;
}
printf("capital letter=%d,lower caser=%d,blank=%d,digit=%d,other=%d\n", capitalletter, lowercaser, blank, digit, other);
return 0;
}