3 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
按F10跳轉(zhuǎn)到scanf輸入函數(shù)斷點(diǎn),進(jìn)而按F11就如scanf函數(shù)。印象中是在一個(gè).c文件里執(zhí)行的中斷處理標(biāo)準(zhǔn)輸入輸出的過程,你可以按Alt+8看到其反匯編,其實(shí)是一些機(jī)器指令發(fā)送控制讓CPU進(jìn)行執(zhí)行的,具體匯編語言我是不太懂的??茨莻€(gè)也比較繁瑣,目前也不再流行去使用匯編語言,如果你感興趣的話,可以去了解C語言的編譯過程,編譯原理,這就相對更深了。
回到這個(gè)問題,接收過程講的差不多了。用戶輸入一個(gè)數(shù),它應(yīng)該說是被立即送到一個(gè)緩沖區(qū)去了。而不是立即接收,變量就獲得了值。這是C語言scanf函數(shù)的功能設(shè)定。它需要接收一個(gè)標(biāo)志一個(gè)數(shù)據(jù)輸入完成,可以是空格,可以是回車,或者你給定了的格式,用逗號(hào)或者其他,那么就取出了一個(gè)數(shù)據(jù)。結(jié)束一個(gè)數(shù)據(jù)的輸入??偟膕canf函數(shù)執(zhí)行過程,是一個(gè)系統(tǒng)緩存入棧出棧的過程。
scanf輸入是否正確,是按其格式來判斷的,百科名片上有些解析,比如
scanf("%d%d",&a,&b);
如果兩個(gè)數(shù)輸入的都不是整形,那么就是0
while(scanf("%d",&a)!=EOF)這是一種判斷輸入是否正確的方式

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
當(dāng)程序中出現(xiàn)scanf這條語句的時(shí)候,系統(tǒng)會(huì)停留在這等待用戶輸入。怎樣接收要看你是怎樣的輸入格式比如scanf(“%d %d”),輸入一個(gè)字符按 一次空格,如果中間強(qiáng)制用逗號(hào)格開的話,輸入的時(shí)候就要用逗號(hào)了。當(dāng)輸入完成時(shí)候,按回車即輸入完畢,數(shù)據(jù)儲(chǔ)存在變量里。
如果要判斷用戶是否輸入正確,在scanf語句下面加上判斷語句就可以了if else,如果需要用戶重新輸入的話,就需要一個(gè)循環(huán)語句while

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
加一個(gè)頭文件#include<string>
然后直接string year;后面的就是string name; string grades;什么的,
然后還是用cin接收就行了啊
接收完了你用一個(gè)函數(shù)去判斷是不是數(shù)字或者字母
- 3 回答
- 0 關(guān)注
- 452 瀏覽
添加回答
舉報(bào)