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

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

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

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

 

可正确处理;

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

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

可正确处理;

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

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

程序运行出错;

错误分析:

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

解决方法:

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

输入10.1

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

可以正常处理。

修改后完整代码:

  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 }

 

你可能感兴趣的:(四则运算)