1.实验题目:
让程序能接受用户输入答案,并判定对错。最后给出总共对/错 的数量。
2.设计思路:
定义两个数组,把计算结果存入其中一个,把用户自己写的答案存入另一个数组,比较是否相等,从而求出正确与错误题目的个数。
3.源代码:
1 #include<iostream.h> 2 #include<stdlib.h> 3 #include<time.h> 4 void choice2(); 5 void create(int m,int n){ 6 int a,b,c; 7 a=rand()%n; 8 b=rand()%n; 9 c=rand()%m; 10 switch(c){ 11 case 0: 12 cout<<a<<"+"<<b<<"="<<endl; 13 break; 14 case 1: 15 if(a>b) 16 { 17 cout<<a<<"-"<<b<<"="<<endl; 18 } 19 else 20 { 21 cout<<b<<"-"<<a<<"="<<endl; 22 } 23 break; 24 case 2: 25 cout<<a<<"*"<<b<<"="<<endl; 26 break; 27 case 3: 28 if(b!=0) 29 { 30 cout<<a<<"/"<<b<<"="<<endl; 31 } 32 else 33 { 34 cout<<"这道题有误!"<<endl; 35 } 36 break; 37 } 38 } 39 void caidan() 40 { 41 cout<<"----四则运算2-----"<<endl; 42 cout<<"1. 定制出题数量"<<endl; 43 cout<<"2. 出题打印"<<endl; 44 cout<<"3. 退出菜单"<<endl; 45 } 46 void caidan2() 47 { 48 cout<<"----四则运算2----"<<endl; 49 cout<<"1. 乘除法选择"<<endl; 50 cout<<"2. 数值范围选择"<<endl; 51 cout<<"3. 余数有无选择"<<endl; 52 cout<<"4. 打印间隔选择"<<endl; 53 cout<<"5. 退出菜单"<<endl; 54 } 55 void choice() 56 { 57 int xuanze,num; 58 caidan(); 59 cout<<"输入您的选择:"<<endl; 60 cin>>xuanze; 61 while(xuanze!=3) 62 { 63 switch(xuanze) 64 { 65 case 1: 66 cout<<"请输入您想定制的数量:"<<endl; 67 cin>>num; 68 caidan(); 69 cin>>xuanze; 70 break; 71 case 2: 72 cout<<"出题打印!"<<endl; 73 choice2(); 74 break; 75 default: 76 cout<<"输入有误!请重新输入!"<<endl; 77 caidan(); 78 cin>>xuanze; 79 break; 80 } 81 } 82 } 83 void choice2() 84 { 85 int key,k1,k2,k3,k4,num,k,a,b,c; 86 int count1=0; 87 int count2=0; 88 int jg; 89 int ans; 90 caidan2(); 91 cout<<"请输入您的选择:"<<endl; 92 cin>>key; 93 while(key) 94 { 95 switch(key) 96 { 97 case 1: 98 cout<<"请输入0或1(0代表有乘除,1代表无乘除!)"<<endl; 99 cin>>k1; 100 if(k1==0) 101 { 102 cout<<"请输入你想定制的数量:"<<endl; 103 cin>>num; 104 for(int i=0;i<num;i++) 105 { 106 int n=100; 107 int m=4; 108 a=rand()%n; 109 b=rand()%n; 110 c=rand()%m; 111 switch(c){ 112 case 0: 113 { 114 cout<<i<<")"<<a<<"+"<<b<<"="<<endl; 115 jg=a+b; 116 cout<<"输入你想的答案:"<<endl; 117 cin>>ans; 118 if(ans==jg){ 119 cout<<"正确!"<<endl; 120 count1++; 121 } 122 else{ 123 cout<<"错误!"<<endl; 124 count2++; 125 } 126 } 127 break; 128 case 1: 129 if(a>b) 130 { 131 cout<<i<<")"<<a<<"-"<<b<<"="<<endl; 132 jg=a-b; 133 cout<<"输入你想的答案:"<<endl; 134 cin>>ans; 135 if(ans==jg){ 136 cout<<"正确!"<<endl; 137 count1++; 138 } 139 else{ 140 cout<<"错误!"<<endl; 141 count2++; 142 } 143 } 144 else 145 { 146 cout<<i<<")"<<b<<"-"<<a<<"="<<endl; 147 jg=b-a; 148 cout<<"输入你想的答案:"<<endl; 149 cin>>ans; 150 if(ans==jg){ 151 cout<<"正确!"<<endl; 152 count1++; 153 } 154 else{ 155 cout<<"错误!"<<endl; 156 count2++; 157 } 158 } 159 break; 160 case 2: 161 { 162 cout<<i<<")"<<a<<"*"<<b<<"="<<endl; 163 jg=a*b; 164 cout<<"输入你想的答案:"<<endl; 165 cin>>ans; 166 if(ans==jg){ 167 cout<<"正确!"<<endl; 168 count1++; 169 } 170 else{ 171 cout<<"错误!"<<endl; 172 count2++; 173 } 174 } 175 break; 176 case 3: 177 if(b!=0) 178 { 179 cout<<i<<")"<<a<<"/"<<b<<"="<<endl; 180 jg=a/b; 181 cout<<"输入你想的答案:"<<endl; 182 cin>>ans; 183 if(ans==jg){ 184 cout<<"正确!"<<endl; 185 count1++; 186 } 187 else{ 188 cout<<"错误!"<<endl; 189 count2++; 190 } 191 } 192 else 193 { 194 cout<<"这道题有误!"<<endl; 195 } 196 break; 197 198 199 cout<<"答对共"<<count1<<"题"<<endl; 200 cout<<"答错共"<<count2<<"题"<<endl; 201 } 202 } 203 cout<<"答对共"<<count1<<"题"<<endl; 204 cout<<"答错共"<<count2<<"题"<<endl; 205 } 206 207 208 else if(k1==1) 209 { 210 cout<<"请输入你想定制的数量:"<<endl; 211 cin>>num; 212 for(int i=0;i<num;i++){ 213 create(2,100); 214 } 215 } 216 else 217 { 218 cout<<"输入有误!请重输:"<<endl; 219 cin>>k1; 220 } 221 caidan2(); 222 cin>>key; 223 break; 224 case 2: 225 { 226 cout<<"请输入出题数值范围(数值范围默认100以内)"<<endl; 227 cin>>k2; 228 cout<<"请输入你想定制的数量:"<<endl; 229 cin>>num; 230 for(int i=0;i<num;i++){ 231 create(4,k2); 232 } 233 caidan2(); 234 cin>>key; 235 break; 236 } 237 case 3: 238 cout<<"请输入0或1(0代表有余数,1代表无余数!)"<<endl; 239 cin>>k3; 240 241 if(k3==0) 242 { 243 cout<<"请输入出题数值范围(数值范围默认100以内)"<<endl; 244 cin>>k2; 245 cout<<"请输入你想定制的数量:"<<endl; 246 cin>>num; 247 int a=rand()%k2; 248 int b=rand()%k2; 249 250 if(a%b==0) 251 { 252 srand(time(NULL)); 253 a=rand()%k2; 254 b=rand()%k2; 255 for(int i=0;i<num;i++){ 256 create(4,k2);} 257 } 258 else 259 { 260 for(int i=0;i<num;i++){ 261 create(4,k2);} 262 } 263 } 264 else if(k3==1) 265 { 266 cout<<"请输入出题数值范围(数值范围默认100以内)"<<endl; 267 cin>>k2; 268 cout<<"请输入你想定制的数量:"<<endl; 269 cin>>num; 270 int a=rand()%k2; 271 int b=rand()%k2; 272 273 if(a%b==0) 274 { 275 srand(time(NULL)); 276 a=rand()%k2; 277 b=rand()%k2; 278 for(int i=0;i<num;i++){ 279 create(4,k2);} 280 } 281 else 282 { 283 for(int i=0;i<num;i++){ 284 create(4,k2);} 285 } 286 } 287 caidan2(); 288 cin>>key; 289 break; 290 case 4: 291 { 292 cout<<"请输入您想打印时的间隔:"<<endl; 293 cin>>k4; 294 cout<<"请输入你想定制的数量:"<<endl; 295 cin>>num; 296 for(int i=0;i<num;i++) 297 { 298 create(4,100); 299 for(int j=0;j<k4;j++) 300 { 301 cout<<" "; 302 } 303 } 304 caidan2(); 305 break; 306 } 307 case 5: 308 exit(1); 309 default: 310 cout<<"输入有误!请重新输入!"<<endl; 311 caidan2(); 312 cin>>key; 313 break; 314 } 315 } 316 } 317 void main() 318 { 319 int xuanze; 320 choice(); 321 if(xuanze==2) 322 { 323 choice2(); 324 } 325 }
4.结果截图:


5.实验总结:
程序本身存在一些不足,但我相信用户使用起来效果应该不错。对于界面化的实现,日后还应该更加努力吧。
6.psp:



