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


推薦閱讀:
相关文章