1樓:寒寒家
首先明確
1. 對於%d的輸入,會忽略之前的空格
2. 對於%c的輸入則不會忽略。
3. 對於%d的輸入,會被字元截斷,這也就是 輸入"10a20b"的時候,也不會錯的原因了。
正確答案是a
x1接收了10, y1接收了字元a,之後是一個空格,而輸入的是%d,所以會忽略空格,所以x2接收了20,y2接收了字元b
分下下其它的選項
b, x1 接收了10, y1接收了空格,錯誤c 錯誤同b
d x1接收了10, y1接收了a,x2接收了20,y1接收了空格。
2樓:
scanf從緩衝區讀取的時候不是依據空格的,讀整數就取一個整數,讀字元就取一個字元
所以是a,比如c,讀取整數10之後讀到空格,會將空格當做字元放到y1中
最好的辦法就是寫程式跑一下,下面是程式和結果#include
#include
#include
#include
#include
using namespace std;
int main()
關於C語言的scanf問題
鍵盤的輸入是先讀入到快取,然後scanf再從快取中將資料讀出來按照格式賦值給相應的變數。一次的輸入如果沒有被讀完,下次可以繼續使用,也可以呼叫fflush stdin 函式將快取內容清空。因此,你可以一次輸入很多,也可以只輸入乙個 執行後在輸入給第二個 那要看scanf的格式如何了,比如第乙個sca...
c語言scanf的疑問,C語言scanf的疑問
你換了while語句中的scanf位置後,那麼while語句前的scanf得到的x值就永遠都不會參與到while語句中的 t x 這樣你輸入的第乙個數字x都是無效的!補充的第一問 c.它前面最近的未配對的if 第二問 以偶數為例,a為偶數時,a 2為0,你的要求是此時以下表示式為假。a.a 2 1 ...
c語言中,格式化輸出函式printf()問題?期待高手回答,先謝謝了
printf函式是格式控制輸出函式,也就是在它後面的一對 內前半部分是一對雙引號的部分,如果雙引號裡面有類似於 d 或者 f之類的東西,才可以輸出雙引號後面的變數a,而你這個輸出裡沒有格式控制的東西。x03是十六進製制的乙個字元,具體是哪個字元你可以去查閱ascii碼表,一般我們可以用一般字元表示形...