有21根火柴,两人依次取,每次每人只可取走1~4根,不能多取,也不能不取,谁先取得最后一,火柴谁输。请编写程序一个人机对弈程序,要求人先取,计算机后取,保证计算机为“常胜将军”即一直赢。
问题分析:
因为取得最后一根火柴的人为输且要保证电脑每次都赢,则最后一根火柴必须让人取得,这样就变成20根火柴只要保证20根火柴的最后一根被电脑取得就可以了,因为要求人先取火柴电脑后取,所以20根中只剩下5根时人先取,不管人取多少最后一根,必定落到电脑手中,依次类推15,10,直到一开始的5根火柴人先取,也是不管人取多少最后一根,必定落到电脑手中,所以只要保证每一轮的抽取中,人的取数+电脑的取数=5且每轮人先取,则最后的常胜将军必然是电脑
算法设计:
人先取数1~4根,显示火柴剩余数量,电脑再取数=5-(人取数1~4根),保证第5,10,15,20根都被电脑取走,则在总数21根中最后一根必然被人取走,如此电脑就是“常胜将军”
所以当火柴数为0时谁赢(但必然每次都是电脑赢)
#include<stdio.h>
void menu();
void game();
int main()
{
int input = 0;
do
{
menu();//菜单选择
scanf("%d", &input);