日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

作业四 | 个人项目-小学四则运算 “软件”之初版

發(fā)布時(shí)間:2025/3/17 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 作业四 | 个人项目-小学四则运算 “软件”之初版 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作業(yè)要求來(lái)自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186

GitHub遠(yuǎn)程倉(cāng)庫(kù)的地址https://github.com/kunnkkk/16rg

?

一、題目要求:

像《構(gòu)建之法》的人物阿超那樣,寫(xiě)一個(gè)能自動(dòng)生成小學(xué)四則運(yùn)算題目的命令行 “軟件”。


具體要求:任何編程語(yǔ)言都可以,命令行程序接受一個(gè)數(shù)字輸入,然后輸出相應(yīng)數(shù)目的四則運(yùn)算題目和答案。例如輸入數(shù)字是 30, 那就輸出 30 道題目和答案。 運(yùn)算式子必須至少有兩個(gè)運(yùn)算符,運(yùn)算數(shù)字是在 100 之內(nèi)的正整數(shù),答案不能是負(fù)數(shù)。 如:

23 - 3 * 4 = 11

擴(kuò)展要求:

1) 要求能出和真分?jǐn)?shù) (二分之一, 十二分之五,等)相關(guān)的練習(xí)題。

2) 并且要求能處理用戶的輸入,并判斷對(duì)錯(cuò),打分統(tǒng)計(jì)。 要求能處理用戶輸入的真分?jǐn)?shù), 如 1/2, 5/12 等。

初步擬定要實(shí)現(xiàn)的功能后,估計(jì)一下自己需要花多長(zhǎng)時(shí)間。編程過(guò)程中記錄自己實(shí)際用了多長(zhǎng)時(shí)間。

然后和同學(xué)們比較一下各自程序的功能、實(shí)現(xiàn)方法的異同等等。

寫(xiě)博客紀(jì)錄自己實(shí)現(xiàn)的過(guò)程和思路。

?

二、個(gè)人軟件過(guò)程耗時(shí)估計(jì)與統(tǒng)計(jì)表

?

PSP2.1Personal Software Process StagesTime Senior StudentTime
Planning計(jì)劃30min45min
· Estimate估計(jì)這個(gè)任務(wù)需要多少時(shí)間3h5h
Development開(kāi)發(fā)1h1h
· Analysis需求分析 (包括學(xué)習(xí)新技術(shù))

10min

10min
· Design Spec生成設(shè)計(jì)文檔0min0min
· Design Review設(shè)計(jì)復(fù)審5min3min
· Coding Standard代碼規(guī)范3min3min
· Design具體設(shè)計(jì)20min30min
· Coding具體編碼1h2h
· Code Review代碼復(fù)審5min5min
· Test測(cè)試(自我測(cè)試,修改代碼,提交修改)30min50min
Reporting報(bào)告10min15min
·測(cè)試報(bào)告0min0min
·計(jì)算工作量2min2min
·并提出過(guò)程改進(jìn)計(jì)劃2min2min

?

三、代碼提交

提交源代碼和可執(zhí)行程序至github上,博客開(kāi)頭已給出github地址。

需要提交的應(yīng)該有

  • 項(xiàng)目的工程文件(可執(zhí)行的應(yīng)用程序)
  • 項(xiàng)目的源代碼(c文件)
  • 一些必要的配置(無(wú))
  • 單獨(dú)創(chuàng)建一個(gè)public子目錄,存放編譯后的可執(zhí)行程序。(已創(chuàng)建子目錄存放可執(zhí)行的應(yīng)用程序)

?

四、設(shè)計(jì)與結(jié)果

根據(jù)作業(yè)要求,分為了具體要求擴(kuò)展要求,所以在設(shè)計(jì)是,把這兩個(gè)功能分開(kāi),令用戶可以有針對(duì)性的練習(xí)。

?

而這兩個(gè)功能都能實(shí)現(xiàn)詢問(wèn)測(cè)試題目數(shù)量、檢測(cè)答案是否正確和計(jì)算答題準(zhǔn)確率。

