个人项目3
二柱子将做好的项目交给了老师,几天后又得到新的需求:
1、实现在线答题;
2、答题结束后,可以判断对错;
3、并将错题的结果保存起来。
设计思路:
题目数量:单独赋值到Q1,用srand(time(NULL));来进行循环,用来选择公式。
数据范围:将Q3放在rand后面来控制范围大小。
乘除法与加减法:当为s时,则为加减乘除,为b时则为加减法。
负数:分为case1和case2进行分析,z1和z2进行加减。Y则直接加减,N则进行调换。
判断正错:则由right++和Q01-right分别进行判断。
源代码:
1 #include<iostream> 2 #include<stdarg.h> 3 #include<stdlib.h> 4 #include<time.h> 5 #include<math.h> 6 using namespace std; 7 int main() 8 { 9 cout<<endl; 10 cout<<"四则运算在线答题"<<endl; 11 cout<<endl; 12 cout<<endl; 13 Again: 14 double Q1=1; 15 int Q01; 16 int Q2=1; 17 int Q3=100; 18 char Q4='y'; 19 int Q5=1; 20 char Q6='n'; 21 char Q7='n'; 22 double ans=0; 23 int right=0; 24 cout<<" 输入题目数量:"; 25 cin>>Q1; 26 Q01=floor(Q1); 27 // cout<<"输入每行打印题目数(1-5):"; 28 // cin>>Q2; 29 cout<<" 每行间距(正整数):"; 30 cin>>Q5; 31 cout<<" 请输入算式中数值的最大值:"; 32 cin>>Q3; 33 while(1) 34 { 35 cout<<" 运算中需要乘除法吗?需要:s;不需要:b"; 36 cin>>Q4; 37 cout<<" 减法中需要有负数吗?需要:s;不需要:b"; 38 cin>>Q7; 39 cout<<"-------------------------------------------------------------------------"<<endl; 40 cout<<"开始进行答题:"<<endl; 41 srand(time(NULL)); 42 if(Q4=='s') 43 { 44 while(1) 45 { 46 if(Q1<1) 47 { 48 cout<<"有误,请重新输入题目数量:"; 49 cin>>Q1; 50 Q01=floor(Q1); 51 } 52 else 53 { 54 for(int j=0;j<Q01;j++) 55 { 56 if(j!=0&&j%Q2==0) 57 { 58 for(int i=0;i<Q5;i++) 59 { 60 cout<<endl; 61 } 62 } 63 int z1=rand()%Q3; 64 int z2=rand()%Q3; 65 int sign=rand()%4; 66 switch(sign) 67 { 68 case 0: 69 cout<<j+1<<":"<<" "<<z1<<"+"<<z2<<"="<<"\t"; 70 cin>>ans; 71 if(ans==z1+z2) 72 { 73 cout<<"正确"<<endl; 74 right++; 75 } 76 else 77 { 78 cout<<"答错了!"<<endl; 79 cout<<"正确答案是:"<<z1+z2<<endl; 80 } 81 break; 82 case 1: 83 if(Q7=='y') 84 { 85 cout<<j+1<<":"<<" "<<z1<<"-"<<z2<<"="<<"\t"; 86 cin>>ans; 87 if(ans==z1-z2) 88 { 89 cout<<"正确"<<endl; 90 right++; 91 } 92 else 93 { 94 cout<<"答错了!"<<endl; 95 cout<<"正确答案是:"<<z1-z2<<endl; 96 } 97 } 98 else 99 { 100 if(z1>z2) 101 { 102 cout<<j+1<<":"<<" "<<z1<<"-"<<z2<<"="<<"\t"; 103 cin>>ans; 104 if(ans==z1-z2) 105 { 106 cout<<"正确"<<endl; 107 right++; 108 } 109 else 110 { 111 cout<<"答错了!"<<endl; 112 cout<<"正确答案是:"<<z1-z2<<endl; 113 } 114 } 115 else 116 { 117 cout<<j+1<<":"<<" "<<z2<<"-"<<z1<<"="<<"\t"; 118 cin>>ans; 119 if(ans==z2-z1) 120 { 121 cout<<"正确"<<endl; 122 right++; 123 } 124 else 125 { 126 cout<<"答错了!"<<endl; 127 cout<<"正确答案是:"<<z2-z1<<endl; 128 } 129 } 130 } 131 break; 132 case 2: 133 cout<<j+1<<":"<<" "<<z1<<"*"<<z2<<"="<<"\t"; 134 cin>>ans; 135 if(ans==z1*z2) 136 { 137 cout<<"正确"<<endl; 138 right++; 139 } 140 else 141 { 142 cout<<"答错了!"<<endl; 143 cout<<"正确答案是:"<<z1*z2<<endl; 144 } 145 break; 146 case 3: 147 if(z2!=0) 148 { 149 cout<<j+1<<":"<<" "<<z1<<"/"<<z2<<"="<<"\t"; 150 cin>>ans; 151 if(ans==z1/z2) 152 { 153 cout<<"正确"<<endl; 154 right++; 155 } 156 else 157 { 158 cout<<"答错了!"<<endl; 159 cout<<"正确答案是:"<<z1/z2<<endl; 160 } 161 } 162 else 163 { 164 j--; 165 } 166 break; 167 } 168 } 169 break; 170 } 171 } 172 cout<<"共答对"<<right<<"道题;"<<"答错"<<Q01-right<<"道题。"; 173 cout<<"继续努力!"<<endl; 174 break; 175 } 176 if(Q4=='n') 177 { 178 while(1) 179 { 180 if(Q01<1) 181 { 182 cout<<"输入有误,重新输入题目数量:"; 183 cin>>Q1; 184 Q01=floor(Q1); 185 } 186 else 187 { 188 for(int j=0;j<Q01;j++) 189 { 190 if(j!=0&&j%Q2==0) 191 { 192 for(int i=0;i<=Q5;i++) 193 { 194 cout<<endl; 195 } 196 } 197 int z1=rand()%Q3; 198 int z2=rand()%Q3; 199 int sign=rand()%2; 200 switch(sign) 201 { 202 case 0: 203 cout<<j+1<<":"<<" "<<z1<<"+"<<z2<<"="<<"\t"; 204 cin>>ans; 205 if(ans==z1+z2) 206 { 207 cout<<"正确"<<endl; 208 right++; 209 } 210 else 211 { 212 cout<<"答错了!"<<endl; 213 cout<<"正确答案是:"<<z1+z2<<endl; 214 } 215 break; 216 case 1: 217 if(Q7=='y') 218 { 219 cout<<j+1<<":"<<" "<<z1<<"-"<<z2<<"="<<"\t"; 220 cin>>ans; 221 if(ans==z1-z2) 222 { 223 cout<<"正确"<<endl; 224 right++; 225 } 226 else 227 { 228 cout<<"答错了!"<<endl; 229 cout<<"正确答案是:"<<z1-z2<<endl; 230 } 231 break; 232 } 233 else 234 { 235 if(z1>z2) 236 { 237 cout<<j+1<<":"<<" "<<z1<<"-"<<z2<<"="<<"\t"; 238 cin>>ans; 239 if(ans==z1-z2) 240 { 241 cout<<"正确"<<endl; 242 right++; 243 } 244 else 245 { 246 cout<<"答错了!"<<endl; 247 cout<<"正确答案是:"<<z1-z2<<endl; 248 } 249 break; 250 } 251 else 252 { 253 cout<<j+1<<":"<<" "<<z2<<"-"<<z1<<"="<<"\t"; 254 cin>>ans; 255 if(ans==z2-z1) 256 { 257 cout<<"正确"; 258 } 259 else 260 { 261 cout<<"答错了!"<<endl; 262 cout<<"正确答案是:"<<z2-z1<<endl; 263 } 264 break; 265 } 266 } 267 break; 268 } 269 } 270 } 271 break; 272 } 273 cout<<"共答对"<<right<<"道题;"<<"答错"<<Q01-right<<"道题。"<<endl; 274 cout<<"继续努力!"<<endl; 275 break; 276 } 277 else 278 { 279 cout<<"输入有误,请按要求输入!"<<endl; 280 } 281 } 282 cout<<endl; 283 while(1) 284 { 285 cout<<"还需要继续出题还是退出?(s:继续出题;b:退出)"; 286 cin>>Q6; 287 if(Q6=='s') 288 { 289 goto Again; 290 } 291 if(Q6=='b') 292 { 293 goto Exit; 294 } 295 else 296 { 297 cout<<"输入有误,请重新输入:"; 298 } 299 } 300 Exit: 301 return 0; 302 }
结果截屏:
心得体会:
这次个人项目的设计让我认识到了有些事情只有做了才有体会,对代码的编写更加的了解。