第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么我的代碼第一次運(yùn)行沒問題,第二次出毛?。?/h1>

為什么我的代碼第一次運(yùn)行沒問題,第二次出毛病?

C
qq_守夜人_11 2017-10-16 23:39:25
#include <stdio.h>int main(){??? char a,b,c;??? while(scanf("%c %c",&a,&b)!=EOF)??? {??????? printf("%c\n",(char)(a+b));??? }??? return 0;}輸入1 1 輸出“b”接著輸入2 2 應(yīng)該輸出“d”,但是輸出“RR”
查看完整描述

3 回答

?
onemoo

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊

我猜你在輸入完 1 1 后敲了別的鍵吧? 是空格嗎?

你試試連續(xù)輸入 1122,結(jié)果應(yīng)該就對(duì)了。


因?yàn)槟爿斎氲膬?nèi)容都在所謂的“輸入緩沖區(qū)”中,scanf 從緩沖區(qū)中匹配讀取。第一次循環(huán) scanf 匹配完兩個(gè)字符(1和1)后,你多按的那個(gè)鍵還留在緩沖區(qū)中。而剛好 %c 會(huì)匹配任何一個(gè)字符(包括控制字符)所以第二次 scanf 就把上次留下的那個(gè)字符匹配給了第一個(gè) %c 并存到了 a 中。當(dāng)然第二個(gè) %d 會(huì)正常匹配到你輸入的第一個(gè) 2,存入b中。

那么 a + b 肯定就不是字符 'd' 了。至于具體是什么取決于你在第一次輸入的 11 后按了什么鍵。

而這時(shí)緩沖區(qū)中還剩下一個(gè) 2,所以 scanf 繼續(xù)匹配...

你可以加上單獨(dú)輸出 a 和 b 值的語(yǔ)句來驗(yàn)證下:printf("a=%d? b=%d\n", a, b);


如果你就是想在每組輸入多敲個(gè)鍵(回車、空格什么的)的話,也有辦法解決。在 scanf 第一個(gè)參數(shù)格式化字符串的一開始放一個(gè)空格就好了:scanf(" %c %c",&a,&b)

這是因?yàn)?scanf 格式化字符串中的空白字符會(huì)匹配任何一個(gè)或多個(gè)輸入中的空白字符(所謂空白字符包括空格、換行、tab等)。所以上次輸入后剩下的那個(gè)按鍵會(huì)被格式化字符串一開頭的這個(gè)空格匹配掉,句不影響后面 %c 匹配正常字符了。

查看完整回答
反對(duì) 回復(fù) 2017-10-17
  • qq_守夜人_11
    qq_守夜人_11
    我的兩個(gè)%c中間有空格的,敲完1空格1后接著敲的回車
  • qq_守夜人_11
    qq_守夜人_11
    我想輸入1空格1然后回車,它自動(dòng)輸出b 然后我繼續(xù)輸入2空格2回車,他自動(dòng)輸出d 這個(gè)該怎么實(shí)現(xiàn)?
  • onemoo
    onemoo
    是的,正是因?yàn)槟阍趦山M輸入之間還按了別的鍵,所以第二次scanf執(zhí)行時(shí),第一個(gè)%c匹配到了這個(gè)額外的輸入。 其實(shí)你輸入每組中的兩個(gè)數(shù)時(shí)不必須用空格間隔開,比如你連續(xù)輸入1122都可以的。
點(diǎn)擊展開后面2
?
qq_虛偽的宋痞子_0

TA貢獻(xiàn)7條經(jīng)驗(yàn) 獲得超0個(gè)贊

此1非彼1,此2非彼2

查看完整回答
反對(duì) 回復(fù) 2017-10-17
  • 3 回答
  • 0 關(guān)注
  • 2765 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)