一段C程式請高人

  • 作者:由 匿名使用者 發表于 歷史
  • 2022-09-15

一段C程式請高人風之玲2014.02.28 回答

分析了下,如果輸入2473, 得到的應該是66877。 不知道你的668977怎麼得到的。

還有case X後面跟的是冒號,不是分號。

分析如下:

1。 c=getchar(): c是int型別, getchar()輸入的是一個字元,但賦給的是c的此字元的ASCII碼。

2。 switch(c-‘2’): ‘2’是字元型別,它們相減有個隱式轉換, ‘2’被轉換成ASCII碼了,它們兩個是ASCII之間的相減。但可以簡單理解成, 兩個數字之間差多少位,因為數字的ASCII是連續的。

3。 break: switch中case後面跟的break是指跳出swith語句,不斷續往下執行了。這個關鍵,你要問的也是這個。 你看下面的執行步驟就明白了。

3。1 輸入2

3。2 2-2得到的是:0

3。3 執行的是:

case 0 :;

case 1 :;putchar(c+4);

case 2 :;putchar(c+4);break;

3。4 顯示:66

3。5 輸入4

3。6 4-2得到的是:2

3。7 執行的是:

case 2 :;putchar(c+4);break;

3。8 顯示:8

3。9 輸入7

3。10 7-2得到的是:5

3。11 沒有執行語句。

3。12 不顯示

3。13 輸入3

3。14 3-2得到的是:1

3。15 執行語句:

case 1 :;putchar(c+4);

case 2 :;putchar(c+4);break;

3。16 顯示:77

你好好看上面的分析吧。

難得寫這麼多,哈哈~

Top