一、代码规范重写30道四则运算
/** 作者:程鹏远 题目:30道2年纪四则运算题目 */ #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<<"="<<" "; break; case 2: if(a>b) { cout<<a<<"-"<<b<<"="<<" "; } else { cout<<b<<"-"<<a<<"="<<" "; } break; case 3: cout<<a<<"*"<<b<<"="<<" "; break; case 0://除法 if(zhengchu==1)//有余数 { if(b==0) { cout<<b<<"/"<<a<<"="<<" "; } else { cout<<a<<"/"<<b<<"="<<" "; } } else { while((j<100000)&&(a!=0)&&(b!=0)&&(a%b==0)) { cout<<a<<"/"<<b<<"="<<" "; j++; } if((a!=0)&&(b!=0)&&(a%b==0)) { cout<<a<<"/"<<b<<"="<<" "; //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<<"="<<" "; //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; }
二、单元测试项目
编写相关测试程序:源代码如下:
/** 作者:程鹏远 题目:30道2年纪四则运算题目 */ #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<<"="<<" "; break; case 2: if(s>b) { cout<<s<<"-"<<b<<"="<<" "; } else { cout<<b<<"-"<<s<<"="<<" "; } break; case 3: cout<<s<<"*"<<b<<"="<<" "; break; case 0://除法 if(a[6]==1)//有余数 { if(b==0) { cout<<b<<"/"<<s<<"="<<" "; } else { cout<<s<<"/"<<b<<"="<<" "; } } else { while((j<100000)&&(s!=0)&&(b!=0)&&(s%b==0)) { cout<<s<<"/"<<b<<"="<<" "; j++; } if((s!=0)&&(b!=0)&&(s%b==0)) { cout<<s<<"/"<<b<<"="<<" "; //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<<"="<<" "; //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)数据范围如果前边的数大于后边的数:结果是要求用户充新输入,并提示第一个数应该小于第二个数。如果用户重新输入正确的数,会得到正确的结果;
题目数量不能超过数据范围,超过会重复;结果要求用户重新输入,并提示应输入一个小点的书。如果用户重新输入正确的数,会得到正确的结果;
间距不能太大,否则影响做题,不能为负数;结果要求用户重新输入,并提示相关信息。如果用户重新输入正确的输,会得到正确的结果;
测试结果正确,如下截图:
经以上结果可以看出,基本满足用户的功能要求。