四则运算2单元测试
1 #include<iostream.h> 2 #include<stdlib.h> 3 #include<time.h> 4 void display(int number,int l,int mul,int num,int neg,int remainder)//打印方式控制输出列数 5 { 6 int a[1000],b[1000],c[1000]; 7 int m;//控制题目避免重复 8 int t;//中间变量 9 for(int i=0;i<number;i++)//随机两个生成运算操作数 10 { 11 m=1;//初始化 12 a[i]=rand()%num; 13 b[i]=rand()%num; 14 if(mul==0)//没有乘除法 15 { 16 c[i]=rand()%2;//随机生成0-1的数字,分别表示加减 17 } 18 else if(mul==1)//有乘除法 19 { 20 c[i]=rand()%4;//随机生成0-3的数字,分别表示加减乘 21 } 22 for(int j=0;j<i;j++) 23 { 24 if(a[j]==a[i]&&b[j]==b[i]&&c[j]==c[i])//比较新生成的操作数与原来的是否相同 25 { 26 i=i-1; 27 m=0; 28 } 29 } 30 while(m)//若不同则输出 31 { 32 switch(c[i]) 33 { 34 case 0: 35 cout<<a[i]<<"+"<<b[i]<<"=";break; 36 case 1: 37 if(neg==0)//减法没有负数 38 { 39 if(a[i]<b[i]) 40 { 41 t=a[i]; 42 a[i]=b[i]; 43 b[i]=t; 44 } 45 cout<<a[i]<<"-"<<b[i]<<"=";break; 46 } 47 else if(neg==1)//减法有负数 48 { 49 cout<<a[i]<<"-"<<b[i]<<"=";break; 50 } 51 case 2: 52 cout<<a[i]<<"*"<<b[i]<<"=";break; 53 case 3: 54 if(b[i]==0)//分母为零则不计入总数 55 { 56 i=i-1;break; 57 } 58 else if(remainder==0)//除法没有余数 59 { 60 if(a[i]%b[i]==0) 61 { 62 cout<<a[i]<<"/"<<b[i]<<"=";break; 63 } 64 else 65 { 66 i=i-1;break; 67 } 68 } 69 else if(remainder==1)//除法有余数 70 { 71 if(a[i]%b[i]!=0) 72 { 73 cout<<a[i]<<"/"<<b[i]<<"=";break; 74 } 75 else 76 { 77 i=i-1;break; 78 } 79 } 80 } 81 if((i+1)%l==0) 82 { 83 cout<<endl; 84 } 85 else 86 { 87 cout<<"\t"; 88 } 89 break;//跳出循环 90 } 91 } 92 } 93 void main() 94 { 95 int number;//题目数量 96 int l;//输出的列数 97 int mul;//乘除法 98 int num;//数值范围 99 int neg;//负数 100 int remainder;//余数 101 int c;//循环变量 102 while(c) 103 { 104 srand((unsigned) time(NULL));//调用随机函数发生器 105 cout<<"---------------------------------"<<endl; 106 cout<<"| 四则运算 |"<<endl; 107 cout<<"---------------------------------"<<endl; 108 cout<<"请输入要打印的题目数量:"<<endl; 109 cin>>number; 110 while(number<0) 111 { 112 cout<<"输入错误!"<<endl; 113 cout<<"请输入要打印的题目数量:"<<endl; 114 cin>>number; 115 } 116 cout<<"请输入要输出的列数(1-10):"<<endl; 117 cin>>l; 118 cout<<"是否有乘除法(0表示没有;1表示有)"<<endl; 119 cin>>mul; 120 while(mul!=0&&mul!=1) 121 { 122 cout<<"输入错误,请重新输入!是否有乘除法(0表示没有;1表示有)"<<endl; 123 cin>>mul; 124 } 125 if(mul==1) 126 { 127 cout<<"除法有无余数(0表示没有;1表示有)"<<endl; 128 cin>>remainder; 129 while(remainder!=0&&remainder!=1) 130 { 131 cout<<"输入错误,请重新输入!除法有无余数(0表示没有;1表示有)"<<endl; 132 cin>>remainder; 133 } 134 } 135 /* 136 switch(mul) 137 { 138 default: 139 { 140 cout<<"输入错误,请重新输入!是否有乘除法(0表示没有;1表示有)"<<endl; 141 cin>>mul; 142 } 143 break; 144 case 0:break; 145 case 1: 146 { 147 cout<<"除法有无余数(0表示没有;1表示有)"<<endl; 148 cin>>remainder; 149 switch(remainder) 150 { 151 default: 152 { 153 cout<<"输入错误,请重新输入!除法有无余数(0表示没有;1表示有)"<<endl; 154 cin>>remainder; 155 } 156 break; 157 case 0:break; 158 case 1:break; 159 } 160 }break; 161 } 162 */ 163 cout<<"请输入正整数的数值范围(即最大数):"<<endl; 164 cin>>num; 165 cout<<"减法有无负数(0表示没有;1表示有)"<<endl; 166 cin>>neg; 167 while(neg!=0&&neg!=1) 168 { 169 cout<<"输入错误,请重新输入!"<<endl; 170 cout<<"减法有无负数(0表示没有;1表示有)"<<endl; 171 cin>>neg; 172 } 173 display(number,l,mul,num,neg,remainder); 174 cout<<"继续请输入1,退出请输入0"<<endl; 175 cin>>c; 176 } 177 }
测试截图:
输入正确时:20 2 1 1 100 1
输入200 20 1 1 200 1
此时由于页面大小限制,将不能在输出所输入的列数
输入字母时:a
输入10000 10 2 0 190 1 可能超出范围了,程序运行最后会报错。停止运行。。。
输入20 4 2 1 0 100 1
输出题目数量为负数时,提示出错
输入错误时提示错误并重新输入
由于程序写得不太完善,测试时出现很多问题,有待进一步的改进。