四则运算出题器(C++)-BUG修复

定制题目数量这个功能测试:

1)输入题目数为负数时:

 

可正确处理;

2)输入题目数量为0时:

可正确处理;

(3)输入题目数量为小数时:

程序运行出错;

错误分析:

因为代码中题目数量的变量Ques1定义为int类型,无法处理小数。

解决方法:

Ques1定义为double类型,然后使用floor()函数,将Ques1取整。

输入10.1

可以正常处理。

修改后完整代码:

  1 #include<iostream.h>
  2 #include<stdlib.h>
  3 #include<time.h>
  4 #include<math.h>
  5 int main()
  6 {
  7     double Ques1=1;
  8     int Ques01;
  9     int Ques2=1;
 10     int Ques3=100;
 11     char Ques4='y';
 12     int Ques5=1;
 13     char Ques6='n';
 14     char Ques7='n';
 15 Again:
 16     cout<<"请输入题目数量:";
 17     cin>>Ques1;
 18     Ques01=floor(Ques1);
 19     cout<<"请输入每行打印题目数(1-5):";
 20     cin>>Ques2;
 21     cout<<"请输入算式中数值的最大值:";
 22     cin>>Ques3;
 23     while(1)
 24     {
 25         cout<<"运算中需要乘除法吗?y:需要;n:不需要";
 26         cin>>Ques4;
 27         cout<<"减法运算需要有负数吗?y:需要;n:不需要";
 28         cin>>Ques7;
 29         cout<<"行间距(正整数):";
 30         cin>>Ques5;
 31         srand(time(NULL));
 32         if(Ques4=='y')
 33         {
 34             while(1)
 35             {
 36                 if(Ques1<1)
 37                 {
 38                     cout<<"输入有误,请重新输入题目数量:";
 39                     cin>>Ques1;
 40                     Ques01=floor(Ques1);
 41                 }
 42                 else
 43                 {
 44                     for(int j=0;j<Ques01;j++)
 45                     {
 46                         if(j!=0&&j%Ques2==0)
 47                         {
 48                             for(int i=0;i<Ques5;i++)
 49                             {
 50                                 cout<<endl;
 51                             }        
 52                         }
 53                         int num1=rand()%Ques3;
 54                         int num2=rand()%Ques3;
 55                         int sign=rand()%4;
 56                         switch(sign)
 57                         {
 58                         case 0:
 59                             cout<<j+1<<":"<<" "<<num1<<"+"<<num2<<"="<<"\t";
 60                             break;
 61                         case 1:
 62                             if(Ques7=='y')
 63                             {
 64                                 cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"\t";
 65                             }
 66                             else
 67                             {
 68                                 if(num1>num2)
 69                                 {
 70                                     cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"\t";
 71                                 }
 72                                 else
 73                                 {
 74                                     cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<"\t";
 75                                 }
 76                             }
 77                             break;
 78                         case 2:
 79                             cout<<j+1<<":"<<" "<<num1<<"*"<<num2<<"="<<"\t";
 80                             break;
 81                         case 3:
 82                             if(num2!=0)
 83                             {
 84                                 cout<<j+1<<":"<<" "<<num1<<"/"<<num2<<"="<<"\t";
 85                             }
 86                             else
 87                             {
 88                                 j--;
 89                             }
 90                             break;
 91                         }
 92                     }
 93                     break;
 94                 }
 95             }
 96             break;
 97         }
 98         if(Ques4=='n')
 99         {
100             while(1)
101             {
102                 if(Ques01<1)
103                 {
104                     cout<<"输入有误,请重新输入题目数量:";
105                     cin>>Ques1;
106                     Ques01=floor(Ques1);
107                 }
108                 else
109                 {
110                     for(int j=0;j<Ques01;j++)
111                     {
112                         if(j!=0&&j%Ques2==0)
113                         {
114                             for(int i=0;i<=Ques5;i++)
115                             {
116                                 cout<<endl;
117                             }
118                         }
119                         int num1=rand()%Ques3;
120                         int num2=rand()%Ques3;
121                         int sign=rand()%2;
122                         switch(sign)
123                         {
124                         case 0:
125                             cout<<j+1<<":"<<" "<<num1<<"+"<<num2<<"="<<"\t";
126                             break;
127                         case 1:
128                             if(Ques7=='y')
129                             {
130                                 cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"\t";
131                                 break;
132                             }
133                             else
134                             {
135                                 if(num1>num2)
136                                 {
137                                     cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"\t";
138                                     break;
139                                 }
140                                 else
141                                 {
142                                     cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<"\t";
143                                     break;
144                                 }
145                             }
146                             break;
147                         }
148                     }
149                 }
150                 break;
151             }
152             break;
153         }
154         
155         else
156         {
157             cout<<"输入有误,请按要求输入!"<<endl;
158         }
159     }
160     cout<<endl;
161     while(1)
162     {
163         cout<<"还需要继续出题还是退出?(y:继续出题;n:退出)";
164         cin>>Ques6;
165         if(Ques6=='y')
166         {
167             goto Again;
168         }
169         if(Ques6=='n')
170         {
171             goto Exit;
172         }
173         else
174         {
175             cout<<"输入有误,请重新输入:";
176         }
177     }
178 Exit:
179     return 0;
180 }

 

posted on 2015-03-16 15:52  梁世豪  阅读(218)  评论(0编辑  收藏  举报

导航