《程序设计》 cs.stu20119 play函数的实现 冷Play函数随机产生正反面,让用户猜 报告对错结果,然后询问是否要继续玩 void playo f char flag=y whle(g=“Y‖nag=y) {coin=生成正反面; 输入用户的猜测; if(用户猜测=coin)报告本次猜测结果正确; else报告本次猜测结果错误; 程序设计-6
《程序设计》 cs.sjtu 2011.9 程序设计 - 6 play函数的实现 ❖ Play函数随机产生正反面,让用户猜, 报告对错结果,然后询问是否要继续玩 void play() { char flag = ‘y’; while (flag == ‘Y’|| flag == ‘y’) { coin = 生成正反面; 输入用户的猜测; if (用户猜测== coin) 报告本次猜测结果正确; else 报告本次猜测结果错误; } }
《程序设计》 cs.stu20119 play函数的细化 冷生成正反面:如果用0表示正面,1表示反面 那么生成正反面就是随机生成0和两个数 令输入用户的猜测。如果不考虑程序的鲁棒性 这个问题也可以直接用一个输入语句即可。但 想让程序做得好一点,就必须考虑得全面一些 比如,用户可以不守规则,既不输入0也不输入 1,而是输入一个其他值,程序该怎么办?因此 这个任务还可以进一步细化,所以再把它抽象 成一个函数 iget call from user 程序设计-7
《程序设计》 cs.sjtu 2011.9 程序设计 - 7 play函数的细化 ❖ 生成正反面:如果用0表示正面,1表示反面, 那么生成正反面就是随机生成0和1两个数 ❖ 输入用户的猜测。如果不考虑程序的鲁棒性, 这个问题也可以直接用一个输入语句即可。但 想让程序做得好一点,就必须考虑得全面一些。 比如,用户可以不守规则,既不输入0也不输入 1,而是输入一个其他值,程序该怎么办?因此 这个任务还可以进一步细化,所以再把它抽象 成一个函数get_call_from_user
《程序设计》 cs.stu20119 void playo i int coin char flag="Y’; srand(time(NULL);∥设置随机数种子 while(flag ==Y flag==y,) coin= rando*2/ RAND MAX;/生成扔硬币的结果 if( get call from user=coin)cout<<"你赢了 else cout<<"我赢了"; cout<"n继续玩吗(Y或y)?"; cin > flaga 程序设计8
《程序设计》 cs.sjtu 2011.9 程序设计 - 8 void play() { int coin ; char flag = 'Y'; srand(time(NULL)); //设置随机数种子 while (flag == 'Y' || flag =='y') { coin = rand() * 2 / RAND_MAX;//生成扔硬币的结果 if (get_call_from_user() == coin) cout << "你赢了"; else cout << "我赢了"; cout << "\n继续玩吗(Y或y)?"; cin >> flag; } }
《程序设计》 cs.stu20119 get call from user的实现 冷该函数接收用户输入的一个整型数。如 果输入的数不是0或1,则重新输入,否 则返回输入的值 int get call from user fint guess: //0=head, 1= tail do{cout<"in输入你的选择(0表示正面,1表示反面):"; cIn > guess 3 while(guess =0 & guess! =1); return guess; -9
《程序设计》 cs.sjtu 2011.9 程序设计 - 9 get_call_from_user的实现 ❖ 该函数接收用户输入的一个整型数。如 果输入的数不是0或1,则重新输入,否 则返回输入的值 int get_call_from_user() {int guess; // 0 = head, 1 = tail do { cout << "\n输入你的选择(0表示正面,1表示反面):"; cin >> guess; } while (guess !=0 && guess !=1) ; return guess; }
运行实例 《程序设计》 cs.stu20119 这是一个猜硬币正反面的游戏 我会扔一个硬币,你来猜 如果猜对了,你赢,否则我赢。 输入你的选择(0表示正面,1表示反面):1 我赢了 继续玩吗(Y或y)?y 输入你的选择(0表示正面,1表示反面):6 输入你的选择(0表示正面,1表示反面):1 你赢了 继续玩吗(Y或y)?n Press any key to continue 程序设计-10
《程序设计》 cs.sjtu 2011.9 程序设计 - 10 这是一个猜硬币正反面的游戏. 我会扔一个硬币,你来猜. 如果猜对了,你赢,否则我赢。 输入你的选择(0表示正面,1表示反面):1 我赢了 继续玩吗(Y或y)?y 输入你的选择(0表示正面,1表示反面):6 输入你的选择(0表示正面,1表示反面):1 你赢了 继续玩吗(Y或y)?n Press any key to continue 运行实例