C語言實現(xiàn)計算器功能21_第1頁
C語言實現(xiàn)計算器功能21_第2頁
C語言實現(xiàn)計算器功能21_第3頁
C語言實現(xiàn)計算器功能21_第4頁
C語言實現(xiàn)計算器功能21_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

實驗一多功能計算器

一、問題描述

設(shè)計一個多功能計算器,可以完成基本的計算。

設(shè)計要求:

1.具備整型數(shù)據(jù)、浮點型數(shù)據(jù)的算術(shù)(加、減、乘、除)運算功能。依次輸入第一個運

算數(shù)、運算符(+,*,/)、第二個運算數(shù),然后輸田結(jié)果。結(jié)果可以作為下一個運算的

第一運算數(shù)。按'C‘清屏,按'R'返回菜單。

例如:輸入:2

+

5

輸出:7

2.實現(xiàn)單運算符表達(dá)式計算的功能。輸入的操作數(shù)可以包含整數(shù)或浮點數(shù)。輸入表達(dá)式

如下:

例如:輸入:2+5

輸出:7

二、算法說明

1.數(shù)據(jù)結(jié)構(gòu)說明(可以圖示說明,也可以文字說明)

本程序主要根據(jù)選擇菜單編寫了六個自定義函數(shù),用于在main。函數(shù)中調(diào)用,在main。

中,用一個字符變量numl來記錄下菜單選項的標(biāo)號,根據(jù)numl的值來決定調(diào)用哪個函數(shù)。

程序要完成的功能及所要用到的函數(shù)如下:

使用各菜單分別調(diào)用的函數(shù)

■suanshuyunsuan()

---->suanshuyunsuan2()

panduanO

---->biaodashiyunsuan()

----->qingpingO

----->fanhuicaidan()

卜面是整個程序的流程圖:

2.算法說明(即函數(shù)說明)

voidsuanshuyunsuanO〃做算術(shù)運算時調(diào)用的函數(shù)

voidsuanshuyunsuan2()//選擇繼續(xù)做算術(shù)運算調(diào)用的函數(shù),將上次運算的結(jié)果做為下次算

術(shù)運算的第一個操作數(shù)〃判斷算術(shù)運算是否繼續(xù)

voidpanduan()〃判斷算術(shù)運算是否繼續(xù)

voidbiaodashiyunsuan()〃單運算符表達(dá)式實現(xiàn)函數(shù)

voidqingpingO〃清除屏幕

voidfanhuicaidan()//顯示菜單

三、測試結(jié)果(這部分需文字與圖示結(jié)合)

1.第一組測試用例

(1)測試輸入:

\學(xué)習(xí)語言程序設(shè)計實習(xí)'實蹌一,Debug\C語言實驗一.exJ]□jX

菜單

a.算術(shù)運算

b.表達(dá)式運算

c.清屏重做

r.返回菜單

t.退出程序

pleasechoseoneletterfrom"a,b,c,r,andt

a

輸入:2

+

5

測試目的:測試算術(shù)運算的功能

結(jié)果輸出:

(2)再一次輸入:1

測試目的:測試算術(shù)運算是否能繼續(xù)

結(jié)果輸出:

pleasechoseoneletterfrom“a,b,c,r,andt"

a

輸入:2

+

著果”

7.000000

是否結(jié)束運算?

。.是1.否

請選擇?;?>:1

7.000000

2

結(jié)果”

14.000000

是否結(jié)束運算?

。.是1.否

請選擇Q或1>:

(3)這時輸入:0

測試目的:退出算術(shù)運算

結(jié)果輸出:

pleasechoseoneletterfrom“a,b,c,r,andt"

a

輸入:2

+

*果”

7.000000

是否結(jié)束運算?

0.是1.否

請選擇?;?>:。

pleasechoseoneletterfrom“a,b,c,r,andt

2.第二組測試用例

測試輸入:

pleasechoseoneletterfrom"a,b,c,r,andt

b

輸入:3+5

測試目的:測試單運算符表達(dá)式函數(shù)

結(jié)果輸出:

plQmsQchoseoneletterfrom"a,b,c,r,andt

b

輸入:3+5

結(jié)果”8

pleasechoseoneletterfrom“a,b,c,r,andt

3.第三組測試用例

測試輸入:c

H"F、學(xué)習(xí)\C語言程序設(shè)計實習(xí),實蛉一,Debu八C語言實蹌一.exe?|口|X

a

輸入:2

5

結(jié)果:;

7.000000

是否結(jié)束運算?

。.是1.否

請選擇?;?>:1

7.000000

2

結(jié)果:;

14.000000

是否結(jié)束運算?

。.是1.否

請選擇?;?〉:。

