int zm=0,sz=0,qt=0;
char c;
scanf("%c",&c);
while(c!='\n')
{
if(c>='0'&& c <='9')
sz++;
else if((c>='A' && c<='Z') || (c>='a' && c<='z'))
zm++;
else
qt++;
scanf("%c",&c);
}
printf("数字:%d 字母:%d 其它%d\n",sz,zm,qt);
system("pause");
每次scanf只能读取一个字符,因此循环中也需要。和我说的getchar要放在循环里是一个道理
每次scanf读取一个字符,因此循环中也需要。和我说的getchar是一个道理
你也可以while(1){scanf,然后再if来判断}
代码从上往下读,到while所在行时,第一个scanf已经执行完毕,不会再跳上去执行这句代码,依本段代码功能可改为:
int zm=0,sz=0,qt=0;
char c=a;
while(c!='\n')
{
if(zm==0&&sz==0&&qt==0)
{ }
else{
if(c>='0'&& c <='9')
sz++;
else if((c>='A' && c<='Z') || (c>='a' && c<='z'))
zm++;
else
qt++;
}
scanf("%c",&c);
}
printf("数字:%d 字母:%d 其它%d\n",sz,zm,qt);
system("pause");
第一个scanf是第一次循环用的,另外一个是第二次第三次。。。。循环所用的数据