C語言菜鳥問題(13)
若下述程序執行時按如下方式輸入數據:
a回車b回車cdef回車
則該程序運行結果是( )
#include <stdio.h>
main()
{ int k;
char c;
for(k=0;k<=5;k++)
{ c=getchar()
putchar(c) }
}
幫偶講講輸入這些值的時候 分別把值分給誰了 咋分的 還有putchar(c)在程序中有什麼意義
最佳回答:
你你你……
運行結果:
a回車
a
b回車;
b
cdef回車
c
解釋:
getchar() 是輸入一個字符;
putchar() 輸出一個字符; 比如putchar(c) 就是輸出c,可是c是個變量,即輸出c的變量的值……
再說那個循環,k=0開始知道k=5,一共六次。
回車意思是結束輸入
(它也是作為一個字符存入緩存的,假如多個相同輸入函數一起並列使用的時候,它們是從緩存中調用的,假如回車恰巧排在順序中,就會調用,比如:
scanf(“%c”,&a);
scanf(“%c”,&b);
這個時候你要是輸入: a回車b回車,那麼a被賦值a,可是b被賦值為回車符,即空,打印不出東西。
)
那麼,繼續上面的解釋,你輸入a回車,這個時候c被賦值a,然後putchar(c) 在屏幕上打印出c的值a;
可是回車也被存在緩存中,這個時候循環繼續k++,k=1了,也就是第二次循環了,getchar調用緩存中的回車符,然後打印出回車符,即什麼都不打印(不是空格,而是換行!!等效於putchar('\n');)
繼續,換行後進入k=2第三次循環了,同上,輸出了b,回車符到緩存。
k=3,getchar調用緩存中回車符,打印putchar('\n')
k=4,第五次循環了,你輸入cdef 回車,這個時候getchar只能錄入字符,從而錄入c賦值給變量c。
你可能會問,那麼第六次循環是不是應該輸出d呢?
錯!! 回車號是結束標志也是字符,那麼當你輸入cdef的時候回車,意味著這次個getchar這個函數的輸入結束了,getchar從裡面選c這個第一個字符,而字符串cdef未被選中的def字符串則被丟棄。(有點繞吧~~~)
好,我們繼續,k=5了,後一次循環了,getchar調用什麼東東呢??對了,就是緩存中剛才錄入的回車符!
打印putchar('\n') 即換行後循環結束了。
累死我了………………