C语言中编写一道程序:输入一行字符,分别统计其英文字母、数字和其它字符的个数。

来源:百度知道 编辑:UC知道 时间:2024/06/08 08:39:12
下面程序:运行时输入AA##88 结果为什么为:英文字母有:2个,数字有:2个,其它字符有:3个
#include <stdio.h>
main()
{int x=0,y=0,z=0;
char ch;
while(ch!='\n')
{ch=getchar();
if(ch>=65&&ch<=90 || ch>=97&&ch<=122)
x++;
else if(ch>48&&ch<57)
y++;
else
z++;
}
printf("英文字母有:%d个,数字有:%d个,其它字符有:%d个",x,y,z);
}

好像你的程序是有错误的,你在第一个ch进入的时候怎么判断它是不是'\n',你应该在while前面加上ch=getchar(); 改后的程序应该如下:
#include <stdio.h>
main()
{int x=0,y=0,z=0;
char ch;
ch=getchar();
while(ch!='\n')
{
if(ch>=65&&ch<=90 || ch>=97&&ch<=122)
x++;
else if(ch>48&&ch<57)
y++;
else
z++;
ch=getchar();
}
printf("英文字母有:%d个,数字有:%d个,其它字符有:%d个",x,y,z);
}
我没有运行。你试一试?

是因为把最后的‘\n’算进去了
while(ch!='\n')
{ch=getchar(); //得到'\n'
。。。
z++; //z+1之后再到while判断是回车结束,在这之前就已经+1了

#include <stdio.h>
main()
{int x=0,y=0,z=0;
char ch;
ch=getchar(); //第一次判断前先输入
while(ch!='\n')
{
if(ch>=65&&ch<=90 || ch>=97&&ch<=122)
x++;
else if(ch>48&&ch<57)
y++;
else
z++;
ch=getchar(); //移到这里
}
printf("英文字母有:%d个,数字有:%d个,