四则运算升级
作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213
GitHub远程地址:https://github.com/Tily288/Tily
一、基本要求
从个人项目出发,将程序改造成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:
1.自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。
2.用户可以输入答案
3.若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。
二、扩展方向
- 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66(保留两位小数功能实现,不支持出带括号题目)
- 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数(实现)
三、时间记录表
|
四、开发环境调试:Visual C++
五、代码呈现
#include<stdio.h> #include<math.h> #include<time.h> #include <stdlib.h> void operation(void); float plus(float a,float b); float minus(float a,float b); float multiply(float a,float b); float divide(float a,float b); float caculate(int i,float a,float b); char Operator(int i); void main() { int i=0,n; printf("你想要输入的运算题目数为:"); scanf("%d",&n); do{ operation(); i++; }while(i<n); system("pause"); } void operation() { float answer; float x,y,z; int a,b,c; int j,k; char op1,op2; srand((unsigned)time(NULL)); do{ a=rand()%100; b=rand()%100; c=rand()%100; //0,1为加减 2,3为乘除 j=rand()%4; k=rand()%4; if(j>1){ y=(float)a; z=(float)b; x=caculate(j,y,z); y=x; z=(float)c; x=caculate(k,y,z); } else { if(k<2) { y=(float)a; z=(float)b; x=caculate(j,y,z); y=x; z=(float)c; x=caculate(k,y,z); } else { y=(float)b; z=(float)c; x=caculate(k,y,z); y=(float)a; z=x; x=caculate(j,y,z); } } }while(x<0.0); op1=Operator(j); op2=Operator(k); printf("%d %c %d %c %d = ",a,op1,b,op2,c); scanf("%f",&answer); if(j==3&&k==3) { if((answer-x)<0.01) { printf("恭喜你,答对啦!\n"); } else { printf("很遗憾,你答错了!正确答案是:%.1f\n",x); } } else { if((x-answer)<0.01) { printf("恭喜你,答对啦!\n"); } else { printf("很遗憾,你答错了!正确答案是:%.1f\n",x); } } } float caculate(int i,float a,float b) //当它是哪种符号就进行哪个计算 { float x; switch(i) { case 0: x=plus(a,b); break; case 1: x=minus(a,b); break; case 2: x=multiply(a,b); break; case 3: x=divide(a,b); break; default: break; } return x; } float plus(float a,float b) { float x; x=a+b; return x; } float minus(float a,float b) { float x; x=a-b; return x; } float multiply(float a,float b) { float x; x=a*b; return x; } float divide(float a,float b) { float x; x=a/b; return x; } char Operator(int i) //运算符 { char fh; switch(i) { case 0: fh='+'; break; case 1: fh='-'; break; case 2: fh='*'; break; default: fh='/'; break; } return fh; }
六、运行结果截图
七、总结
这次项目没能按老师要求完成,由于自己的基础不够扎实,很多地方无法完成,为了不拖其他同学后腿所以自己完成了本次作业,并没能把升级版做出来,很多地方都没有完善,希望自己在学习中发现自己的不足努力前进,为以后结对能不拖人后退。