个人项目——二柱子程序升级版
更高要求的程序
一、程序要求
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 |