分析: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。


推荐阅读:
相关文章