个人作业1:小学四则运算——基于控制台
生活随笔
收集整理的這篇文章主要介紹了
个人作业1:小学四则运算——基于控制台
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
a.需求分析:
自動生成小學四則運算題目的命令行 “軟件”,滿足以下需求:
- 除了整數以外,還要支持真分數的四則運算,真分數的運算,例如:1/6 + 1/8 = 7/24
- 運算符為 +, ?, ×, ÷
- 并且要求能處理用戶的輸入,并判斷對錯,打分統計正確率。
- 要求能處理用戶輸入的真分數, 如 1/2, 5/12 等
- 使用 -n 參數控制生成題目的個數,例如執行下面命令將生成10個題目
Myapp.exe -n 10
b.功能設計:
生成整數四則運算和分數四則運算,并判斷對錯,打分統計正確率
c.設計實現:
分函數zs()主要負責整數四則運算,隨機產生兩個隨機數和隨機運算符并計算;分函數gys是求最大公約數函數;分函數fs()主要負責分數四則運算隨機產生兩個隨機數和隨機運算符并調用第三個分函數gys()進行計算;主函數main()主要實現隨機調用兩個分函數zs()和fs()并統計正確率
d.代碼說明:
#include "stdio.h"
#include "stdlib.h"
#include "time.h" #include "string.h" int?gcd(int?x,int?y) { ????int?r; ????r=x%y; ????while(r!=0) ????{ ????????x=y; ????????y=r; ????????r=x%y; ????} ????return?y; } int?zhengshu(){
????int?left,mid,right,result,int_number; ????srand((unsigned)time(NULL)); ????left=rand()%10; ????mid=rand()%4; ????right=rand()%10; ????printf("%d",left); ????switch(mid) ????{ ????????case(0):result=left+right; ????????printf(" + ");break; ????????case(1):result=left-right;? ????????printf(" - ");break; ????????case(2):result=left*right; ????????printf(" ×");break; ????????case(3):result=left/right; ????????printf(" ÷");break; ????} ????printf("%d =",right); ????scanf("%d",&int_number); ????if(int_number == result) ????????{ ????????????printf("回答正確!??? 下一題:\n"); ????????????score=score+1;? ????????} ????else{ ????????????printf("回答錯誤!??? 下一題:\n"); ????????} } int?fenshu(){
????int?left_x,left_y,mid,right_x,right_y,x,y,GYS,int_number1,int_number2; ????srand((unsigned)time(NULL)); ????do{ ????left_x=rand()%10+1; ????left_y=rand()%10+1; ????mid=rand()%4; ????right_x=rand()%10+1; ????right_y=rand()%10+1; ????}while(!(left_x<left_y&&right_x<right_y)); ????printf("%d/%d",left_x,left_y); ????????switch(mid) ????????{ ????????????case(0):x=left_x*right_y+left_y*right_x; ????????????????????y=left_y*right_y; ????????????printf(" + ");break; ????????????case(1):x=left_x*right_y-left_y*right_x; ????????????????????y=left_y*right_y;?? ????????????printf(" - ");break; ????????????case(2):x=left_x*right_x; ????????????????????y=left_y*right_y; ????????????printf(" ×");break; ????????????case(3):x=left_x*right_y; ????????????????????y=left_y*right_x; ????????????printf(" ÷");break; ????????} ????????printf("%d/%d =",right_x,right_y); ????GYS=gcd(x,y); ????x=x/GYS; ????y=y/GYS; ????scanf("%d/%d",&int_number1,&int_number2); ????if(int_number1==x&&int_number2==y) ????{ ????????printf("回答正確!??? 下一題:\n"); ????????score=score+1;? ????} ????else{ ????????printf("回答錯誤!??? 下一題:\n"); ????} } int?main(){
????int?h,count; int?score=0; ????printf("請輸入題目數?"); ????scanf("%d",&count); ????for(int?i=0;i<count;i++) ????{ ????????h=rand()%2; ????????if(h==0) ????????{zs();} ????????else ????????{fs();} ????} ????printf("正確率為:%lf",score*1.0/count); }
轉載于:https://www.cnblogs.com/Xshopping/p/6516924.html
總結
以上是生活随笔為你收集整理的个人作业1:小学四则运算——基于控制台的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个性签名女生唯美
- 下一篇: ppt的这个形状在哪里插入?