代码规范:
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
//初始化
int a,b,c;
int num1,num2;
int num;
int chufa;
int k,jiange;
int zhengchu;
int j=0;
int chengfa;
int con;
//请输入数的范围,中间用空格隔开:
cout<<"请输入数的范围,中间用空格隔开:";
cin>>num1>>num2;
if(num1>num2)
{
cout<<"第一个数应该小于第二个数,请重输:";
cin>>num1>>num2;
}
//控制题目的个数,num
cout<<"其输入要出多少道题目:";
cin>>num;
if(num>(4*(num2-num1)^2))
{
cout<<"您输入的题目数量太多,会造成重复,请重新输入数目:";
cin>>num;
}
//打印格式
cout<<"一行几道题,行间距是几,中间空格:";
cin>>k>>jiange;
if(jiange>=5||jiange<0)
{
cout<<"您输入的间距太大或为负数,请重输:";
cin>>jiange;
}
//是否要除法
cout<<"是否要除法?是输入1,否输入0:";
cin>>chufa;
if(chufa==1)
{
cout<<"是否要有余数,是输入1,否输0:";
cin>>zhengchu;
}
//是否要乘法
cout<<"是否要乘法,是输入1,否输入0:";
cin>>chengfa;
cout<<endl;
for(int i=0;i<num;i++)
{
cout<<i+1<<"、";
a=(rand()%(num2-num1+1))+num1;
b=(rand()%(num2-num1+1))+num1;
if(chufa==1)
{
if(chengfa==1)
{
c=rand()%4;//0-3
}
else
{
c=rand()%3;//0-2
}
}
else
{
if(chengfa==1)
{
c=rand()%3+1;//1-3
}
else
{
c=rand()%2+1;//1-2
}
}
switch (c)
{
case 1:
cout<<a<<"+"<<b<<"="<<"\t";
break;
case 2:
if(a>b)
{
cout<<a<<"-"<<b<<"="<<"\t";
}
else
{
cout<<b<<"-"<<a<<"="<<"\t";
}
break;
case 3:
cout<<a<<"*"<<b<<"="<<"\t";
break;
case 0://除法
if(zhengchu==1)//有余数
{
if(b==0)
{
cout<<b<<"/"<<a<<"="<<"\t";
}
else
{
cout<<a<<"/"<<b<<"="<<"\t";
}
}
else
{
while((j<100000)&&(a!=0)&&(b!=0)&&(a%b==0))
{
cout<<a<<"/"<<b<<"="<<"\t";
j++;
}
if((a!=0)&&(b!=0)&&(a%b==0))
{
cout<<a<<"/"<<b<<"="<<"\t";
//i++;
}
else
{
int j=0;
while(j<100000)
{
a=(rand()%(num2-num1+1))+num1;
b=(rand()%(num2-num1+1))+num1;
if((a!=0)&&(b!=0)&&(a%b==0))
{
cout<<a<<"/"<<b<<"="<<"\t";
//i++;
j=100000;
j++;
}
else
{
j++;
}
}
}
}
break;
}
if((i+1)%k==0)
{
cout<<endl;
for(int m=0;m<jiange;m++)
{
cout<<endl;
}
}
}
//继续吗?
cout<<"继续吗?是输入1,否输入0:"<<endl;
cin>>con;
if(con==1)
{
cout<<endl;
main();
}
else
{
return 0;
}
getch();
return 0;
}
单元测试项目:
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
cout<<"请输入8个数据,分别表示num1,num2,num,k(一行几个),jiange,chufa,yushu,chengfa"<<endl;
//测试模块
int a[8];
for(int n=0;n<8;n++)
{
cin>>a[n];
}
//初始化
int s,b,c;
//int a[0],a[1];
//int a[2];
//int a[5];
//int a[3],a[4];
//int a[6];
int j=0;
//int a[7];
int con;
//请输入数的范围,中间用空格隔开:
//cout<<"请输入数的范围,中间用空格隔开:";
//cin>>a[0]>>a[1];
if(a[0]>a[1])
{
cout<<"第一个数应该小于第二个数,请重输:";
cin>>a[0]>>a[1];
}
//控制题目的个数,a[2]
//cout<<"其输入要出多少道题目:";
//cin>>a[2];
if(a[2]>(4*(a[1]-a[0])^2))
{
cout<<"您输入的题目数量太多,会造成重复,请重新输入数目:";
cin>>a[2];
}
else if(a[2]<=0)
{
cout<<"请输入大于0的题目数:";
cin>>a[2];
}
//打印格式
//cout<<"一行几道题,行间距是几,中间空格:";
//cin>>a[3]>>a[4];
if(a[4]>=5)
{
cout<<"您输入的间距太大,请重输:";
cin>>a[4];
}
if(a[4]<0)
{
cout<<"您输入的间距为负数,请重输:";
cin>>a[4];
}
//是否要除法
//cout<<"是否要除法?是输入1,否输入0:";
//cin>>a[5];
//cout<<"是否要有余数,是输入1,否输0:";
//cin>>a[6];
//是否要乘法
//cout<<"是否要乘法,是输入1,否输入0:";
//cin>>a[7];
cout<<endl;
for(int i=0;i<a[2];i++)
{
cout<<i+1<<"、";
s=(rand()%(a[1]-a[0]+1))+a[0];
b=(rand()%(a[1]-a[0]+1))+a[0];
if(a[5]==1)
{
if(a[7]==1)
{
c=rand()%4;//0-3
}
else
{
c=rand()%3;//0-2
}
}
else
{
if(a[7]==1)
{
c=rand()%3+1;//1-3
}
else
{
c=rand()%2+1;//1-2
}
}
switch (c)
{
case 1:
cout<<s<<"+"<<b<<"="<<"\t";
break;
case 2:
if(s>b)
{
cout<<s<<"-"<<b<<"="<<"\t";
}
else
{
cout<<b<<"-"<<s<<"="<<"\t";
}
break;
case 3:
cout<<s<<"*"<<b<<"="<<"\t";
break;
case 0://除法
if(a[6]==1)//有余数
{
if(b==0)
{
cout<<b<<"/"<<s<<"="<<"\t";
}
else
{
cout<<s<<"/"<<b<<"="<<"\t";
}
}
else
{
while((j<100000)&&(s!=0)&&(b!=0)&&(s%b==0))
{
cout<<s<<"/"<<b<<"="<<"\t";
j++;
}
if((s!=0)&&(b!=0)&&(s%b==0))
{
cout<<s<<"/"<<b<<"="<<"\t";
//i++;
}
else
{
int j=0;
while(j<100000)
{
s=(rand()%(a[1]-a[0]+1))+a[0];
s=(rand()%(a[1]-a[0]+1))+a[0];
if((s!=0)&&(b!=0)&&(s%b==0))
{
cout<<s<<"/"<<b<<"="<<"\t";
//i++;
j=100000;
j++;
}
else
{
j++;
}
}
}
}
break;
}
if((i+1)%a[3]==0)
{
cout<<endl;
for(int m=0;m<a[4];m++)
{
cout<<endl;
}
}
}
//继续吗?
cout<<"继续吗?是输入1,否输入0:"<<endl;
cin>>con;
if(con==1)
{
cout<<endl;
main();
}
else
{
return 0;
}
getch();
return 0;
}
1.测试结果是否正确:
有三种情况:(1)数据是:0 900 90 4 0 1 1 1;其意义是显示0-900之间不重复的每行4个间距为0的90道有加减乘除(除法有余数)的四则运算题,结果正确 如截图
(2)数据是:0 900 80 5 1 1 0 1;其意义是显示0-900之间不重复的每行5个间距为1的80道有加减乘除(除法无余数)的四则运算题,结果正确 如截图
(3)数据是:0 900 80 4 0 0 0 0;其意义是显示0-900之间不重复的每行4个间距为0的80道有加减无乘除的四则运算题,结果正确 如截图
2.边界值测试:
(1)数据范围如果前边的数大于后边的数:结果是要求用户充新输入,并提示第一个数应该小于第二个数。如果用户重新输入正确的数,会得到正确的结果;
题目数量不能超过数据范围,超过会重复;结果要求用户重新输入,并提示应输入一个小点的书。如果用户重新输入正确的数,会得到正确的结果;
间距不能太大,否则影响做题,不能为负数;结果要求用户重新输入,并提示相关信息。如果用户重新输入正确的输,会得到正确的结果;
测试结果正确,如下截图: