标签:
一、设计思想
1、避免题目重复(从第二个开始,每生成一个题目,与前面所有的题目对比,不同则随机生成,相同则不产生)
2、可定制数量/打印方式(用户可通过设置题目数量n来实现定制数量,通过设置变量,用户选择来实现打印方式)
3、是否有乘除法(用户通过选择是或否实现)
数值范围(通过设置随机数的范围实现)
加减有无负数(通过判断减数与被减数的大小来实现,被减数比减数大则没负数,被减数比减数小则有负数)
除法有无余数(判断被除数是否能除尽除数)
打印中每行的间隔可调整(用户通过设置行数间隔实现)
二、源代码
#include<iostream>
#include<stdlib.h>
using namespace std;
#define MAX 10000
#include <ctime>
#include <cstdlib>
void display()
{
char q[4][2]={"+","-","*","/"};
int a,b,k,m,n,o,p;
cout<<"请输入定制数量"<<endl;
cin>>k;//定制数量
cout<<endl;
cout<<"请输入数值范围(如 10 50)"<<endl;
cin>>m>>n;
cout<<endl;//数值范围
cout<<"0.无乘除法"<<endl;
cout<<"1.有乘除法"<<endl;
cin>>o;//有无乘除 0 无 1有
if(m<n)
{
int temp=n;
n=m;
m=temp;
}
if(o!=0)
{
cout<<endl;//数值范围
cout<<"0.无余数"<<endl;
cout<<"1.有余数"<<endl;
cin>>p;//有无余数 0无 1有
}
int d[MAX][3];
srand(time(0));
for(int i=0;i<k;i++)
{
d[i][0]=rand()%(m-n)+n;
d[i][1]=rand()%(m-n)+n;
d[i][2]=rand()%(m-n)+n;
a=rand()%4;
b=rand()%4;
if(o==1)
{
a=rand()%4;
b=rand()%4;
}
else
{
a=rand()%2;
b=rand()%2;
}
if(o==0)
{
cout<<"第"<<i+1<<"道题:"<<d[i][0]<<q[a]<<d[i][1]<<q[b]<<d[i][2]<<"="<<endl;
}
else if(p==0)
{
if(((d[i][0]%d[i][1]==0&&a==3)&&(d[i][1]%d[i][2]==0&&b==3))||(d[i][0]%d[i][1]==0&&a==3)||(d[i][1]%d[i][2]==0&&b==3))
cout<<"第"<<i+1<<"道题:"<<d[i][0]<<q[a]<<d[i][1]<<q[b]<<d[i][2]<<"="<<endl;
else
i=i-1;
}
else
cout<<"第"<<i+1<<"道题:"<<d[i][0]<<q[a]<<d[i][1]<<q[b]<<d[i][2]<<"="<<endl;
}
}
int main()
{
display();
return 0;
}
三、运行结果
四、运行截图
五、总结
在这次实验,我更加了解了有想法到程序的过程,也知道代码不进行模块化程序出问题。程序仅仅实现了几个功能还不太全面。刚开始的时候没有思路,后来具体到每一个问题其实也没有那么困难。
标签:
原文地址:http://www.cnblogs.com/yanyafeng/p/4340041.html