#include<stdio.h>
int main(){
int a,b;
int c;
char q;
printf("請輸入兩個數字:");
scanf("%d %d ",&a,&b);
printf("請輸入運算子:");
scanf("%c",&q);
if(q=='+') c=a+b ;
if(q=='-') c=a-b ;
if(q=='*') c=a*b ;
if(q=='/'&&b!=0) c=a/b;
printf("結果為:%d",c);
}我在輸出的時候輸出完第一句話和輸入我要輸入的兩個數字之后,我只有在輸出了一個符號之后,它才會輸出第二句話,并且第二句話那個地方無法輸入符號并且無法運算。
這是為什么?求大神解答。








uj5u.com熱心網友回復:
你輸入兩個字符然后回車應該會顯示第二句話然后你再輸入運算子uj5u.com熱心網友回復:
我就是在回車之后它不會出現第二句話,然后我只有在回車之后加一個運算子再按回車,他才會輸出下一句話,并且他不會運算而是直接輸出最后一個printfuj5u.com熱心網友回復:
你輸入的兩個數字有空格分隔嗎uj5u.com熱心網友回復:
當然會有啊。uj5u.com熱心網友回復:
那你試試看scanf("%d %d! ",&a,&b);把后面的空格去掉看看
uj5u.com熱心網友回復:
好的,謝謝
uj5u.com熱心網友回復:
很簡單,樓主怕是忘了回車鍵也是會產生一個字符(\n)。推薦兩種解決問題的辦法:第一,把字符輸入放前面;第二,在輸入數字后加一個清空快取區fflush(stdin)。
uj5u.com熱心網友回復:
說實話,我就一大一新生,你說的我聽不懂
uj5u.com熱心網友回復:
scanf雙引號里面兩個%d緊挨著,啥零碎兒也別加,應該會正常輸出的uj5u.com熱心網友回復:
在scanf后面加一個getchar()緩沖一個回車試試
uj5u.com熱心網友回復:
printf()函式把你輸入的內容放在輸出緩沖區中,當輸出緩沖區滿之后或者主動重繪緩沖區時才會把內容輸出到螢屏上。你在printf()中加入一個 \n ,使他每次輸出完立刻從緩沖區寫入到螢屏就行了。uj5u.com熱心網友回復:
你可以這樣想,在我們撰寫的程式中會經常用到printf()函式進行資料的輸出,而printf()函式要想把內容輸出,就要在該函式內部呼叫有關輸出的系統呼叫,就想你去商店買東西,早上去買包零食,中午去買包泡面,晚上又去買包餅干。那么這一來二去在路上浪費了不少時間,那么何不一次性全買回來呢。同樣的,在函式中呼叫系統呼叫時,從我們的用戶狀態切換到內核態也要產生消耗,為了避免這種無意義的消耗我們可以把輸出的內容存在一個名為輸出緩沖區的地方,當我們需要輸出時,一次性全部輸出,節省開銷。所以我們使用printf()函式時,一般都會寫成printf("xxxx \n") ,讓資料立刻從輸出緩沖區重繪到螢屏。或者使用fflush(stdout)進行強制重繪。 其中,stdout就是標準輸出。uj5u.com熱心網友回復:
懂了,懂了,謝謝大佬


uj5u.com熱心網友回復:
小伙子,你這個之所以出現這個現象,就是因為你的scanf里面那兩個d%后面跟了空格符,你把它們去掉,程式就正常了,跟別的沒關系,自己多動手上機試試
uj5u.com熱心網友回復:
那啥,叔,我只在第一個%d第一后面加空格了,第二個后面沒有加。
uj5u.com熱心網友回復:
輸入格式的問題吧轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/43008.html
標籤:基礎類
上一篇:photoshop cs5問題
