亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

編譯計算器,不知道為什么運行時總是出錯?

編譯計算器,不知道為什么運行時總是出錯?

C
mrs_empress 2016-10-06 12:16:38
本人初學,想用c語言大體編一個計算器,現目前編譯如下,機器顯示編譯沒有問題,但運行結果并未按照順序來,總是出現48.000000,49.000000,想問一下哪里出錯了?是哪里邏輯有問題還是?#include?<stdio.h> #include?<ctype.h> int?main() { ????int?c,flag; ????float?a,b,result; ????printf("歡迎來到小黃雞會計算的世界\n"); ????printf("小黃雞最近學會了加減乘除,你可以來考考它\n"); ????printf("請輸入第一個數字\n"); ????a=getchar(); ????printf("%f\n",a); ????printf("請輸入第二個數字\n"); ????b=getchar(); ????printf("%f\n",b); ????printf("請選擇你所需要的運算,如你要進行加法運算,請輸入1;減法運算,請輸入2;乘法運算,請輸入3;除法運算,請輸入4.\n"); ????flag=getchar(); ????switch(flag){ ????????case?1:?printf("結果是%f\n",result=a+b); ????????case?2:?printf("結果是%f\n",result=a-b); ????????case?3:?printf("結果是%f\n",result=a*b); ????????case?4:?printf("結果是%f\n",result=a/b); ????????default:; ????} ????printf("小黃雞很機智吧!\n"); ????return?0; }
查看完整描述

3 回答

已采納
?
慕斯8597481

TA貢獻1條經驗 獲得超3個贊

把getchar換成scanf,也就是scanf("%f",&a);和scanf("%f",&b);以及scanf("%d",&flag);

查看完整回答
3 反對 回復 2016-10-06
  • mrs_empress
    mrs_empress
    我改成這樣了,可是不管輸入什么都顯示為1.000000,為什么呢? #include <stdio.h> #include <ctype.h> int main() { int c,flag; float a,b,result; printf("歡迎來到小黃雞會計算的世界\n"); printf("小黃雞最近學會了加減乘除,你可以來考考它\n"); printf("請依次輸入第一、二個數字,和你所需要的運算符號(且我們規定加減乘除依次為1、2、3、4)\n"); a=scanf("%f",&a); printf("%f\n",a); b=scanf("%f",&b); printf("%f\n",b); flag=scanf("%f",&flag); switch(flag){ case 1: printf("結果是%f\n",result=a+b); case 2: printf("結果是%f\n",result=a-b); case 3: printf("結果是%f\n",result=a*b); case 4: printf("結果是%f\n",result=a/b); default:; } printf("小黃雞很機智吧!\n"); return 0; }
  • 慕斯8597481
    慕斯8597481
    是scanf("%f",&b);而不是a=scanf("%f",&b);(這是你錯的原因)還有,你的flag是int類型的,所以用scanf("%d",&flag);就可以了(雖然這個其實沒影響,我就隨口說說)
  • mrs_empress
    mrs_empress
    能在幫我看一下嗎?我把代碼和運行效果圖發到回復里了,謝謝
?
mrs_empress

TA貢獻11條經驗 獲得超2個贊

include?<stdio.h>?
#include?<ctype.h>?
int?main()
{?
	int?c,flag;
	float?a,b,result;
	printf("歡迎來到小黃雞會計算的世界\n");
????printf("小黃雞最近學會了加減乘除,你可以來考考它\n");?
	printf("請依次輸入第一、二個數字,和你所需要的運算符號(且我們規定加減乘除依次為1、2、3、4)\n");?
	scanf("%f",&a);?
	printf("%f\n",a);?
	scanf("%f",&b);?
	printf("%f\n",b);?
	scanf("%d",&flag);?
	switch(flag){?
		case?1:?printf("結果是%f\n",result=a+b);break;?
		case?2:?printf("結果是%f\n",result=a-b);break;?
		case?3:?printf("結果是%f\n",result=a*b);break;?
		case?4:?printf("結果是%f\n",result=a/b);break;?
		default:;?
	}?
	printf("小黃雞很機智吧!\n");?
	return?0;?
}

http://img1.sycdn.imooc.com//57f65a65000164f306710431.jpg

已經改成這樣了,為什么還不行?

查看完整回答
反對 回復 2016-10-06
?
慕斯卡3531659

TA貢獻3條經驗 獲得超0個贊

有 ?兩個問題 getchar 你每次輸入一個數據 ?你還要輸入 一個 ?回車符號 ?回車符號 會被接受

? ? a=getchar();

? ? getchar();//添加這個就好

你 ?getchar ?獲得的是 ?數值的ascii ?碼值 ?0 對應的asc是 ?48 ?so ?要用getchar的話 ?你應該 ?每個獲取的值 剪掉48 ?依舊很麻煩 ?因為 ?getchar 似乎只能接受一個字符



查看完整回答
反對 回復 2016-10-06
  • 3 回答
  • 0 關注
  • 1697 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號