C语言问题,c-'0'是什么意思

作者&投稿:禄振 (若有异议请与网页底部的电邮联系)
c语言问题。。问一下我画圈的c-‘0’什么意思?~

C是一个字符,c-'0'是一个数字,这个数字就是字符c代表的那个数字。比如,c=='5',那么ndigit[c-'0']造价于ndigit[5]

'0'的意思就是字符0,跟'a'
'#'的意思一样。可以用来将字符串形式存储的数字(如4251)一个一个转化成数字,原理就是字符'4''2''5''1'跟'0'在ASCII中的值得差就是4、5、2、1,再用一个变量number,number
=
character
-
'0'
+
10
*
number,就能用number存储四千五百二十一了。

在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
",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时期引入)



在c语言中,字符是按其所对应的ASCII码来存储的,一个字符占一个字节。第一个ASCII码,对是0,对应的字符是(Null),其实就是‘\0’,即空字符。可以通过如下ASCII码表来查询到。



#include<stdio.h>
main()
{
int c,i,nwhite,nother;
int ndigit[10];//ndigit[10]用来存放相应的各个数字的次数,ndigit[0]存放0的次数,,,ndight[9]存放9的次数
nwhite=nother=0;
for(i=0;i<10;++i)
ndigit[i]=0;
while((c=getchar())!=EOF)
 if(c==' '||c=='
'||c=='')//中间必须打空格,就像'a'一样,中间是什么就写什么,'
' ''  ' '
++nwhite'
 else if(c>='0'&&c<='9')
   ++ndigit[c-'0'];//这是ASCII码表示的,比如当检测到输入的数字是'0'时++ndigit[c-'0']即为++ndigit[0-0],当检测到输入的数字是'5'时++ndigit['5'-'0'=5]即为++ndigit[5]
      else 
++nother;
printf("digits=");
for(i=o;i<10;++i)
printf("%d",ndigit[i]);
printf(",white space=%d,other=%d
",nwhite,nother);//这里的逗号是输出时为了分隔各个数字用的,也可以用空格取代,像这样的问题,你可以去掉逗号输出比较就可以自己解决;
}

希望可以帮到你!




C语言 负号问题
只能是在程序里判断‘-’这个字符。你需要能够判断出‘-’是一个减号还是一个负号。比较简单的方法是,输入计算式时你规定好格式,负数一律用()括起来。这样比较容易判断是不是负数。当然你也可以定义其它的格式。如果不规定格式的话,判断方法稍微麻烦一点,你要判断‘-’前面是什么,如果是数字,那么...

c语言问题
“%c”是输出字符时必须使用的格式符。程序第6行输出两个整数97和98。可以看到:字符型数据和整型数据是通用的。它们既可以用字符形式输出(用%c),也可以用整数形式输出(用%d)。但是应注意字符数据只占一个字节,它只能存放0~255 范围内的整数。程序的第7和第8行是把将两个小写字母a和b转换成大...

c语言问题怎么做
c语言 C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程...

C语言问题编程问题?
include <stdio.h> int main(){ int i,j,n=-1;float scores[30],sum=0,temp;printf("请输入n的值(0~30):");while(n<0 || n>30) scanf("%d",&n);if(!n) return 0;for(i=0;i<n;scanf("%f",&scores[i]),sum+=scores[i],i++)printf("请输入学生%d分数:",i+1);p...

c语言问题
num[c-'A']+=1,这句是数组赋值,例如从键盘输入a,则c='A',c-'A'=0,就是num[0]=1;从键盘输入b,则c='B',c-'A'=1就是num[1]=1。该数组里每个元素值都赋为1.i+'A'会对应输出26个大写字母:i=0时,i+'A'='A'i=1时,i+'A'='B'。。。依此类推 。。。i=25时,...

C语言的问题,这道题怎么做啊?
这个题,就是选择答案D。图中,if(n\/2)其实就是等价于if(n\/2!=0),考虑到n是正数,它也就等价于if(n>1)总之,第一次调用,就满足条件,进行递归调用:fun(5)………具体见图所示(一个红框,就是一次函数调用):依输出的先后次序,总的输出就是:1010 ...

C语言问题,编写一个程序计算矩形的面积和周长
1.代码参考:(边长可以是整数也可以是小数;实现乘法的运算符是*)2.代码参考:

c语言问题。
p=&x[1][1]; 是“语句”,你的程序中它不是语句,是声明,要看成“声明和初始化”。即要看成: int *p=&x[1][1];意思是 声明 p 是int型指针,指向 下标变量 x[1][1] 的地址。&x[1][1] 是 x[1][1] 的地址,即2维数组 x 的 第2行第2列 的元素 9 8 7 \/\/第...

c语言的一些问题
1.%f中的f是单精度,其精确到小数后6位。 这个不仅在这里会是6位,你随便定义个f的类型,输出f的类型,一样精确到小数点后6位,所以这是最原始的输出(相比较你后面的输出)2.%8f 中的8是从右边数占8个字的宽度。我们知道f输出的值是123.456001。可以输出123.456001的宽度是10(包括小数点在...

求大佬解决C语言问题
题目要求用指针函数,既返回值为指针类型的函数。在主函数接收返回值并输出打印。从输入的学生中找出有不及格的学生,并输出其不及格的课目成绩。(在打印所有学生的同时就筛选出存在不及格的学生,可减少循环次数,本题只有3个学生,假设更多的话)。下面是代码:include <stdio.h> include <malloc.h> ...

仪征市17123941805: C语言问题 错误 noname.c 39: 符合指令缺少} 在main函数中 -
太禄喹泰: 你main函数少右括号 main() { int num[16]={20706.6,12962.37,4030,2913.73,6858.65,11400,1536,15807.25, 5246.81,7017.5,2389.38,4270,5708.5,17510.05,2703.8,19765.43}; int *p,sum; start=num,p=start,sum=0; printf("1.=%d",*start); getsum(sum,0,p); getche(); return 0; }

仪征市17123941805: 关于C语言的问题3
太禄喹泰:#include "stdio.h" #include "conio.h" #define Maxsize 50 typedef char ElemType ; typedef struct { ElemType data[Maxsize]; int length; }SqList; void CreateList(SqList *L,ElemType a[],int n) { int i; for (i=0;i<n;i++) L->data[i]=a[i]; L->length=n; } int ...

仪征市17123941805: C语言的问题,不会别乱抢答:编写一个程序逆顺序输出一个三位数的各位数字,输入时只能输入一个三位的整 -
太禄喹泰: #include <stdio.h>int main() {int num, i, j, k; printf("请输入一个3位数:");scanf("%d", &num);if (num > 999 || num < 100){printf("你输入的数字有误!\n");return -1;}i = num / 100;j = num / 10 % 10;k = num % 10;printf("3个数字为:%d %d %d\n", k, j, i); return 0; }

仪征市17123941805: c语言程序问题 -
太禄喹泰: 题目要求是有3个学生,4门课程,求4门课程的平均分 你的程序问题出在:1、scanf("%d\0",&a[b][c]); 格式控制符一般除了逗号,空格外不能加其他符号,应改成 scanf("%d",&a[b][c]);2、存放平均分的数组元素要初始化 在printf("每 科 ...

仪征市17123941805: c语言问题用循环将a[3][4]的第一行与第三行对调 -
太禄喹泰: #include<stdio.h> void main() {int a[3][4]={{1,1,1,1},{2,2,2,2},{3,3,3,3}};int temp,i,j;for(i=0;i<4;i++){temp=a[0][i];a[0][i]=a[2][i];a[2][i]=temp;}for(i=0;i<3;i++){for(j=0;j<4;j++){printf("%3d",a[i][j]);}putchar('\n');} } 直接屏幕输出结果了.....

仪征市17123941805: C语言入门题目运行出现问题 -
太禄喹泰: #include #include #include #include int main(void){ char buffer[10000]; char text[5...

仪征市17123941805: 一个C语言编程的问题 -
太禄喹泰: 1、有三个问题(1)、使用了sqrt()函数,所以应该包含math.h头文件(2)、and使用错误,表示“与”关系应该用1000 0)(3)、if下面应该加花括号,即if (a<1000 && a...

仪征市17123941805: C语言问题,见图. -
太禄喹泰: #include int main(void) { int ch; printf("Enter phome number: "); while ((ch = getchar(n') { switc...

仪征市17123941805: C语言的三种循环问题 -
太禄喹泰: for循环和while循环是“当型”循环,意思是当满足循环条件时才执行循环体!否则不执行循环体!而do while循环是“直到型”循环.即先执行一次循环体,然后再判断此时循环条件是否满足,若满足则执行之,否则不执行! 并且for循环的功能是最强大的,凡是用while,do while 循环能解决的问题用for循环都能解决!

仪征市17123941805: c语言问题编写密码程序,利用循环要求对用户每次输入的大写或小写字母,均变成其后的第三个字母,并输出.直到输入字符'0'结束.
太禄喹泰: #include<stdio.h> void main() { char c; while((c=getch())!='0') { if('a'<=c && c<='z') c=(c-'a'+3)%26+'a'; else if('A'<=c && c<='Z') c=(c-'A'+3)%26+'A'; putch(c); } }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网