回复 楼主 bingnongkoo
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int main()
{
int c,i,nwhite,nother;
int ndigit[10];
nwhite=nother=0;
for(i=0;i<10;++i)
ndigit[i]=0;
while((c=getchar())!=EOF)
{
if(c>='0'&&c<='9')
++ndigit[c-'0'];
else if(c==' '||c=='\n'||c=='\t')
++nwhite;
else
++nother;}
printf("digits=");
for(i=0;i<10;++i)
printf("%d",ndigit[i]);
printf(",white space=%d,other=%d",nwhite,nother);
}你错误有两点,第一你这个while循环没有加大括号,楼主不会不知道为什么while循环后面大括号的意思吧?
按照你这个题目要求,在这个while循环需要包括
while((c=getchar())!=EOF)
{
if(c>='0'&&c<='9')
++ndigit[c-'0'];
//第一个运算。
else if(c==' '||c=='\n'||c=='\t')//第二个运算
++nwhite;
else
//第三个运算
++nother;}如果你不把这三个运算全部用大括号包括进去,那么只会执行while后面的第一个语句-》即遇到第一个分号为止。这是你第一个错误。
第二:else if(c==" "||c=="\n"||c=="\t") 楼主你这个语句是用来判断输入是否为空格,回车。。?你看看你写错了什么,else if(c==' '||c=='\n'||c=='\t')应该是这么写,把双引号改成单引号。楼主要细心啊,解释够详细么?如果帮到你了,请给分吧,我缺分提问了。。。