四则运算2

题目:
1.题目避免重复/
2.可定制(数量/打印方式)
3.可以控制下列参数
   *是否有乘除法
   *是否有括号(最多可支持10个数参与计算)
   *数值范围
   *加减有无负数
   *除法有无余数
设计思路:
各项条件的选择都通过生成随机数并通过if-else语句进行选择,数值范围通过为随机数限定范围来生成,嵌套比较多,容易混乱。值得注意的是除法分母不能为0 ,要加以限制。打印方式也通过选择语句选择打印到文档或者屏幕。


/*2016/3/11 没有实现括号的运算,加不进去了:( */ #include<iostream> #include<fstream> #include<time.h> #include<stdlib.h> #include<math.h> using namespace std; void main() { ofstream outfile; outfile.open("题目.txt"); int num1,num2,num3,num4,num,c,d,f; char y; int xZ[3]; int range; srand((int)time(0)); // 时间种子 cout<<"选择打印方式:(1代表屏幕,0代表文件):"; cin>>f; cout<<"输入题目的数量:"; cin>>num; cout<<"整数数值范围:(1000以内,100以内,10以内)"; cin>>range; while(range!=10&&range!=100&&range!=1000) { cout<<"请输入10,100,或1000:"; cin>>range; } cout<<"是否有乘除法,有输入1,没有输入0:"; cin>>xZ[0]; cout<<"加减有无负数,有输入1,没有输入0:"; cin>>xZ[1]; if(xZ[0]==1) { cout<<"除法有无余数,有输入1,没有输入0:"; cin>>xZ[2]; } for(int i=0;i<num;i++)//输出题目的循环 { num1=rand()%range; num2=rand()%range; num3=rand()%range; num4=rand()%range; c=1+(int)(4*rand()/(RAND_MAX+1.0)); d=1+(int)(2*rand()/(RAND_MAX+1.0)); if(d%2==0)//随机确定整数运算还是真分数运算 { if(xZ[0]==1)//确定是否有乘除 { if(c%4==0)//除法 { if(xZ[2]==0)//是否有余数 { if(num1%num2==0) { if(f==1) cout<<num1<<"/"<<num2<<"="<<endl; else outfile<<num1<<"/"<<num2<<"="<<endl; } else { while(num1%num2!=0) { num1=rand()%range; num2=rand()%range; } if(f==1) cout<<num1<<"/"<<num2<<"="<<endl; else outfile<<num1<<"/"<<num2<<"="<<endl; } } else { if(f==1) cout<<num1<<"/"<<num2<<"="<<endl; else outfile<<num1<<"/"<<num2<<"="<<endl; } } if(c%4==2)//减法 { if(xZ[1]==0)//是否有负数 { if(num1<num2) { if(f==1) cout<<num2<<"-"<<num1<<"="<<endl; else outfile<<num2<<"-"<<num1<<"="<<endl; } else if(f==1) cout<<num1<<"-"<<num2<<"="<<endl; else outfile<<num1<<"-"<<num2<<"="<<endl; } else if(f==1) cout<<num1<<"-"<<num2<<"="<<endl; else outfile<<num1<<"-"<<num2<<"="<<endl; } if(c%4==1) if(f==1) cout<<num1<<"+"<<num2<<"="<<endl; else outfile<<num1<<"+"<<num2<<"="<<endl; if(c%4==3) if(f==1) cout<<num1<<"*"<<num2<<"="<<endl; else outfile<<num1<<"*"<<num2<<"="<<endl; } else//无乘除 { if(c%2==0)//减法 { if(xZ[1]==0)//是否有负数 { if(num1<num2) { if(f==1) cout<<num2<<"-"<<num1<<"="<<endl; else outfile<<num2<<"-"<<num1<<"="<<endl; } else { if(f==1) cout<<num1<<"-"<<num2<<"="<<endl; else outfile<<num1<<"-"<<num2<<"="<<endl; } } else { if(f==1) cout<<num1<<"-"<<num2<<"="<<endl; else outfile<<num1<<"-"<<num2<<"="<<endl; } } if(c%2==1) { if(f==1) cout<<num1<<"+"<<num2<<"="<<endl; else outfile<<num1<<"+"<<num2<<"="<<endl; } } } else//真分数运算 { switch(c%4)//判断运算符 { case(0):y='+';break; case(1):y='-';break; case(2):y='*';break; case(3):y='/';break; } if(num1>num2)//判断大小,组合成真分数,并确保分母不为0 { if(f==1) cout<<"("<<num2<<"/"<<num1<<")"; else outfile<<"("<<num2<<"/"<<num1<<")"; } else { if(num2==0) { do{num2=rand()%range;} while(num2==0); } if(f==1) cout<<"("<<num1<<"/"<<num2<<")"; else outfile<<"("<<num1<<"/"<<num2<<")"; } if(f==1) cout<<y; else outfile<<y; if(num3>num4) { if(f==1) cout<<"("<<num4<<"/"<<num4<<")"; else outfile<<"("<<num4<<"/"<<num4<<")"; } else { if(num4==0) { do{num4=rand()%range;} while(num4==0); } if(f==1) cout<<"("<<num3<<"/"<<num4<<")"; else outfile<<"("<<num3<<"/"<<num4<<")"; } if(f==1) cout<<"="<<endl; else outfile<<"="<<endl; } } outfile.close(); }

  




 

听课

编写程序

阅读相关书籍

网上查找资料

日总计

周一

2

0

1

0

3

周二

0

2

1

1

4

周三

0

0

0

0

0

周四

2

1

0

1

4

周五

0

2

1

1

4

周六

0

4

0

1

5

周日

 

 

 

 

 

周总计

4

9

3

4

20


 


时间记录日志


日期

开始时间

结束时间

中断时间

净时间

活动

备注

星期一

14:00

1550

10min

100min 

上课

软件工程

 

19:00

20:00

 

60min

看书

构建之法

星期二

19:00

23:00

10min

230min

编程、看书、查找资料

二柱子运算程序

星期三

 

 

 

 

 

 

星期四

14:00

15:50

10min

100min

上课

软件工程

 

19:00

21:00

 

120min

编程、查资料

二柱子运算程序

星期五

16:00

20:30

30min

240min

编程、看书、查找资料

二柱子运算程序

星期六

7:30

12:30

 

300min

编程,查资料

二柱子运算程序


缺陷日志


日期

编号

引入阶段

排除阶段

修复时间

修复缺陷

3.10

1

 

 

3.11

不能实现打印方式的选择

3.10

2

 

 

 

没有多元运算

3.11

3

 

 

 

不能实现括号运算


posted @ 2016-03-12 13:50  我心悦你  阅读(265)  评论(1编辑  收藏  举报