标签:
题目:可怜的二柱子,老师又对他的出题系统提出了新的要求:
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之间的小数
具体程序:
1 #include<iostream.h> 2 #include<stdlib.h>//使用随机函数 3 #include<time.h>//题目避免重复 4 int x1[100],x2[100],op,i; 5 void yunsuan1() 6 { 7 if(op==0) 8 cout<<x1[i]<<"+"<<x2[i]<<"="<<endl; 9 if(op==1) 10 cout<<x1[i]<<"-"<<x2[i]<<"="<<endl; 11 if(op==2) 12 cout<<x1[i]<<"*"<<x2[i]<<"="<<endl; 13 if(op==3) 14 cout<<x1[i]<<"/"<<x2[i]<<"="<<endl; 15 } 16 void yunsuan2() 17 { 18 if(op==0) 19 cout<<x1[i]<<"+"<<x2[i]<<"="<<"\t"; 20 if(op==1) 21 cout<<x1[i]<<"-"<<x2[i]<<"="<<"\t"; 22 if(op==2) 23 cout<<x1[i]<<"*"<<x2[i]<<"="<<"\t"; 24 if(op==3) 25 cout<<x1[i]<<"/"<<x2[i]<<"="<<"\t"; 26 } 27 28 29 int main() 30 { 31 srand(time(NULL));//题目避免重复 32 int num,temp;//题目的数量num 33 int fanwei,out,div,fushu;//数值的范围,输出方式,是否有乘除运算,加减法是否有负数 34 cout<<"********欢迎使用小学四则运算定制系统********"<<endl; 35 cout<<"本系统支持定制,祝您使用愉快!"<<endl; 36 cout<<"请输入题目的数量num:"<<endl; 37 cin>>num; 38 cout<<"请选择数值范围(0--*)fanwei"<<endl; 39 cin>>fanwei; 40 cout<<"请选择打印方式out(0,空行打印 1,空格打印)"<<endl; 41 cin>>out; 42 cout<<"请选择有无乘除运算div(0,没有乘除运算 1,有乘除运算)"<<endl; 43 cin>>div; 44 cout<<"请选择加减运算有无负数fushu(0,没有负数 1,有负数)"<<endl; 45 cin>>fushu; 46 for(i=1;i<num;i++) 47 { 48 x1[i]=rand()%fanwei;//输出两个用户制定范围内的数 49 x2[i]=rand()%fanwei;//输出两个用户制定范围内的数 50 op=rand()%4; 51 if(out==0) 52 { 53 if(div==0&&fushu==0) 54 { 55 while(op>=2) 56 { 57 op=op-2; 58 yunsuan1(); 59 } 60 } 61 if(div==1&&fushu==1) 62 { 63 if(x1[i]>x2[i]) 64 { 65 temp=x1[i]; 66 x1[i]=x2[i]; 67 x2[i]=temp; 68 } 69 70 yunsuan1(); 71 } 72 } 73 else if(out==1) 74 { 75 if(div==0&&fushu==0) 76 { 77 while(op>=2) 78 { 79 op=op-2; 80 yunsuan2(); 81 } 82 } 83 if(div==1&&fushu==1) 84 { 85 if(x1[i]>x2[i]) 86 { 87 temp=x1[i]; 88 x1[i]=x2[i]; 89 x2[i]=temp; 90 } 91 92 93 yunsuan2(); 94 } 95 } 96 97 } 98 99 }
总结:这次程序用到了使题目不能重复的函数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 |
|
描述:使题目中加减法出现负数是出错 |
标签:
原文地址:http://www.cnblogs.com/xiaojin123/p/4338834.html