初学c语言,大佬能讲解一下第12题吗?
分析:a的ascii值为97, 『8』的ascii值为56,『3』的ascii值为51
所以 ch =97 +56 -51
ch = 102
补充 2020.11.4, 如果以%c 格式输出,则结果为 g
刚有网友指出错误,的确当时没注意已做修改也感谢那位知友。
在C语言中,字元是可以直接和数字一起做算术运算的,运算前,编译器会把字元转换成其对应的ASCII码。这是ASCII码的对照表
ASCII_百度百科?baike.baidu.com反之,也可以将数字赋值给 char 类型的变数,其实就是把 ASCII 码对照表中这个数字对应的字元赋值给了 char 类型的变数。
看下面这个例子你就明白了:
int n = a + 1;
printf("%d", n); //这一行输出结果是98,因为字母a对应的ASCII码是97,97加1就是98
char ch = 98;
printf("%c", ch); //这一行输出结果是b,因为字母b对应的ASCII码是98,把98赋值给ch相当于把b赋值给ch我们来看一下12题的代码:
char ch;
ch = a + 8 - 3;查阅ASCII码对照表我们可以知道字元a的ASCII码是97, 字元8的ASCII码是56,字元3的ASCII码是51,所以 a+8-3 相当于 97+56-51,结果是102。然后我们再查一下哪个字元的ASCII码是102,就可以知道ch的值是多少了。答案是f。
到电脑上去自己运行一下吧
这里考的知识点是ASCII码表的一些基本知识。ASCII码表里,所有大写字母(A~Z)是连著的,A的ASCII是0x41,所有小写字母(a~z)也是连著的,a的ASCII码是0x61,所有数字的ASCII码也是连著的,0的ASCII码是0x30,这些最好记住。当然,这里这个题只需要知道26个小写字母以及10个数字的ASCII码是连著的就行了,8 - 3一定是5,所以a + 5就是a往后再数5个,也就是f。
学编程,最好的办法就是上手敲代码!
咱们直接运行一遍就知道结果了。
编译一下,运行。
结果很明显,是 f
问题来了,为什么?
解答:因为 a的ASCII码是97,8的ASCII码是56,3的ASCII码是51。
所以 ch = 97 + 56 - 51结果是102,而102则对应了f
那么这道题就是102或者 f。
推荐阅读: