这是一个统计各个数字,空白符,其他字符的代码,其中
1.c-'0'是什么意思
2.int ndigit[10];是什么意思
3.if(c==' '||c=='\n'||c=='\t')的c==''中间要打空格吗
4.printf(",white space=%d,other=%d\n",nwhite,nother);为什么要加第一个,逗号
#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==' '||c=='\n'||c=='\t')
++nwhite'
else if(c>='0'&&c<='9')
++ndigit[c-'0'];
else
++nother;
printf("digits=");
for(i=o;i<10;++i)
printf("%d",ndigit[i]);
printf(",white space=%d,other=%d\n",nwhite,nother);
}
为什么要-‘0’啊,'0‘在这是等于0吗,那为什么要减,直接c不可以吗
在ASCII编码中, 0~9 的编码是 0x30~0x39, 所以当c在‘0'~'9'的范围中时,c - '0' 就相当于计算c的实际数值,例如 c 是 '1', 则 c - '0' = 1, 把字符值转为数字值了
#include<stdio.h>
int main()
{
int a,b;
a=!0;b=!!0;
printf("a=%d,b=%d\n",a,b);return 0;
}
/*输出结果:a=1,b=0
*/扩展资料
0的ASCII码是30,就是先把30转变为与c一样的数据类型【30】,然后用c减去【30】
(1)+,—,*,/运算的两个数中有一个为float或double型,结果是double型,因为统一将所有float型数据都先转换为double型,然后进行运算。
(2)如果int型与float或double型数据进行运算,先把int型和float型数据转换为double
型,然后进行运算,结果是double型。
(3)字符(char)型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算。字符型可以直接与整型数据进行运算。如果字符型数据与实型数据进行运算,则将字符的ASCII代码转换为double型数据,然后进行运算。
参考资料:百度百科 - C语言
意思是:
字符‘0’对应的ASCII码是48,48对应的十六进制数就是0x30,通常我们在编程的时候,用字符转化为数字的时候经常要用到,比如要将‘8’转换为数字8,在语句中这样写就可以了,“ 8+‘0’”。这里的8就是数字。
字符‘0’和数字0的区别:
前者是字符常量,后者是整形常量,它们的含义和在计算机中的存储方式截然不同。但是字符常量可以像整数一样在程序中参与相关运算。
扩展资料
“0”和‘0’的区别。
首先“0”是字符串常量,字符串常量是由一对双引号括起的字符序列。
例如:“CHINA”,“I LOVE YOU”,“123”等都是合法的字符串常量。
‘0’是字符常量,字符串常量和字符常量是不同的量。
1、字符常量由单引号括起来;字符串常量由双引号括起来。
2、字符常量只能是单个字符;字符串常量则可以含一个或多个字符。
参考资料:百度百科——C语言
本回答被网友采纳c语言'\0' 意思:
字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符"\0" (ASCII码为0)。这是字符串结束的标志。
输出thanks的方法:
#include <stdio.h>
void main()
{
char a;
a=getchar();
if (a=='\0');
printf("thanks");
}
运行时输入:回车,就会显示thanks。
C语言的其他基本数据类型:
1、void:声明函数无返回值或无参数,声明无类型指针,显示丢弃运算结果。(C89标准新增)
2、char:字符型类型数据,属于整型数据的一种。(K&R时期引入)
3、int:整型数据,表示范围通常为编译器指定的内存字节长。(K&R时期引入)
4、float:单精度浮点型数据,属于浮点数据的一种。(K&R时期引入)
5、double:双精度浮点型数据,属于浮点数据的一种。(K&R时期引入)
希望可以帮到你!
追问谢谢你,请问
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<='6') 把9改成6就是!