、大家应该都会玩 通子剪刀市"的游戏:两人同时给出手势 现要求你编写一个控制赢面的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方意识到你在控制结果,你需要隔K次输一次,其中 K是系统设定的随机数。并使用c语言表示
时间: 2024-05-04 18:16:59 浏览: 10
以下是一个简单的C语言程序,实现了控制输赢的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL)); // 初始化随机数生成器
int k = rand() % 10 + 1; // 生成1~10之间的随机整数
int count = 0; // 计数器,记录输了几次
while (1) {
int opp; // 对手出的手势
printf("请出招(1-石头,2-剪刀,3-布):");
scanf("%d", &opp);
if (opp < 1 || opp > 3) { // 输入错误,重新输入
printf("输入错误,请重新输入!\n");
continue;
}
if (count >= k) { // 已经输了k次,随机出招
int my = rand() % 3 + 1;
printf("我出了%d\n", my);
if ((my == 1 && opp == 2) || (my == 2 && opp == 3) || (my == 3 && opp == 1)) {
printf("你输了!\n");
count = 0; // 赢了,计数器清零
} else if ((my == 1 && opp == 3) || (my == 2 && opp == 1) || (my == 3 && opp == 2)) {
printf("你赢了!\n");
count++; // 输了,计数器加1
} else {
printf("平局!\n");
}
} else { // 还没输够k次,随机出招让对手赢
int my = opp % 3 + 1;
printf("我出了%d\n", my);
printf("你赢了!\n");
count++; // 输了,计数器加1
}
}
return 0;
}
```
程序中通过调用`rand()`函数生成1~10之间的随机整数k,表示隔k次输一次。然后使用一个计数器count记录自己已经输了几次。在每次对方出招后,根据计数器和随机数k的值,决定自己出招的方式。如果已经输了k次,就随机出招,让程序决定输赢;如果还没输够k次,就让对手赢,继续增加计数器。这样就可以在不被对手察觉的情况下控制输赢了。