要实现一个“常胜将军”的编程,关键在于确保每一轮中人和计算机取走的火柴数之和为5。这样,无论人如何取火柴,计算机都可以调整自己的取法,最终保证取走最后一根火柴。以下是一个简单的C语言程序示例,实现了这个策略:
```c
include
int main() {
int people, computer, spare = 21;
printf("Game begin:\n");
while (spare > 0) {
printf("目前还有火柴 %d 根\n", spare);
printf("人取火柴数量:");
scanf("%d", &people);
if (people < 1 || people > 4) {
printf("你违规了,你取的火柴数有问题!\n");
continue;
}
if (spare - people < 0) {
printf("你已经取走了最后一根火柴,你输了!\n");
break;
}
computer = 5 - people;
spare -= people;
printf("计算机取火柴数量: %d\n", computer);
printf("剩余火柴数量: %d\n", spare);
}
printf("游戏结束,计算机获胜!\n");
return 0;
}
```
代码解释:
初始化
`people`:人取的火柴数。
`computer`:计算机取的火柴数。
`spare`:剩余火柴数,初始为21。
游戏循环
循环条件是`spare > 0`,即还有火柴剩余。
打印当前剩余火柴数。
提示用户输入人取的火柴数。
检查用户输入是否合法(1到4之间)。
如果用户输入不合法,提示错误并继续下一轮。
计算计算机应取的火柴数,使得两人每轮取走的火柴数之和为5。
更新剩余火柴数。
打印计算机取的火柴数和剩余火柴数。
游戏结束
当剩余火柴数为0时,计算机获胜,打印胜利信息。
这个程序通过简单的策略和结构,实现了计算机的“常胜将军”功能。你可以根据需要修改和扩展这个程序,例如增加更多的游戏规则和用户交互功能。