更高要求的程序
一、程序要求
1、题目避免重复;
2、可定制(数量/打印方式);
3、可控制下列参数:
是否有乘除法;
是否有括号(最多可以支持十个数参与计算);
数值范围;
加减有无负数;
除法有无余数;
二、程序设计思想
1、在上次程序的基础之上添加要求;
2、使用时间做种子产生随机数,每次运行题目不重复;
3、在程序中输入题目数量,可随意更改;
4、添加参数,控制是否有乘除法,可任意选择;
5、添加参数,控制数值范围,可任意选择;
6、添加参数,控制减法有无负数,可任意选择;
7、添加参数,控制除法有无余数,可任意选择;
三、源程序
//李俏,2016.3.7 //随机生成四则运算 #include<iostream> #include<stdio.h> #include<stdlib.h> #include<time.h> using namespace std; int main() { int first,second,firstm,secondm; int sign,i,j; int num,chengchu,fushu,yushu,fanwei; cout<<"请输入题目数量:"; cin>>num; if(num==0) { exit(1); } cout<<"是否有乘除法?1.是,2.否:"; cin>>chengchu; if(chengchu==1) { cout<<"除法是否有余数?1.是,2.否:"; cin>>yushu; } cout<<"减法是否有负数?1.是,2.否:"; cin>>fushu; cout<<"请输入数值范围:"; cin>>fanwei; srand((int)time(NULL)); //用时间做种子,每次产生随机数都不一样 for(i=0;i<num;i++) { j=rand()%2; //选择生成整数运算还是分数运算 if(j==0) //选择整数 { first=rand()%(fanwei+1); second=rand()%(fanwei+1); if(chengchu==1) { sign=rand()%4; } else { sign=rand()%2; } switch(sign) { case 0: //整数加法 cout<<first<<"+"<<second<<"="<<endl; break; case 1: //整数减法 if(fushu==1) { cout<<first<<"-"<<second<<"="<<endl; } else { if(first>second) { cout<<first<<"-"<<second<<"="<<endl; } else { cout<<second<<"-"<<first<<"="<<endl; } } break; case 2: //整数乘法 cout<<first<<"*"<<second<<"="<<endl; break; case 3: //整数除法 if(yushu==1) { if(second!=0) { cout<<first<<"/"<<second<<"="<<endl; } else { i=i-1; } } else { if(second!=0&&(first%second==0)) { cout<<first<<"/"<<second<<"="<<endl; } else { i=i-1; } } break; } } else //选择分数 { first=rand()%(fanwei+1);
second=rand()%(fanwei+1);//分子 firstm=rand()%(fanwei+1); secondm=rand()%(fanwei+1);//分母 if(chengchu==1) { sign=rand()%4; } else { sign=rand()%2; } switch(sign) { case 0: //分数加法 if(firstm!=0&&secondm!=0&&first<firstm&&second<secondm) { cout<<first<<"/"<<firstm<<" + "<<second<<"/"<<secondm<<"="<<endl; } else { i=i-1; } break; case 1: //分数减法 if(fushu==1) { if(firstm!=0&&secondm!=0&&first<firstm&&second<secondm) { cout<<first<<"/"<<firstm<<" - "<<second<<"/"<<secondm<<"="<<endl; } else { i=i-1; } } else { if(firstm!=0&&secondm!=0&&first<firstm&&second<secondm&&(first/firstm)>(second/secondm)) { cout<<first<<"/"<<firstm<<" - "<<second<<"/"<<secondm<<"="<<endl; } else { i=i-1; } } break; case 2: //分数乘法 if(firstm!=0&&secondm!=0&&first<firstm&&second<secondm) { cout<<first<<"/"<<firstm<<" * "<<second<<"/"<<secondm<<"="<<endl; } else { i=i-1; } break; case 3: //分数除法 if(firstm!=0&&secondm!=0&&first!=0&&second!=0&&first<firstm&&second<secondm) { cout<<first<<"/"<<firstm<<" / "<<second<<"/"<<secondm<<"="<<endl; } else { i=i-1; } break; } } }
return 0; }
四、结果截图
五、项目计划日志
周活动总结表
姓名:李俏 日期:2016年3月12日
日期 任务 | 听课 | 编写程序 | 阅读课本 | 准备考试 | 日总计 | ||
周一 | 120 | 60 | 30 | 210 | |||
周二 | 30 | 30 | |||||
周三 | 30 | 30 | |||||
周四 | 120 | 60 | 30 | 210 | |||
周五 | 30 | 30 | |||||
周六 | 180 | 30 | 210 | ||||
周总结 | 240 | 300 | 180 | 720 |
阶段时间和效率 周数:1
不包括上一周在内的累计时间
总计 | 240 | 300 | 180 |
|
|
| 720 |
平均 | 240 | 300 | 180 |
|
|
| 720 |
最大 | 240 | 300 | 180 |
|
|
| 720 |
最小 | 240 | 300 | 180 |
|
|
| 720 |
以前各周的累计时间
总计 |
|
|
|
|
|
|
|
平均 |
|
|
|
|
|
|
|
最大 |
|
|
|
|
|
|
|
最小 |
|
|
|
|
|
|
|
六、时间记录表:
学生: 李 俏 日期 :2016年3月12日
教师: 王建民 课程 :软件工程
日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 |
3.7 | 16:30 | 17:30 | 无 | 60 | 编写程序 | 作业 |
| 20:00 | 20:30 | 无 | 30 | 阅读 | 作业 |
3.8 | 20:10 | 20:40 | 无 | 30 | 阅读 | 作业 |
3.9 | 20:00 | 20:40 | 10min | 30 | wc |
|
3.10 | 18:50 | 19:50 | 无 | 60 | 编写程序 | 作业 |
| 20:00 | 20:30 | 无 | 30 | 阅读 | 作业 |
3.11 | 21:10 | 21:40 | 无 | 30 | 阅读 | 作业 |
3.12 | 11:00 | 14:30 | 30min | 180 | 编写程序 | 作业 |
七、缺陷记录日志:
学生 李俏
日期 2016年3月12日
教员 王建民
程序号
日期 | 编号 | 类型 | 引入阶段 | 排除阶段 | 修复时间 | 修复缺陷 | |||||
3.7 | 1 | 20 | 编码 | 编译 | 5min |
| |||||
描述:初次添加参数控制,控制语句放置错误 | |||||||||||
3.10 | 2 | 20 | 编码 | 编译 | 10min |
| |||||
描述:if...else...语句没有加大括号,导致层次不分明 | |||||||||||
3.12 | 3 | 40 | 运行 | 运行后 | 10min |
| |||||
描述:错删break,题目数目不对 | |||||||||||
3.15 | 4 | A | 编译 | 编译 | 1min |
| |||||
描述:条件不成立时, 写成i=i+1,应该是i=i-i |