定制题目数量这个功能测试:
(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<<"="<<" ";
60 break;
61 case 1:
62 if(Ques7=='y')
63 {
64 cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<" ";
65 }
66 else
67 {
68 if(num1>num2)
69 {
70 cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<" ";
71 }
72 else
73 {
74 cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<" ";
75 }
76 }
77 break;
78 case 2:
79 cout<<j+1<<":"<<" "<<num1<<"*"<<num2<<"="<<" ";
80 break;
81 case 3:
82 if(num2!=0)
83 {
84 cout<<j+1<<":"<<" "<<num1<<"/"<<num2<<"="<<" ";
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<<"="<<" ";
126 break;
127 case 1:
128 if(Ques7=='y')
129 {
130 cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<" ";
131 break;
132 }
133 else
134 {
135 if(num1>num2)
136 {
137 cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<" ";
138 break;
139 }
140 else
141 {
142 cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<" ";
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 }