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