?

?

?

?

?

?

?

?

?

在設(shè)計(jì)這兩個(gè)功能的時(shí)候也遇到比較困難的地方。

功能1:100以內(nèi)四則運(yùn)算 (四舍五入精確到小數(shù)點(diǎn)后兩位)

  • 對(duì)輸入結(jié)果和正確答案進(jìn)行四舍五入精確到小數(shù)點(diǎn)后兩位的操作(已解決)
  • 考慮兩個(gè)運(yùn)算符如何比較優(yōu)先級(jí)(已解決)

功能2:20以內(nèi)真分?jǐn)?shù)的四則運(yùn)算

  • 設(shè)計(jì)分?jǐn)?shù)加減乘除運(yùn)算的邏輯關(guān)系(已解決)
  • 如何讓用戶輸入的字符與正確答案相比較(已解決,但方法一般還能優(yōu)化)
  • 如何約分(已解決)
  • 如果得出的結(jié)果為整數(shù),用戶該如何輸入(未解決,目前只能輸入1/1代表整數(shù))

?

?五、部分詳細(xì)代碼

(1)功能1 | 獲取隨機(jī)運(yùn)算符

//隨機(jī)產(chǎn)生運(yùn)算符 char createnumberop()
{
int op;op=rand() % 4+1;switch(op){case 1:return'+';case 2:return'-';case 3:return'*';case 4:return'/';}return 0; }

?

(2)功能1 | 四則運(yùn)算功能

if(result1 < 0 || result2 <0)//如果結(jié)果為非正數(shù),則重新獲取題目 {i--;continue; } else{printf("%.f %c %.f %c %.f = ",a,op,b,op2,c);scanf("%f",&answer);if((op=='+' || op=='-') && (op2=='*' || op2=='/'))//若第二個(gè)運(yùn)算符優(yōu)先級(jí)更大 {if((int)(100.0*answer+0.5)/100.0==(int)(100.0*result2+0.5)/100.0 && result2 >=0)//四舍五入精確到小數(shù)點(diǎn)后兩位 {printf("【回答正確!】\n\n");rightnumber++;}else{printf("【回答錯(cuò)誤!答案是:%.2f】\n\n",(int)(100.0*result2+0.5)/100.0);wrongnumber++;}} }

?

(3)功能2 | 獲取公倍數(shù)與公約數(shù)

//獲取公倍數(shù) double gongbeishu(double b,double d) {double i,max;max=b>d?b:d;//比較分母大小for(i=max;;i++)if((int)(i)%(int)(b)==0 && (int)(i)%(int)(d)==0)//計(jì)算最小公倍數(shù)break;return i; } //獲取公約數(shù) double gongyueshu(double a,double c) {double i,min;min=a<c?a:c;//比較分子大小for(i=2;i<=min;i++)if((int)(a)%(int)(i)==0 && (int)(c)%(int)(i)==0)//計(jì)算最小公約數(shù)break;if(i>min)i=1;return i; }

?

(4)功能2 | 真分?jǐn)?shù)邏輯運(yùn)算

if(op=='+') {fenzihe0=beishu1*a + beishu2*c;fenmu=gongbeishu(b,d); fenzihe1=fenzihe0/gongyueshu(fenzihe0,fenmu);fenmu=fenmu/gongyueshu(fenzihe0,fenmu);if(fenzihe1<0 || fenmu<=0){i--;continue;}else{printf("(%.f/%.f) %c (%.f/%.f) = ",a,b,op,c,d);scanf("%d%c%d",&answer[0],&op2,&answer[1]);if(answer[0]/answer[1]==(int)fenzihe1/(int)fenmu && op2=='/'){printf("【回答正確!】\n\n");rightnumber++;}else{printf("【回答錯(cuò)誤!答案是:%.f/%.f】\n\n",fenzihe1,fenmu);wrongnumber++;}} }

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/kunnkkk/p/9789028.html

總結(jié)

以上是生活随笔為你收集整理的作业四 | 个人项目-小学四则运算 “软件”之初版的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。