个人作业1——四则运算题目生成程序(基于控制台)
2017-03-07 22:31
543 查看
码市地址:https://coding.net/u/keyi123/p/kekeke/git/blob/master/四则运算.cpp
https://coding.net/u/keyi123/p/kekeke/git/blob/master/四则运算.exe
a.需求分析
除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
运算符为 +, −, ×, ÷
并且要求能处理用户的输入,并判断对错,打分统计正确率
要求能处理用户输入的真分数, 如 1/2, 5/12 等
使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
b.功能设计
自动生成的随机数
能够进行整数和真分数的四则运算
随机生成运算符号
判断对错,得出正确答案,打分统计正确率以及计算得分
c.设计实现
d.代码说明
gys(int x,int y)用于求最大公约数函数
gbs(int x,int y)用于求最小公倍数函数
yuefen(int &fz,int &fm)用于定义约分函数
main函数的主要部分
(1)整数运算
(2)真分数运算
e.测试运行
(1)整数运算
(2)真分数运算
PSP表:
e.小结
1、第一次做软件工程的作业,程序语言掌握的不是很熟练花费了一些时间,通过百度和请教同学,将循环、递归、浮点型比较等慢慢掌握熟练。
2、随机数写在循环里,导致程序运行较慢,以后要注意。
3、markdown的排版、、、写进去,没有注意中英文,导致无法自动排版,以后要多注意中英文的变换。
4、日后要多熟悉程序语言,也要多向同学们学习。
https://coding.net/u/keyi123/p/kekeke/git/blob/master/四则运算.exe
a.需求分析
除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
运算符为 +, −, ×, ÷
并且要求能处理用户的输入,并判断对错,打分统计正确率
要求能处理用户输入的真分数, 如 1/2, 5/12 等
使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
b.功能设计
自动生成的随机数
能够进行整数和真分数的四则运算
随机生成运算符号
判断对错,得出正确答案,打分统计正确率以及计算得分
c.设计实现
本程序是通过c++来实现的,一共有三个方法和一个主函数,gys(int x,int y)用于求最大公约数函数,gbs(int x,int y)用于求最小公倍数函数,yuefen(int &fz,int &fm)用于定义约分函数,主函数中能够生成随机数,整数和真分数的四则运算,以及判断对错,得出正确答案,打分统计正确率以及计算得分。
d.代码说明
gys(int x,int y)用于求最大公约数函数
int gys(int x,int y) //定义求最大公约数函数 { return y?gys(y,x%y):x; //递归调用gys,返回最大公约数 }
gbs(int x,int y)用于求最小公倍数函数
int gbs(int x,int y) //定义求最小公倍数函数 { return x/gys(x,y)*y; }
yuefen(int &fz,int &fm)用于定义约分函数
void yuefen(int &fz,int &fm) //定义约分函数 { int s=gys(fz,fm); fz=fz/s; fm=fm/s; }
main函数的主要部分
(1)整数运算
for(i=0;i<num;i++) { srand((int)time(0)); int a=rand()%100+1; //生成1~99范围内随机数 int b=rand()%100+1; int c=rand()%3; //生成0~3范围内随机数。0表示加法,1表示减法,2表示乘法,3表示除法 if(c==0) { result1=a+b; printf("%d+%d=",a,b); } if(c==1) { while((a-b)<0){ int a=rand()%100+1; //生成1~99范围内随机数 int b=rand()%100+1; } result1=a-b; printf("%d-%d=",a,b); } if(c==2) { result1=a*b; printf("%d*%d=",a,b); } if(c==3) { result1=a/b; printf("%d÷%d=",a,b); } cin>>answer1; if(answer1==result1) { printf("correct\n"); co=co+1; //若正确,co+1 } else { printf("wrong\n");
(2)真分数运算
for(i=0;i<num;i++) { srand((int)time(0)); int a=rand()%100+1; //生成1~99范围内随机数 int b=rand()%100+1; int c=rand()%100+1; int d=rand()%100+1; int e=rand()%3; //生成0~3范围内随机数。0表示加法,1表示减法,2表示乘法,3表示除法 if(a<b&&c<d) { if(e==0) { int u1,u2,v=gbs(b,d); u1=(v/b*a); //cout<<u1<<endl; u2=v/d*c; fz1=u1+u2; fm1=v; yuefen(fz1,fm1); printf("%d/%d+%d/%d=",a,b,c,d); } if(e==1) { while((a*d-b*c)<0){ int a=rand()%100+1; //生成1~99范围内随机数 int b=rand()%100+1; int c=rand()%100+1; int d=rand()%100+1; } int u1,u2,v=gbs(b,d); u1=v/b*a; u2=v/d*c; fz1=u1-u2; fm1=v; yuefen(fz1,fm1); printf("%d/%d-%d/%d=",a,b,c,d); } if(e==2) { fz1=a*c; fm1=b*d; yuefen(fz1,fm1); printf("(%d/%d)*(%d/%d)=",a,b,c,d); } if(e==3) { fz1=a*d; fm1=b*c; yuefen(fz1,fm1); printf("(%d/%d)÷(%d/%d)=",a,b,c,d); } cin>>answer2; //输入答案 float result2=(float)fz1/(float)fm1; cout<<"正确的答案为:"<<result2<<endl; if (abs(answer2-result2)<0.000001) { printf("correct\n"); co=co+1; //若正确,co+1 } else printf("wrong\n"); } else i=i-1; } zhengquelv=(co*1.0)/num; //计算正确率 printf("\n正确率为:%f",zhengquelv); printf("得分为:%f",zhengquelv*100);
e.测试运行
(1)整数运算
(2)真分数运算
PSP表:
e.小结
1、第一次做软件工程的作业,程序语言掌握的不是很熟练花费了一些时间,通过百度和请教同学,将循环、递归、浮点型比较等慢慢掌握熟练。
2、随机数写在循环里,导致程序运行较慢,以后要注意。
3、markdown的排版、、、写进去,没有注意中英文,导致无法自动排版,以后要多注意中英文的变换。
4、日后要多熟悉程序语言,也要多向同学们学习。
相关文章推荐
- 个人作业1——四则运算题目生成程序(java代码,基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- (修改)个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)