整个程序如下:
#include<stdio.h>
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="0;
for(i=0;i<10;++i)
printf(" %d",ndigit[i]);
printf(", white space= %d,other= %d\n",
nwhite,nother);
}
++ndigit[c-'0'];这句里的[c-'0']出现得很突然,不知道什么意思?我试着把它改成[c]程序输出不对了.
參考答案:c的ASCII码减去0的ASCII码的值自动转换成整型
即得到ndigit[0...9];
0的ASCII码是48
如果不减得到是ndigit[48...57];