一、设计思路
1.题目避免重复:
可以定义三个数组,第二道题的第一个数,第二个数,运算符不能与第一道题完全一样,第三道题不能与第二道题,第一道题一样,以此类推。
2.可定制(数量/打印方式)
数量可以从键盘输入,打印方式可以调整各题之间的间距或者直接换行。
3.控制参数,由用户的意愿进行选择,先设置用户选择(0,1),程序用判断语句获得用户的意愿,添加进相应的题目。
二、源代码
#include<iostream.h>
#include<stdlib.h>
int a[100],b[100],c[100];
int i;
void Display(int f)
{
if(f==0)
{
if(c[i]==0)
cout<<a[i]<<‘+‘<<b[i]<<‘=‘<<endl;
if(c[i]==1)
cout<<a[i]<<‘-‘<<b[i]<<‘=‘<<endl;
if(c[i]==2)
cout<<a[i]<<‘*‘<<b[i]<<‘=‘<<endl;
if(c[i]==3)
cout<<a[i]<<‘/‘<<b[i]<<‘=‘<<endl;
}
else
{
if(c[i]==0)
cout<<a[i]<<‘+‘<<b[i]<<‘=‘<<‘\t‘;
if(c[i]==1)
cout<<a[i]<<‘-‘<<b[i]<<‘=‘<<‘\t‘;
if(c[i]==2)
cout<<a[i]<<‘*‘<<b[i]<<‘=‘<<‘\t‘;
if(c[i]==3)
cout<<a[i]<<‘/‘<<b[i]<<‘=‘<<‘\t‘;
if((i+1)%4==0)
cout<<endl;
}
}
int main()
{
int j,k,t;
int m,n,o,d,e,f;
cout<<"请选择是否有乘除法:(0为是,1为否)"<<endl;
cin>>m;
cout<<"请输入取值范围:(0-?)"<<endl;
cin>>n;
cout<<"请选择加减有无负数:(0为有,1为无)"<<endl;
cin>>o;
if(m==0)
{
cout<<"请选择除法有无余数:(0为有,1为无)"<<endl;
cin>>d;
}
cout<<"请输入题目个数:"<<endl;
cin>>e;
cout<<"请选择打印方式:(0为逐行打印,1为节省空间打印)"<<endl;
cin>>f;
for(i=0;i<e;i++)
{
a[i]=rand()%n;
b[i]=rand()%n;
c[i]=rand()%4;
for(j=0;j<i;j++)
if(a[j]==a[i]&&b[j]==b[i]&&c[j]==c[i])
a[i]++;
if(m==0&&o==0&&d==0)
{
Display(f);
}
else if(m==1)
{
if(c[i]>=2)
c[i]=c[i]-2;
Display(f);
}
else if(m==0&&o==1&&d==0)
{
if(a[i]<b[i])
{
t=a[i];
a[i]=b[i];
b[i]=t;
}
Display(f);
}
else
{
if(c[i]==3)
{
if(a[i]<b[i])
{
t=a[i];
a[i]=b[i];
b[i]=t;
}
while(a[i]%b[i]!=0)
b[i]++;
}
Display(f);
}
}
return 0;
}
三、运行结果
四、错误原因
1.刚开始未能把三个数组以及变量i定义为全局变量,导致在Display函数中,无法把主函数中的值传到其他函数中;
2.功能是一点一点添加进去的,刚开始忘了把打印方式功能添加进去了,后来想起来又添加的;
3.除法没有余数,必然被除数要大于或等于除数,为了减少工作量,没有涉及既有负数又没有余数的题目。