求助c語言計算器刑序為何跳過執行?求高手

2021-05-26 22:22:54 字數 1971 閱讀 5832

1樓:匿名使用者

假設你要輸入3+5,0在你輸入3a5之後,再按回車作為結束,q=getchar();不是沒執行,是執行了把 回車符 賦給了 "q",所以就會判斷失敗。

我按你的思想對void funj()進行了修改

void funj()

case 'x':exit(0);

default :printf("error!輸入有誤!!!\n");

}printf("繼續嗎?y繼續,n退出!!!\n");

p = getchar();

q = getchar();

m = getchar();

//為何不執行這一行?即執行以下語句!

putchar(q);

switch(q)

case 'n':exit(0);break;

default :printf("2error!輸入有誤!!!\n");}}

多定義了兩個字元,用來存放3a5輸入時的回車,和輸入q時候的回車,這樣,程式就對了。已經除錯過了,可用。

2樓:匿名使用者

樓主,先說你的問題:

執行printf("繼續嗎?y繼續,n退出!!!\n");,後程式還會輸出個換行字元(\n),正好把這個字元賦給了變數q,q列印出來時看不到的,

你可以把程式這樣該下:

printf("繼續嗎?y繼續,n退出!!!\n");

q=getchar();

while(q=='\n')

q=getchar();

我試了這樣ok了, 輸入y後也會報錯,這個也是同樣的問題。

3樓:ゞo鈊汰乿

#include

#include

#include

void funj();

void funm();

void main()

void funj()

case 'x':exit(0);

default :printf("error!輸入有誤!!!\n");

}printf("繼續嗎?y繼續,n退出!!!\n");

q=getchar();//為何不執行這一行?即執行以下語句!

//putchar(q); //先注了這一行

printf("%d\n",q); //我們用printf列印q的ascii碼值

同時列印'\n'和'\r'的assii碼值

switch(q)

case 'n':exit(0);break;

default :printf("2error!輸入有誤!!!\n");}}

void funm()

case 'k':

case 'x':exit(0);break;

default :printf("************************\nerror!輸入有誤!!!\n請重新輸入\n");}}

while(le!='j'||le!='k'||le!='x');

}注意看上面我修改的部分,注掉了一行,加了兩個列印。

有沒有發現q的值與'\r','\n'其中之一相等,所以很容易明白getchar(q)在我們輸入3a5按回車時已經把回車即'\r','\n'之一讀進去了,而回車用putchar列印是看不見的,所以問題已經解決

另外linux下回車只是'\n',windows下是'\r'和'\n'的組合,我現在手頭只有linux,沒法驗證windows下q究竟讀入了哪個值,所以讓你都列印出來做比較。

4樓:七級狗

while(le!='j'||le!='k'||le!='x');

應該改為

5樓:言語小詩

main的大括號,,,暈

求java做的刑序交作業用最好是個計算器這種

package util2.calculator import java.awt.borderlayout import java.awt.flowlayout import java.awt.font import java.awt.gridlayout import java.awt.event...

題目18 用C語言設計簡單的計算器,要求能夠對輸入的數

include include include int deal int op1,int op2,char op 運算 return op1 char replace char source,char sub,char rep 字串替換 else pc1 source source pc1 null...

我用VC環境編了個計算器程式 用的是C語言 ,我想要更換可執

的來方法,可以改這個可執行檔案的圖自 標,2 的方法可以改執行後主視窗左上角的圖示跟工作列的圖示.總起來就是 在資源 resource 視窗下,有一個icon資料夾,idr mainframe就是應用程式的圖示,請根據需要選擇格式一般是標準 32 32 然後把你需要的圖示拷進去,也可以自己手工描繪,...