一、设计思想
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;}三、运行结果
四、运行截图
五、总结
在这次实验,我更加了解了有想法到程序的过程,也知道代码不进行模块化程序出问题。程序仅仅实现了几个功能还不太全面。刚开始的时候没有思路,后来具体到每一个问题其实也没有那么困难。