作业帮 > 综合 > 作业

C语言问题,这是一个统计各个数字,空白符,其他字符的代码,其中1.2.int ndigit[10];是什么意思3.if(

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/26 03:53:31
C语言问题,
这是一个统计各个数字,空白符,其他字符的代码,其中
1.
2.int ndigit[10];是什么意思
3.if(c==' '||c=='\n'||c=='\t')的c==''中间要打空格吗
4.printf(",white space=%d,other=%d\n",nwhite,nother);为什么要加第一个,逗号
#include
main()
{
\x05int c,i,nwhite,nother;
\x05int ndigit[10];
\x05nwhite=nother=0;
\x05for(i=0;i
#include<stdio.h>
main()
{
\x09int c,i,nwhite,nother;
\x09int ndigit[10];//ndigit[10]用来存放相应的各个数字的次数,ndigit[0]存放0的次数,ndight[9]存放9的次数
\x09nwhite=nother=0;
\x09for(i=0;i<10;++i)
\x09\x09ndigit[i]=0;
\x09while((c=getchar())!=EOF)
\x09 if(c==' '||c=='\n'||c=='\t')//中间必须打空格,就像'a'一样,中间是什么就写什么,'\n' '\t'  ' '
\x09\x09++nwhite'
\x09 else if(c>='0'&&c<='9')
\x09   ++ndigit[c-'0'];//这是ASCII码表示的,比如当检测到输入的数字是'0'时++ndigit[c-'0']即为++ndigit[0-0],当检测到输入的数字是'5'时++ndigit['5'-'0'=5]即为++ndigit[5]
      else 
\x09\x09++nother;
\x09printf("digits=");
\x09for(i=o;i<10;++i)
\x09\x09printf("%d",ndigit[i]);
\x09printf(",white space=%d,other=%d\n",nwhite,nother);//这里的逗号是输出时为了分隔各个数字用的,也可以用空格取代,像这样的问题,你可以去掉逗号输出比较就可以自己解决;
}
希望可以帮到你!
再问: 谢谢你,请问 1。ndigit[1]是指数字1出现的个数,那么dnigit[10]就是数字0到9出现的个数吗 2。我用vc试了下,发现不打空格有error(1),打了就没有,为什么他们都说不需要打空格 3。输入的数字’5‘的时候是++ndigit['5'-'0'=5]为什么不能直接++ndigit[5] 4这个没有问题看懂了是跟前面分开用的
再答: 1,对,相应脚码对应相应数字出现次数! 2,这个道理很简单,因为他们错了! 3,这是代码简写啊,你想想,如果写++ndigit[0];++ndigit[1];.。。++ndigit[9]这会多麻烦啊,
再问: 3厄不是,我是意思是直接++ndigit[c] 1那如果我想表示数字0到6出现的个数怎么表示,又不是ndigit[6]
再答: 3,你在前面定义c时就有问题,c应该定义为char;这么跟你说,如果像你这样说,那么如果是'0',那么就是++ndigit['0'=48],c是字符型里面是ASCII在做减法,当检测到的数字是'1'时,'1'是字符型,ASCII值为49,'0'的ASCII 值为48,所以当检测到的是'1'时++ndigit[’1‘-’0‘]就是++ndigit[49-48]即为++ndigit[1],如果写成++ndigit[’1‘]即为++ndigit[49] 1,0-6那就改变条件啊,else if(c>='0'&&c