pleasechoseoneletterfrom"a,b,c,r,andt"

b

輸入:3+5

結(jié)果”8

pleasechoseoneletterfrom"a,b,c,r,andt"

測試Fl的:測試輸入c是否能清屏

測試輸出:

"F:'學(xué)習(xí)語言程序設(shè)討實習(xí),實驗一\Debug\C語言實驗一.exe,1□1x

pleasechoseoneletterfrom"a,b,c,r,andt

4.第四組測試用例

測試輸入:r

國?:"學(xué)習(xí)語言程序設(shè)計實習(xí),實驗一"Debug,C語言實驗一.exe"二回

pleasechoseoneletterfrom"a,b,c,r,andt

r___________________________________________

測試目的:測試返回菜單函數(shù)

測試輸出:

S3"F:\學(xué)習(xí)濡語言程序設(shè)計實習(xí),實驗一\Debu八C語言實驗一.exe",1□!x|

pcone

leaholetterfrom"a,b,c,r,andt

se算se

r算

術(shù)

a達(dá)

b屏

退

c回

r出

t程

pleasechoseoneletterfroma,b,c,r,andt'

5.第五組測試用例

測試輸入:t

oneletterfroma,b,c,r,andt

菜單

術(shù)運

達(dá)式

屏重

回菜

退

出程

pleasechoseoneletterfroma,b,c,r,andt

測試目的:測試是否能正確退出程序

測試輸出:

easechoseoneletterfrom"a,b,c,r,andt

r

菜單

術(shù)運

a算

達(dá)式

b算

屏重

c做

回菜

r單

退

出程

t序

pleasechoseoneletterfroma,b,c,r,andt

Pressanykeytocontinue

附錄:源代碼(附上全部源代碼,且不能雷同)

#include<stdio.h>

#include"windows.h"

doublez;〃定義全局變量用來存放算術(shù)運算前一次的結(jié)果

〃做算術(shù)運算時調(diào)用的函數(shù)

voidsuanshuyunsuan()

I

charfh,hhl,hh2;//hhl與hh2是用來存放回車字符的

doublenuml,num2;

printf("輸入:");

scanf("%lf%c%c%c%lf',&num1,&hh1,&h&hh2,&num2);

switch(fh)〃判斷是做什么運算

|

case'+':z=num1+num2;break;

case'-,:z=nurn1-num2;break;

case'*'!z=num1*num2:break;

case7':z=num1/num2;brcak;

}

printf("結(jié)果

printf("\n%lf\n,,,z);

}

〃選擇繼續(xù)做算術(shù)運算調(diào)用的函數(shù),將上次運算的結(jié)果做為下次算術(shù)運算的第一個操作數(shù)

voidsuanshuyunsuan2()

doublenum1;

charfli;

printf("%mn”,z);〃首先輸出前一次算術(shù)運算的結(jié)果

rewind(stdin);

scanf(',%c%lf\&fh,&num1);

switch(fh)

|

case'+':z=z+num1;break;

case'-':z=z-num1;break;

case'*':z=z*nuni1;break;

case7>:z=z/numl:break;

)

primf("結(jié)果:二");

printf("\n%lf\n",z);

}

〃判斷算術(shù)運算是否繼續(xù)

voidpanduan()

(

primf("是否結(jié)束運算?\n");

printf("O.是");

printf("l.否\n");

printf("請選擇?;?/p>

}

〃單運算符表達(dá)式實現(xiàn)函數(shù)

voidbiaodashiyunsiumO

(

intnumLnum2,num3;

charfh;

printff輸入:");

scanf(,'%d%c%d",&numl,&fh,&num2);

prinlf("結(jié)果:二");

switch(fh)

|

case'+':num3=num1+num2;break;

case'-,:num3=numI-num2;break;

case'*':num3=num1*num2;break;

case7':num3=nuinl/num2;brcak;

)

printf("%d",num3);

〃清除屏幕

voidqingpingO

(

system("cls");

}

〃顯示菜單

voidfanhuicaidan()

{

printf("菜單n\");

printf("a.算術(shù)運算\n“);

printf("b.表達(dá)式運算\n");

printf("c.清屏重做\n“);

printf("r.返回菜單\n");

prinif”退出程序\n");

voidmain()

(

charnuml;〃川于存放選擇的菜單選項

intpd;〃用于存放是否繼續(xù)算術(shù)運算的選擇項

printf("菜單\n");〃先顯示菜單

printf("a.算術(shù)運算\n");

printf("b.表達(dá)式運算\n”);

printf("c.清屏重做\n“);

printf("r.返回菜單MT);

printf("t.退出程序\n)

while(l)

{

rewind(stdin);〃清除鍵盤緩沖區(qū)

printfC^npleasechoseonelett

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論