四则运算3
设计思路:
关于这次实验,我们延续上次的思想,将很多内容封装到函数里,包括:“选择打印方式”、“判断输入的01菜单是否正确”、“生成某一个范围内的随机数”、“生成随机的分数”、“生成一个运算符”、“判断整数的正负并取相反数”、“把int类型装换为string类型”、以及“含有括号的运算”、“含有真分数的运算”和“不含真分数的运算”等等。运行程序时用户先选择相关的参数定制:题目个数、数值范围、是否打印到文件里、是否含有括号、加减或者四则运算等等。
部分函数的思路和功能:
1、 生成一个随机运算符:
根据从主函数读取到的用户的选择:是否包含乘除运算来随机生成0-3四个数字分别代表+-*/四则运算,并将其作为函数的返回值。单独列出这个函数的目的是防止出现像上次的程序一样分析switch语句的四种情况时代码冗余而导致思维混乱。
2、 把int类型转换为string:
经过我们查阅资料,决定使用:#include<stdio.h>类库中的str=itoa(shu, zhuan, 10)函数来将生成的随机整数保存成string字符串的形式。
编写此函数是因为,所有的算式都是用string字符串存的,方便输出和查重,因此每一个操作符都要转换成string才能直接插到算式中。
3、 生成某一个范围内的真分数:
通过判断分子小于分母(真分数)、分子分母没有公约数(最简分式)产生那个数:分子和分母的值,再通过随机生成正负号来决定分数值的正负,最后将符号、分子、分数线和分母写到一个string类型里,并将分数形式和分数的值返回。
4、 查重:
查重的函数上次的实验中有一些问题,因为是使用int类型的二维数组存的因此不能查关于真分数的重复,而这次采用string类型数组的方法,将所有的算式依次存到string类型的数组中,然后逐个比较新生成的算式与其是否相等。如果相等就舍掉相应的式子,并且计数的值-1。
5、 关于含有真分数和不含有真分数的计算:
就是调用以上各个函数,再根据用户选择的是否含有负数、除法有无余数等等进行选择和判断,但是要将结果保存下来,便于判断是否回答正确。
6、 含有括号的计算:
我们打算用“递归”的思想先随机生成一个二元运算的式子,当然这里的操作数和运算符都是随机生成的,然后用double类型变量记录算式的值,然后随机生成加不加括号、并且下一个运算符是加在前面还是后面。然后将生成的式子再作为二元运算的操作数,直到随机生成的是不加括号,则输出式子。
7、 主函数:
本次实验最大的差异就是要用户计算结果、系统判断是否回答正确并记录正确的题目数。一次我们的函数中只是返回一个算式和算式的值,在主函数中循环N次,每一次输出就让用户输入,并判断是否正确。算式是用string类型存放,算式的值用double类型存放,如果答案是整数,直接让用户输入一个整数;如果答案是小数,先输入int型分子,再输入分母,并强制转换double计算结果。判断对错时,设定一个精度(10的负7次方),如果用户的输入在此范围内则认定正确。
代码:
1 //二柱子四则运算3,2016/3/14,赵子茵&孔宇航 2 3 #include<iostream> 4 #include<time.h> 5 #include<stdlib.h> 6 #include<stdio.h> 7 #include<string> 8 #include<fstream> 9 #include<iomanip> 10 #include<cmath> 11 #define random(x) (rand()%x) 12 using namespace std; 13 14 /*选择打印方式*/ 15 void Output(int sf) 16 { 17 if (sf == 1)//保存文档 18 { 19 ofstream outfile("formula.txt", ios::out); 20 if (!outfile) 21 { 22 cout << "Open error!!" << endl; 23 exit(1); 24 } 25 outfile << "----------------欢迎!小学生四则运算答题系统:-D----------------" << endl; 26 outfile.close(); 27 } 28 } 29 30 /*判断输入0.1的是否输入正确*/ 31 int Istrue_input(int mnu01) 32 { 33 while (1) 34 { 35 if (mnu01 != 0 && mnu01 != 1) 36 { 37 cout << "输入有误,请重新输入(请输入0或1):" << endl; 38 cin >> mnu01; 39 } 40 else 41 break; 42 } 43 return mnu01; 44 } 45 46 /*生成一个某范围内的随机数(正负都有)*/ 47 int Creat_random(int r1, int r2) 48 { 49 int r, shu; 50 /*srand((int)time(0));*/ 51 r = r2 - r1; 52 shu = r1 + rand() % r; 53 return shu; 54 } 55 56 /*生成一个随机运算符*/ 57 string Create_oper(int lai) 58 { 59 srand((int)time(0)); 60 string sign; 61 int Num_sym, Sign_num; 62 if (lai == 0)//加减 63 Num_sym = 2; 64 else if (lai == 1)//加减乘除 65 Num_sym = 4; 66 Sign_num = rand() % Num_sym;//生成随机的数字代表运算符 67 switch (Sign_num) 68 { 69 case(0) : sign = '+'; break; 70 case(1) : sign = '-'; break; 71 case(2) : sign = '*'; break; 72 case(3) : sign = '/'; break; 73 } 74 return sign; 75 } 76 77 /*判断整数正负并取相反数*/ 78 int Opp_zf(int a) 79 { 80 if (a < 0) 81 a = -a; 82 return a; 83 } 84 85 /*把int类型转换为string类型*/ 86 string Int_str(int shu) 87 { 88 char zhuan[100]; 89 string str,zuo="(",you=")"; 90 str=itoa(shu, zhuan, 10); 91 if (shu < 0) 92 str = zuo + str + you; 93 return str; 94 } 95 96 /*生成一个(某范围)真分数*/ 97 void Creat_fen(int r1, int r2, string &fenshu, double &zhi) 98 { 99 /*srand((int)time(0));*/ 100 int i, r = r2 - r1, up, down, s; 101 bool flag; 102 string xian = "/", fu = "-", zuo = "(", you = ")"; 103 /*char zhuan1[10], zhuan2[10];*/ 104 string zhuan1, zhuan2; 105 loop:do 106 { 107 flag = false;//不能定义全局变量!! 108 up = r1 + rand() % r; 109 up = Opp_zf(up); 110 down = r1 + rand() % r; 111 down = Opp_zf(down); 112 } while ((up >= down) || (down == 0) || (up == 0));//分子≥分母 or 分母=0 or 分子=0 重新生成 113 114 for (i = 2; i <= up; i++) 115 { 116 /*if ((i == -1)|| (i == 0)) 117 continue;*/ 118 if (up%i == 0 && down%i == 0) 119 { 120 flag = true;//有公约数 121 break; 122 } 123 } 124 if (flag == true) 125 { 126 goto loop; 127 } 128 else 129 { 130 zhi = (double)up / (double)down; 131 //itoa(up, zhuan1, 10);//分子转换成string类型 132 //itoa(down, zhuan2, 10);//分母转换成string类型 133 zhuan1 = Int_str(up);//up/down都是正数不会再加一层括号 134 zhuan2 = Int_str(down); 135 s = rand() % 2; 136 switch (s) 137 { 138 //正分数 139 case(0) : 140 fenshu = zuo + zhuan1 + xian + zhuan2 + you; 141 break; 142 //负分数 143 case(1) : 144 fenshu = zuo + fu + zhuan1 + xian + zhuan2 + you; 145 zhi = -zhi; 146 break; 147 } 148 } 149 //return fenshu; 150 } 151 152 ///*查重*/ 153 //bool Is_rept(string str1, string str2) 154 //{ 155 // if (str1 == str2) 156 // return true;//重复 157 // return false;//不重复 158 //} 159 160 /*含有括号*/ 161 void Have_kuohao(int r1, int r2, string &formula,double &zhi) 162 { 163 srand((int)time(0)); 164 int op,op1, op2; 165 int yn, qh;//代表“是否加括号”和“运算符在前后”的数字 166 string symbol1,symbol2; 167 string zhuan,zhuan1, zhuan2; 168 string jia = "+", jian = "-", cheng = "*", chu = "/",zuo="(",you=")"; 169 170 zhi = (double)Creat_random(r1, r2); 171 op1 = Creat_random(r1, r2); 172 op2 = Creat_random(r1, r2); 173 op = Creat_random(r1, r2);//假设op2做分母不能为0 174 while (1) 175 { 176 if (op == 0) 177 op = Creat_random(r1, r2); 178 else 179 break; 180 } 181 zhuan1 = Int_str(zhi); 182 zhuan2 = Int_str(op); 183 symbol1 = Create_oper(1); 184 185 if (symbol1 == "+") 186 { 187 zhi = (double)op1 + (double)op2; 188 formula = zhuan1 + jia + zhuan2; 189 yn = rand() % 2; 190 switch (yn) 191 { 192 //外面不加括号 193 case(0) : break; 194 //外面加括号 195 case(1) : 196 { 197 formula = zuo + formula + you; 198 qh = rand() % 2; 199 symbol2 = Create_oper(1); 200 switch (qh) 201 { 202 //加到前面 203 case(0) : 204 { 205 formula = symbol2 + formula; 206 op = Creat_random(r1, r2); 207 zhuan = Int_str(op); 208 if (symbol2 == "+") 209 { 210 zhi = (double)op + zhi; 211 formula = zhuan + jia + formula; 212 } 213 else if (symbol2 == "-") 214 { 215 zhi = (double)op - zhi; 216 formula = zhuan + jian + formula; 217 } 218 else if (symbol2 == "*") 219 { 220 zhi = (double)op * zhi; 221 formula = zhuan + cheng + formula; 222 } 223 else if (symbol2 == "/") 224 { 225 if (zhi == 0)//防止出现随机生成的除号后面的值为0; 226 break; 227 else 228 { 229 zhi = (double)op / zhi; 230 formula = zhuan + chu + formula; 231 } 232 } 233 break; 234 235 } 236 //加到后面 237 case(1) : 238 { 239 formula = formula + symbol2; 240 op = Creat_random(r1, r2);//防止后面随机产生除号,分母为0 241 while (1) 242 { 243 if (op == 0) 244 op = Creat_random(r1, r2); 245 else 246 break; 247 } 248 zhuan = Int_str(op); 249 if (symbol2 == "+") 250 { 251 zhi = zhi + (double)op; 252 formula = formula + jia + zhuan; 253 } 254 else if (symbol2 == "-") 255 { 256 zhi = zhi - (double)op; 257 formula = formula + jian + zhuan; 258 } 259 else if (symbol2 == "*") 260 { 261 zhi = zhi * (double)op; 262 formula = formula + cheng + zhuan; 263 } 264 else if (symbol2 == "/") 265 { 266 zhi = zhi / (double)op; 267 formula = formula + chu + zhuan; 268 } 269 break; 270 } 271 272 } 273 break; 274 } 275 276 277 } 278 279 280 } 281 else if (symbol1 == "-") 282 { 283 zhi = (double)op1 - (double)op2; 284 formula = zhuan1 + jian + zhuan2; 285 } 286 else if (symbol1 == "*") 287 { 288 zhi = (double)op1 * (double)op2; 289 formula = zhuan1 + cheng + zhuan2; 290 } 291 else if (symbol1 == "/") 292 { 293 zhi = (double)op1 / (double)op2; 294 formula = zhuan1 + chu + zhuan2; 295 } 296 297 298 299 300 301 } 302 303 /*含有真分数*/ 304 void Have_fenshu(int LL, int r1, int r2, string &formula, double &zhi, int jj) 305 { 306 srand((int)time(0)); 307 string F1, F2, symbol, zhuan; 308 double Z1, Z2;//值 309 int inter, type; 310 inter = Creat_random(r1, r2);//整数 311 zhuan = Int_str(inter); 312 Creat_fen(r1, r2, F1, Z1);//分数1 313 Creat_fen(r1, r2, F2, Z2);//分数2 314 symbol = Create_oper(LL);//符号 315 type = rand() % 3;//类型 316 317 if (jj == 0)//加减没有负数 318 { 319 inter = Opp_zf(inter); 320 zhuan = Int_str(inter); 321 while (1) 322 { 323 if (Z1 <0) 324 Creat_fen(r1, r2, F1, Z1); 325 else 326 break; 327 } 328 while (1) 329 { 330 if (Z2 <0) 331 Creat_fen(r1, r2, F2, Z2); 332 else 333 break; 334 } 335 } 336 337 switch (type) 338 { 339 //op1分数 340 case(0) : 341 formula = F1 + symbol + zhuan; 342 if (symbol == "+") 343 zhi = Z1 + (double)inter; 344 else if (symbol == "-") 345 { 346 if (jj == 0) 347 break; 348 else 349 zhi = Z1 - (double)inter; 350 } 351 else if (symbol == "*") 352 zhi = Z1 * (double)inter; 353 else if (symbol == "/") 354 { 355 if (inter != 0) 356 break; 357 else 358 zhi = Z1 / (double)inter; 359 } 360 break; 361 //op2分数 362 case(1) : 363 formula = zhuan + symbol + F1; 364 if (symbol == "+") 365 zhi = (double)inter + Z1; 366 else if (symbol == "-") 367 zhi = (double)inter - Z1; 368 else if (symbol == "*") 369 zhi = (double)inter * Z1; 370 else if (symbol == "/") 371 { 372 if (Z1 != 0) 373 zhi = (double)inter / Z1; 374 else 375 break; 376 } 377 break; 378 //全分数 379 case(2) : 380 formula = F1 + symbol + F2; 381 if (symbol == "+") 382 zhi = Z1 + Z2; 383 else if (symbol == "-") 384 { 385 if ((jj == 0) && (Z1 < Z2)) 386 break; 387 else 388 zhi = Z1 - Z2; 389 } 390 else if (symbol == "*") 391 zhi = Z1 * Z2; 392 else if (symbol == "/") 393 { 394 if (Z1 != 0) 395 zhi = Z1 / Z2; 396 else 397 break; 398 } 399 break; 400 } 401 402 } 403 404 /*不含有真分数*/ 405 void Only_integer(int LL, int r1, int r2, string &formula, double &zhi,int jj,int cc) 406 { 407 srand((int)time(0)); 408 int op1, op2; 409 string symbol,zhuan1,zhuan2; 410 op1 = Creat_random(r1, r2);//整数1 411 op2 = Creat_random(r1, r2);//整数2 412 symbol = Create_oper(LL);//符号 413 414 if (jj == 0)//加减不含负号 415 { 416 op1 = Opp_zf(op1); 417 op2 = Opp_zf(op2); 418 if ((symbol == "-") && (op1 < op2)) 419 { 420 int temp; 421 temp = op1; 422 op1 = op2; 423 op2 = temp; 424 } 425 } 426 427 if ((cc == 0) && (symbol == "/"))//除法不含余数(去除负号计算的情况) 428 { 429 while (1) 430 { 431 op1 = Opp_zf(op1); 432 op2 = Opp_zf(op2); 433 if (op1 % op2 != 0)//有余数,重新生成 434 { 435 op1 = Creat_random(r1, r2); 436 op2 = Creat_random(r1, r2); 437 } 438 else 439 break; 440 } 441 } 442 443 zhuan1 = Int_str(op1); 444 zhuan2 = Int_str(op2); 445 formula = zhuan1 + symbol + zhuan2; 446 if (symbol == "+") 447 zhi = op1 + op2; 448 else if (symbol == "-") 449 zhi = op1 - op2; 450 else if (symbol == "*") 451 zhi = op1*op2; 452 else if (symbol == "/") 453 zhi = op1 / op2; 454 } 455 456 void main() 457 { 458 ofstream outfile("formula.txt", ios::out); 459 if (!outfile) 460 { 461 cout << "open error!" << endl; 462 exit(1); 463 } 464 outfile << "----------------欢迎!小学生四则运算答题系统:-D----------------" << endl; 465 466 int i,j,N, R1, R2; 467 int SF, KH, FS, Lei,JJ,CC,count=0; 468 string question="";//生成的问题 469 double Zhi, answer; 470 int fenzi, fenmu; 471 bool repeat = false; 472 473 cout << "----------------欢迎!小学生四则运算答题系统:-D----------------"<<endl; 474 /*选择题目范围和数量*/ 475 cout << "您想为孩子定制什么范围的题目呢?(可含有负数 && 上限≥下限):" << endl; 476 cout << "下限:"; 477 cin >> R1; 478 cout << "上限:"; 479 cin >> R2; 480 while (1)//是否输入合法 481 { 482 if (R2 < R1) 483 { 484 cout << "输入的范围不合理,请重新输入(上限≥下限):" << endl; 485 cout << "下限:"; 486 cin >> R1; 487 cout << "上限:"; 488 cin >> R2; 489 } 490 else 491 break; 492 } 493 494 cout << "订制多少道题呢?请输入个数:" << endl; 495 cout << "(友情提示:您不要为孩子出太多的题目(最多1000道)!谢谢合作!)" << endl; 496 cin >> N; 497 while (1)//是否输入合法 498 { 499 if (N<=0||N>1000) 500 { 501 cout << "输入的题目数量不合理,请重新输入:" << endl; 502 cin >> N; 503 } 504 else 505 break; 506 } 507 508 /*选择打印方式*/ 509 cout << "您是否需要保存文档?(0、不需要 1、需要)" << endl; 510 cin >> SF; 511 SF=Istrue_input(SF);//是否输入合法 512 Output(SF); 513 514 cout << "*********下面请按照孩子的学习程度选择题目的难度!!*********"<<endl; 515 /*是否含有括号*/ 516 cout << "是否练习带有括号的难度运算?(0、不需要 1、需要)"; 517 cin >> KH; 518 KH=Istrue_input(KH);//是否输入合法 519 if (KH == 1)//含括号 520 { 521 for (i = 1; i <= N; i++) 522 { 523 string Formula = ""; 524 double Zhi; 525 Have_kuohao(R1, R2,Formula,Zhi); 526 } 527 528 529 } 530 531 //不含括号 532 else if (KH == 0) 533 { 534 /*加减运算或者四则运算*/ 535 cout << "请选择:0、只进行加减运算? 1、进行四则运算?"; 536 cin >> Lei; 537 Lei=Istrue_input(Lei);//是否输入合法 538 539 cout << "加减运算中是否有负数?(0、没有 1、有)"; 540 cin >> JJ; 541 JJ = Istrue_input(JJ); 542 543 if (Lei == 1)//乘除 544 { 545 cout << "除法中是否出现余数?(0、没有 1、有)"; 546 cin >> CC; 547 CC = Istrue_input(CC); 548 } 549 550 /*是否含有真分数*/ 551 cout << "题目中是否含有真分数?(0、不需要 1、需要)"; 552 cin >> FS; 553 Istrue_input(FS);//是否输入合法 554 555 cout << N << "道题目如下:" << endl; 556 if (SF == 1)//文件输出 557 { 558 outfile << N << "道题目如下:" << endl; 559 } 560 string ku[10000] = {}; 561 562 for (i = 1; i <= N; i++) 563 { 564 if (FS == 0)//全整数 565 Only_integer(Lei, R1, R2, question, Zhi, JJ, CC); 566 else if (FS == 1)//含真分数 567 Have_fenshu(Lei, R1, R2, question, Zhi, JJ); 568 569 ku[i] = question; 570 /*repeat = false;*/ 571 for (j = 0; j <i; j++) 572 { 573 if (ku[j] == ku[i]) 574 { 575 i = i - 1; 576 repeat = true;//重复 577 break; 578 } 579 } 580 /*if (repeat) ku[i+1] = "";*/ 581 if (!repeat)//不重复 582 { 583 /*Is_rept(i,str);*/ 584 cout << i << "、 " << question << " = " << endl; 585 if (SF == 1)//文件输出 586 { 587 outfile << i << "、 " << question << " = " << Zhi << endl; 588 } 589 590 if ((Zhi - (int)Zhi)< 1E-7 && (Zhi - (int)Zhi)> -(1E-7))//可认为它是整数 591 { 592 cin >> answer; 593 } 594 else 595 { 596 cout << " 分子:"; 597 cin >> fenzi; 598 cout << " 分母:"; 599 cin >> fenmu; 600 answer = (double)fenzi / (double)fenmu; 601 } 602 603 if ((answer - Zhi) < 1E-7 && (answer - Zhi) > -(1E-7)) 604 { 605 cout << " √" << endl; 606 count++; 607 } 608 else 609 { 610 cout << " ×" << endl; 611 cout << "答案是:" << Zhi << endl; 612 } 613 } 614 } 615 616 cout << "您的孩子一共答对了" << count << "道题目!! 恭喜!!" << endl; 617 if (SF == 1)//文件输出 618 { 619 outfile << "您的孩子一共答对了" << count << "道题目!! 恭喜!!" << endl; 620 } 621 cout << "答错的" << N - count << "道题目请分析原因并改正~~ 加油!!" << endl; 622 if (SF == 1)//文件输出 623 { 624 outfile << "答错的" << N - count << "道题目请分析原因并改正~~ 加油!!" << endl; 625 } 626 } 627 outfile.close(); 628 629 }
截图:
测试一:
测试二:
总结与反思:
在本次程序中,遇到了很多问题,虽然现在的程序还算完整但是有些功能是没有实现的,就是括号的部分,只保留了函数没有具体作用。对于括号的部分,我们讨论了很久也参考了别人的程序,但是总有各种各样的问题,一个解决又出来一个,就比如括号随机生成后一些不符合情况的排除,括号的计算问题,最后虽然有了思路但是还没有实现。我们的编程能力还是很弱的,对于没有实现的功能感到很惭愧,代码中还存在其他各种各样的小问题需要改进,望老师谅解。其实对于两个考研的孩子来说把所有空闲时间都拿来写这个程序还是蛮拼的哦,哈哈,希望课程考研两不耽误,不然真是亏大了。
工作照:
结对合作伙伴——赵子茵博客内容页链接:http://www.cnblogs.com/2016helen/p/5296378.html
项目计划日志
项目计划总结 周活动总结表 姓名:孔宇航 日期:2016/3/19 |
|||||||
任务 日期 |
听课 |
编写 程序 |
阅读 课本 |
准备 考试 |
日总计 (分钟) |
||
周日 |
|||||||
周一 |
100 |
120 |
60 |
280 |
|||
周二 |
120 |
30 |
150 |
||||
周三 |
300 |
60 |
360 |
||||
周四 |
100 |
120 |
90 |
310 |
|||
周五 |
300 |
30 |
330 |
||||
周六 |
720 |
720 |
阶段时间和效率 周数:1 |
|||||||
总计 |
200 |
1680 |
270 |
2160 |
|||
平均 |
30 |
240 |
40 |
310 |
|||
最大 |
100 |
720 |
90 |
910 |
|||
最小 |
100 |
120 |
30 |
250 |
2,时间记录日志:
学生:孔宇航 日期:2016/3/19
老师:王建民 课程:PSP
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
3/14 |
14:00 |
16:00 |
20 |
100 |
上课 |
|
17:00 |
19:00 |
60 |
编程 |
|||
20:00 |
21:00 |
60 |
读课本 |
|||
3/15 |
14:00 |
16:00 |
120 |
编程 |
||
18:00 |
19:00 |
60 |
查资料 |
|||
21:00 |
21:30 |
30 |
读课本 |
|||
3/16 |
10:00 |
12:00 |
20 |
100 |
查资料 |
|
15:00 |
20:00 |
300 |
编程 |
|||
20:30 |
21:30 |
60 |
读课本 |
|||
3/17 |
14:00 |
16:00 |
20 |
100 |
上课 |
|
16:00 |
18:00 |
120 |
编程 |
|||
21:00 |
21:30 |
30 |
30 |
读课本 |
||
3/18 |
08:00 13:30 15:00 |
9:00 15:00 20:00 |
60 90 300 |
查资料 休息 编程 |
||
3/18 |
08:00 13:30 19:00 |
12:00 18:30 21:00 |
240 300 180 |
编程 编程 编程 |
3,缺陷记录日志:
学生:孔宇航 日期:2016/3/19
老师:王建民
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复阶段 |
修复缺陷 |
||||
3/16 |
1 |
设计 |
编码 |
15min |
知识漏洞 |
|||||
描述:设计函数的结构和变量时有知识点掌握的不牢固,比如地址传递参数的使用等等。 |
||||||||||
3/18
|
2 |
编码 |
编译 |
20min |
知识漏洞 |
|||||
描述:想要随机生成两个或多个不同的随机数作为运算的操作数,但是使用种子的代码有误导致每次生成的不随机或者比率不合理。 |
||||||||||
3 |
编码 |
编译 |
15min |
逻辑错误 |
||||||
描述:do…while循环语句的循环条件和结束条件写错了,导致程序一直是朝着相反的方向去。 |
||||||||||
3/19 |
4 |
编码 |
编译 |
30min |
知识漏洞 |
|||||
描述:计算结果会出现小数因此要以double形式存放,就要将操作数的int类型进项转换,以及后面涉及到的int类型转换为string编写时都出现了知识掌握不全面的问题。 |
||||||||||
5 |
编码 |
编译 |
30min |
逻辑错误 |
||||||
描述:编写查重函数时候因为内层循环和外层循环的i,j问题,导致程序不能有效的查重。 |