四则运算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

输出题目数量为负数时,提示出错

输入错误时提示错误并重新输入

由于程序写得不太完善,测试时出现很多问题,有待进一步的改进。

posted @ 2015-03-16 13:38  Jameslige  阅读(123)  评论(0编辑  收藏  举报