题目:可怜的二柱子,老师又对他的出题系统提出了新的要求:
1,题目避免重复;
2,可定制打印的方式;
3,可控制下列参数:是否有乘除,是否有括号,数值范围,加减有无负数,乘除有无余数,是否支持分数,打印每行间隔可调整。
解题思路:
一,(1)题目避免重复:使用srand(seed)函数进行随机化,随seed的不同,可以产生不同的随机数
二,(1)控制数量:输入变量num控制
三,利用调用函数,定义一个能产生加减乘除四则运算的函数;
(1)控制是否有乘除:(div=0,没有乘除;div=1,有乘除)
(2)数值范围:数值在10范围rand()%11;数值在50范围 5rand()%11;数值在100范围rand()%101
(3)是否有括号:kuohao=0,没有括号;kuohao=1,有括号
(4)加减有无负数:fushu=0,没有负数;fushu=1,有负数
(5)除法有无余数:yushu=0,没有余数;yushu=1,有余数
(6)打印每行的间隔:间隔=g,通过g的大小控制间隔
(7)是否支持分数:fenshu=0,不支持分数;fenshu=1支持分数
(8)是否支持小数:利用随机函数rand()产生0——1之间的小数
具体程序:
#include<iostream.h> #include<stdlib.h>//使用随机函数 #include<time.h>//题目避免重复 #include<conio.h> int x1[100],x2[100],op,i; void yunsuan1() { if(op==0) cout<<x1[i]<<"+"<<x2[i]<<"="<<endl; if(op==1) cout<<x1[i]<<"-"<<x2[i]<<"="<<endl; if(op==2) cout<<x1[i]<<"*"<<x2[i]<<"="<<endl; if(op==3) cout<<x1[i]<<"/"<<x2[i]<<"="<<endl; } void yunsuan2() { if(op==0) cout<<x1[i]<<"+"<<x2[i]<<"="<<"\t"; if(op==1) cout<<x1[i]<<"-"<<x2[i]<<"="<<"\t"; if(op==2) cout<<x1[i]<<"*"<<x2[i]<<"="<<"\t"; if(op==3) cout<<x1[i]<<"/"<<x2[i]<<"="<<"\t"; } int main() { srand(time(NULL));//题目避免重复 int num,temp;//题目的数量num int fanwei,out,div,fushu,jixu;//数值的范围,输出方式,是否有乘除运算,加减法是否有负数 cout<<"********欢迎使用小学四则运算定制系统********"<<endl; cout<<"本系统支持定制,祝您使用愉快!"<<endl; cout<<"请输入题目的数量num:"<<endl; cin>>num; cout<<"请选择数值范围(0--*)fanwei"<<endl; cin>>fanwei; cout<<"请选择打印方式out(0,空行打印 1,空格打印)"<<endl; cin>>out; cout<<"请选择有无乘除运算div(0,没有乘除运算 1,有乘除运算)"<<endl; cin>>div; cout<<"请选择加减运算有无负数fushu(0,没有负数 1,有负数)"<<endl; cin>>fushu; for(i=1;i<=num;i++) { x1[i]=rand()%fanwei;//输出两个用户制定范围内的数 x2[i]=rand()%fanwei;//输出两个用户制定范围内的数 op=rand()%4; if(out==0) { if(div==0&&fushu==0) { if(op>=2) { op=op-2; yunsuan1(); } else { yunsuan1(); } } if(div==1&&fushu==1) { if(x1[i]>x2[i]) { temp=x1[i]; x1[i]=x2[i]; x2[i]=temp; } yunsuan1(); } if(div==0&&fushu==1) { if(op>=2) { op=op-2; yunsuan1(); } else { yunsuan1(); } } if(div==1&&fushu==0) { yunsuan1(); } } else if(out==1) { if(div==0&&fushu==0) { if(op>=2) { op=op-2; yunsuan2(); } else { yunsuan2(); } } if(div==1&&fushu==1) { if(x1[i]>x2[i]) { temp=x1[i]; x1[i]=x2[i]; x2[i]=temp; } yunsuan2(); } if(div==0&&fushu==1) { if(op>=2) { op=op-2; yunsuan2(); } else { yunsuan2(); } } if(div==1&&fushu==0) { yunsuan2(); } } } cout<<"要继续吗?jixu(0, 退出 1,继续)"<<endl; cin>>jixu; if(jixu==1) { cout<<endl; main(); } else { return 0; } getch(); return 0; }
总结:这次程序用到了使题目不能重复的函数srand(time(NULL)),以及调用函数。因为对函数的调用不是很熟练,所以事先定义了两个函数yuansuan1(),yunsuan2();
通过设置变量来达到题目的要求,不过本程序对于实现乘除发有无余数和有无分数还没能实现,需要进一步进行改进。还有就是程序中虽然出现了数组,但在实际应用用中没有起到相应的作用,也是需要改进的。
项目计划总结 周活动总结表 姓名:张金 日期:2015/3/15 | |||||||
任务 日期 | 听课 | 编程 | 阅读课外数目 | 锻炼身体 | 写老师留得作业 | 业余活动 | 日总计 (分钟) |
周日 |
| 30 | 30 |
|
|
| 60 |
周一 | 400 |
| 15 |
|
|
| 415 |
周二 | 200 |
| 30 | 60 | 60 | 60 | 410 |
周三 | 100 | 60 | 30 | 60 | 60 | 60 | 370 |
周四 | 200 | 30 | 30 | 60 | 40 | 60 | 420 |
周五 | 200 | 100 | 30 | 60 | 40 | 60 | 490 |
周六 |
| 40 | 30 | 60 | 40 | 60 | 230 |
阶段时间和效率 周数:1 | |||||||
总计 | 60 | 415 | 410 | 370 | 420 | 490 | 230 |
平均 | 30 | 69 | 68 | 61 | 70 | 67 | 46 |
最大 | 30 | 400 | 200 | 100 | 200 | 200 | 60 |
最小 | 30 | 15 | 30 | 30 | 30 | 30 |
|
2,时间记录日志:
学生:张金 日期:2015/3/15
老师:王建民 课程:PSP
日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 |
3/10 | 08:00 | 12:00 | 40 | 200 | 上课 |
|
14:30 | 15:30 |
| 60 | 构思程序 |
| |
16:00 | 17:00 |
| 60 | 写作业 |
| |
21:00 | 21:30 |
| 30 | 阅读课外书物 |
| |
3/11 | 08:00 | 10:00 | 20 | 100 | 听课 |
|
11:00 | 12:00 |
| 60 | 程序 |
| |
14:00 | 15:00 |
| 60 | 写作业 |
| |
21:00 | 21:30 |
| 30 | 阅读课外书物 |
| |
3/12 | 10:00 | 12:00 | 20 | 100 | 听课 |
|
14:00 | 14:30 |
| 30 | 程序 |
| |
15:00 | 16:00 |
| 60 | 写作业 |
| |
21:00 | 21:30 |
| 30 | 阅读课外读物 |
| |
3/13 | 08:00 | 12:00 | 40 | 200 | 听课 |
|
14:00 | 15:40 |
| 100 | 程序 |
| |
21:00 | 21:30 |
| 30 | 阅读课外书物 |
|
3,缺陷记录日志:
学生:张金 日期:2015/3/15
老师:王建民
日期 | 编号 | 类型 | 引入阶段 | 排除阶段 | 修复阶段 | 修复缺陷 |
3/10 | 1 | 001 | 编程 | 编译 | 15min |
|
描述:函数定义错误 | ||||||
2 | 002 | 编程 | 编译 | 10min |
| |
描述:函数调用出现错误 | ||||||
3/11 | 3 | 003 | 编程 | 编译 | 2 |
|
描述:使题目不重复使没有添加头文件 | ||||||
4 | 004 | 编程 | 编译 | 10min |
| |
描述:if结构使用错误 | ||||||
3/12 | 5 | 005 | 编程 | 编译 | 5min |
|
描述:使题目不出现乘除时出错 | ||||||
3/13 | 6 | 006 | 编程 | 编译 | 5min |
|
描述:使题目中加减法出现负数是出错 |