簡易計(jì)算器的實(shí)現(xiàn)

小項(xiàng)目1 ---C 語言做一個(gè)簡單的計(jì)算器


bk_3d33e46410a73b90105787f79ffae2a7_l6p323.jpg

1,項(xiàng)目說明:

實(shí)現(xiàn)一個(gè)簡易的僅支持兩個(gè)操作數(shù)運(yùn)算的計(jì)算器,不涉及詞法分析與語法樹蠢莺,內(nèi)容很簡單,適合 C 語言入門(剛掌握語法程度)的進(jìn)行練手。

2,項(xiàng)目介紹

能執(zhí)行加芯侥、減、乘乳讥、除操作柱查。本程序涉及的所有數(shù)學(xué)知識(shí)都很簡單,但輸入過程會(huì)增加復(fù)雜性云石。因?yàn)槲覀冃枰獧z查輸入唉工,確保用戶沒有要求計(jì)算機(jī)完成不可能的任務(wù)。還必須允許用戶一次輸入一個(gè)計(jì)算式汹忠,例如: 32.4 + 32 或者 9 * 3.2

2.1,項(xiàng)目流程:
1.獲取用戶輸入的計(jì)算表達(dá)式淋硝。
2.檢查輸入的表達(dá)式格式,確保表達(dá)式對(duì)應(yīng)的實(shí)際操作可以執(zhí)行宽菜。
3.執(zhí)行計(jì)算谣膳。
4.返回計(jì)算結(jié)果并在終端打印。
2.2,項(xiàng)目效果圖:

![S6Q]OY{HLV``7YHC41(CZMK.jpg](http://upload-images.jianshu.io/upload_images/2619158-238b2ea80960b82f.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

3,項(xiàng)目實(shí)現(xiàn)

3.1獲取輸入
     double number1=0.0; // 定義第一個(gè)操作數(shù) 
     double number2=0.0; // 定義第二個(gè)操作數(shù) 
     char operation=0; // operation 必須是 '+' '-' '*' '/' 或 '%' 
     printf("\nEnter the calculation\n"); 
     scanf("%lf%c%lf",&number1,&operation,&number2);```
##### ????3.2輸入檢查
     當(dāng)輸入的操作為 / 或者 % 時(shí)铅乡,第二個(gè)操作數(shù)不能為 0 继谚。如果為 0 則操作無效。
##### ????3.3循環(huán)輸入,用戶選擇y/n是夠繼續(xù)
for(;;){
    switch(){
  ……

}
char answer = getchar();//從鍵盤中輸入一個(gè)字符
if(answer == 'y' || answer == 'Y'){
printf("\nEnter the calculation\n");
scanf("%lf %c %lf", &number1, &operation, &number2);
}
if(answer == 'n' || answer == 'N'){
break; /* Go back to the beginning */
}
}

#### 4,項(xiàng)目源碼

/*Exercise 3.4 A calculator that allows multiple calculations */

include <stdio.h>

int main()
{
double number1 = 0.0; /* First operand value a decimal number /
double number2 = 0.0; /
Second operand value a decimal number /
char operation = 0;
char answer ;/
Operation - must be +, -, *, /, or % */
printf("\nEnter the calculation\n");
scanf("%lf %c %lf", &number1, &operation, &number2);
for(;;){

switch(operation)
{
case '+': // No checks necessary for add
printf("= %lf\n", number1 + number2);
break;

case '-':                     // No checks necessary for subtract
  printf("= %lf\n", number1 - number2);
  break;

case '*':                     // No checks necessary for multiply
  printf("= %lf\n", number1 * number2);
  break;                              

case '/':
  if(number2 == 0)           // Check second operand for zero 
    printf("\n\n\aDivision by zero error!\n");
  else
    printf("= %lf\n", number1 / number2);
  break;

case '%':                    // Check second operand for zero
  if((long)number2 == 0) 
     printf("\n\n\aDivision by zero error!\n");
  else
    printf("= %ld\n", (long)number1 % (long)number2);
  break;

default:                     // Operation is invalid if we get to here
  printf("\n\n\aIllegal operation!\n");
  break;

}

/* The following statements added to prompt for continuing */

printf("\n Do you want to do another calculation? (y or n): ");
scanf(" %c", &answer);

if(answer == 'y' || answer == 'Y'){
printf("\nEnter the calculation\n");
scanf("%lf %c %lf", &number1, &operation, &number2); /* Go back to the beginning /
}
if(answer == 'n' || answer == 'N'){
break; /
Go back to the beginning */
}
}
return 0;
}

#### 5,項(xiàng)目提升
    能支持任意多個(gè)操作數(shù)的運(yùn)算阵幸,引入運(yùn)算符優(yōu)先關(guān)系機(jī)制犬庇,屆時(shí)更新

######[友情鏈接](https://github.com/apress/beg-c-5th-edition)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末僧界,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子臭挽,更是在濱河造成了極大的恐慌捂襟,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件欢峰,死亡現(xiàn)場離奇詭異葬荷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)纽帖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門宠漩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人懊直,你說我怎么就攤上這事扒吁。” “怎么了室囊?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵雕崩,是天一觀的道長。 經(jīng)常有香客問我融撞,道長盼铁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任尝偎,我火速辦了婚禮饶火,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘致扯。我一直安慰自己肤寝,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布抖僵。 她就那樣靜靜地躺著醒陆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪裆针。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天寺晌,我揣著相機(jī)與錄音世吨,去河邊找鬼。 笑死呻征,一個(gè)胖子當(dāng)著我的面吹牛耘婚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播陆赋,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼沐祷,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼嚷闭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赖临,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤胞锰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后兢榨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗅榕,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年吵聪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凌那。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吟逝,死狀恐怖帽蝶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情块攒,我是刑警寧澤励稳,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站局蚀,受9級(jí)特大地震影響麦锯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜琅绅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一扶欣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧千扶,春花似錦料祠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至妆绞,卻和暖如春顺呕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背括饶。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工株茶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人图焰。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓启盛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子僵闯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,167評(píng)論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理卧抗,服務(wù)發(fā)現(xiàn),斷路器鳖粟,智...
    卡卡羅2017閱讀 134,662評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法社裆,類相關(guān)的語法,內(nèi)部類的語法牺弹,繼承相關(guān)的語法浦马,異常的語法,線程的語...
    子非魚_t_閱讀 31,639評(píng)論 18 399
  • 這些都表明张漂,SONY 將在 E3 大會(huì)上前面展開 PlayStation VR 的營銷攻勢(shì)晶默,這意味著 PlaySt...
    04b9cd76cdec閱讀 338評(píng)論 0 0
  • 一杯清茗散掉大霧,指尖殘留的溫度航攒。 十八歲那年以為未來還很遠(yuǎn)磺陡,走進(jìn)大學(xué)才發(fā)現(xiàn)都是轉(zhuǎn)眼漠畜。 時(shí)間像是突然加快了腳步币他,我...
    曉茗閱讀 148評(píng)論 0 0