這個問題很常見,正是因為使用了getchar()函數(shù),getchar()函數(shù)只會從標準輸入緩沖區(qū)中讀取一個字節(jié),剩下的還留在緩沖區(qū),比如你輸入"a",那么getchar()函數(shù)值讀取'a',而不會處理你按下的回車,也就是'\n'還留在標準輸入緩沖區(qū),那么,等第二次調(diào)用getchar()的時候,由于緩沖區(qū)里還有1個字節(jié)的'\n'未使用,故getchar()會使用字符'\n'而不會阻塞等待輸入
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了屏山免費建站歡迎大家使用!
建議在第二個getchar()前加上一句:
fflush(stdin);
從貼出來的代碼看起來沒什么問題。估計是在調(diào)用Creat函數(shù)之前輸入緩沖區(qū)沒有清空。在你每次調(diào)用scanf之后調(diào)用一次以下函數(shù)來清空輸入緩沖區(qū)(fflush(stdin)沒用):
void ClearInputBuffer()
{
int c;
while((c=getchar())!='\n');
return;
}
如果調(diào)用函數(shù)寫在主函數(shù)之后。那就要主函數(shù)聲明了。
你在mian()上一行加一句:float flactional();
因為我們在輸入第一組的2個數(shù)時會輸入“回車”,這個回車會被你第二個“scanf”函數(shù)捕獲,你只要在第二個“scanf”語句前加一句“getchar();”就行了,代碼如下:
#include "stdio.h"
int main(){
int a,b;
char Operator;
printf("please input two number:");
scanf("%d %d",a,b);
printf("please input Operater(+ or -):");
getchar();
scanf("%c",Operator);
switch(Operator)
{
case '+':
printf("%d+%d=%d\n",a,b,a+b);break;
case '-':
printf("%d-%d=%d\n",a,b,a-b);break;
default :
printf("Input error\n");
}
return 0;
}
網(wǎng)頁標題:C語言調(diào)用函數(shù)時被跳過,c語言中被調(diào)函數(shù)調(diào)用結(jié)束后,返回到
文章URL:http://chinadenli.net/article48/hecohp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、網(wǎng)站改版、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)