标签:
设计思路:
1、避免重复:输出时,确定了运算符号,两个运算数都相同时,重新随机产生操作数,再循环重新产生式子。
2、是否有乘除法:选择了有乘除法,则无需修改;无乘除法,则随机产生的运算符号中就去除产生乘除的数字的可能。
3、数值范围:在菜单中可选择100以内的选项,可在产生随机数中确定两个运算数的范围。
4、加减有无负数:若选择有负数,则无需修改;若选择无负数,则当运算符号为减号时,要判断第一个运算数是否比第二个大,是,则可以,否则,交换两个数。
5、除法有无余数:可以有余数,则无需修改;要求无余数,则进行除法时,计算结果,若有余数,重新产生,用循环进行。
源代码:
#include<iostream>
#include<ctime>
#define N 1000 using namespace std;
void main()
{
int a,b,x,y,z,n,m,u,t,l,d; int j[N],c[N],k[N];
srand((unsigned)time(0));
d=rand()%30+1; n=rand()%d+1;
z=rand()%4; cout<<"添加乘除法请输入0,反之输入1 :"<<endl;
cin>>m;
cout<<"请输入取值范围最大值:"<<endl; cin>>u; cout<<"加减有负数请输入0,反之输入1 :"<<endl;
cin>>t;
cout<<"除法有余数请输入0,反之输入1 :"<<endl;
cin>>l;
cout<<"请输入定制题目数量 :"<<endl;
cin>>d;
cout<<"题目:"<<endl;
for(int i=1;i<=n;i++)
{
a=rand()%u+1;
b=rand()%u+1;
z=rand()%4;
j[i]=a;
c[i]=b;
k[i]=z;
for(int h=i-1;h>0;h--)
{
if(j[h]==j[i]&&c[h]==c[i]&&k[h]==k[i])
{ a=rand()%u+1;
b=rand()%u+1;
z=rand()%4;
}
}
if(m==1)
{
if(z==0)
cout<<a<<"+"<<b<<"="<<endl;
else if(z==1)
{
if(t==0)
cout<<a<<"-"<<b<<"="<<endl;
else
{
int o;
if(a>b)
cout<<a<<"-"<<b<<"="<<endl;
else
{
o=a;
a=b;
b=o;
cout<<a<<"-"<<b<<"="<<endl;
}
}
}
}
else if(m==0)
{
if(z==0)
cout<<a<<"+"<<b<<"="<<endl;
else if(z==1)
{
if(t==0)
cout<<a<<"-"<<b<<"="<<endl;
else
{
if(a>b)
cout<<a<<"-"<<b<<"="<<endl;
else
{
int o;
if(a>b)
cout<<a<<"-"<<b<<"="<<endl;
else
{
o=a;
a=b;
b=o;
cout<<a<<"-"<<b<<"="<<endl;
}
}
}
}
else if(z==2)
cout<<a<<"*"<<b<<"="<<endl;
else if(z==3)
{
if(b==0)
{
b=rand()%u+1;
if(l==1)
{
if(a%b!=0)
cout<<a-a%b+b<<"/"<<b<<"="<<endl;
else
cout<<a<<"/"<<b<<"="<<endl;
}
}
else
cout<<a<<"/"<<b<<"="<<endl;
}
}
}
for(int i=1;i<=d-n;i++)
{
a=rand()%u;
b=rand()%u+2;
x=rand()%u;
y=rand()%u+2;
z=rand()%4;
if(a<b)
{
int q;
q=a;
a=b;
b=q;
}
for(int w=b;w>=1;w--)
{
if(a%w==0&&b%w==0)
{ a=a/w;
b=b/w;
break;
}
}
if(x<y)
{
int q; q=x; x=y; y=q;
}
for(int e=y;e>=1;e--)
{
if(x%e==0&&y%e==0)
{
x=x/e;
y=y/e;
break;
}
}
if(m==1)
{
if(z==0)
cout<<"("<<a<<"/"<<b<<")"<<"+"<<"("<<x<<"/"<<y<<")"<<"="<<endl;
else if(z==1)
cout<<"("<<a<<"/"<<b<<")"<<"-"<<"("<<x<<"/"<<y<<")"<<"="<<endl;
} if(m==0)
{
if(z==0)
cout<<"("<<a<<"/"<<b<<")"<<"+"<<"("<<x<<"/"<<y<<")"<<"="<<endl;
else if(z==1)
cout<<"("<<a<<"/"<<b<<")"<<"-"<<"("<<x<<"/"<<y<<")"<<"="<<endl;
else if(z==2)
cout<<"("<<a<<"/"<<b<<")"<<"*"<<"("<<x<<"/"<<y<<")"<<"="<<endl;
else if(z==3)
{
if(x==0)
{
x=rand()%u+1;
cout<<"("<<a<<"/"<<b<<")"<<"/"<<"("<<x<<"/"<<y<<")"<<"="<<endl;
}
else
cout<<"("<<a<<"/"<<b<<")"<<"/"<<"("<<x<<"/"<<y<<")"<<"="<<endl;
}
}
}
}
周活动总结表姓名:杨国力 日期:19/3/2016
日期/任务 | 听课 | 编程 | 阅读课本 | 准备考试 | 日总计 | ||
周日 | 0 | 0 | 0 | 0 | 0 | ||
周一 | 120 | 60 | 30 | 0 | 210 | ||
周二 | 0 | 60 | 30 | 0 | 90 | ||
周三 | 0 |
60 |
0 | 0 | 60 | ||
周四 | 0 | 0 | 0 | 0 | 0 | ||
周五 | 0 | 0 | 0 | 0 | 0 | ||
周六 | 0 | 60 | 0 | 0 | 60 | ||
周总计 | 120 | 240 | 60 | 0 |
420 |
学生:杨国力 日期:2016.3.19教师:王建明 课程:软件工程概论
日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 | C | U |
3.14 | 8:00 | 9:50 | 10 | 100 | 听课 | 休息 | ||
14:00 | 14:20 | 0 | 20 | 阅读 | ||||
3.15 | 15:00 | 16:25 | 25 | 60 | 编程 | 上厕所.休息 | ||
17:00 | 17:30 | 0 | 30 | 阅读 | ||||
3.16 | 15:00 | 16:10 | 10 | 60 | 编程 | |||
3.19 | 15:00 | 15:40 | 10 | 30 | 编程 | 上厕所 | ||
17:00 | 17:30 | 30 | 编程 | |||||
3.14 | 14:30 | 15:30 | 0 | 60 | 编程 | |||
16:00 | 16:30 | 0 | 30 | 阅读 | ||||
标签:
原文地址:http://www.cnblogs.com/ygl888/p/5296617.html