注册 登录
编程论坛 新人交流区

一个c语言的问题

wangtng03 发布于 2007-11-11 23:33, 463 次点击

#include "stdio.h"
main()
{
int letter=0,space=0,number=0,others=0;
char a;
while(a=getchar()!='\n')
{
if((a>=65&&a<=90)||(a>=97&&a<=122))
{
letter++;
}
else if(a>=48&&a<=57)
{
number++;
}
else if(a==59)
{
space++;
}
else
others++;

}
printf("there are %d letter\n",letter);
printf("there are %d space\n",space);
printf("there are %d number\n",number);
printf("there are %d others\n",others);
}

我本想把输入的字符分类统计出来,可为什么全都加到others上去了

7 回复
#2
ecjtudream2007-11-12 00:26
while(a=getchar()!='\n')

!!!!!
http://hi.baidu.com/lzxiangz/blog/item/07892c95f0e4950b7af48057.html


这里有关于getchar()函数的详细解释!
#3
ecjtudream2007-11-12 00:28
#include "stdio.h"
main()
{
int letter=0,space=0,number=0,others=0;
char a;
while((a=getchar())!='\n')
{
if((a>=65 && a<=90)||(a>=97 && a<=122))
letter++;
else
{
if(a>=48 && a<=57)
number++;
else
{
if(a==59) space++;
else
{
others++;
}
}
}
}
printf("there are %d letter\n",letter);
printf("there are %d space\n",space);
printf("there are %d number\n",number);
printf("there are %d others\n",others);
}



同时让自己的程序规范化哦! 呵呵!


写的规范,形成自己的风格,也能让别人很容易读懂自己的代码.呵呵!

加油哦!
#4
ambrose2007-11-12 09:00

看不出错误来,那就是while里面写借了

#5
上来找找2007-11-12 09:18

因该是while那有错

#6
chengfuwei2007-11-12 09:21

可能是whlie里面有错误吧?看不出来啊

#7
nianshi2007-11-12 09:27
while(a=getchar()!='\n') 应改为:while((a=getchar())!='\n');
分析:因为=的优先级低于!=。所以如果不加括号的许,会先执行关系表达式getchar()!='\n',再把关系表达式getchar()!='\n'的值(非0即1)放入a 中,所以你下面的统计工作就不能实现了。因为你并没有把你输入的字符放入a中。

#8
forrestx2007-11-12 15:53
SPACE的ASCII码,十进制是32,不是59
1