|
发表于 2011-7-4 21:27:40
|
显示全部楼层
21 = 4 * 5 + 1,
所以只要每次取的总和为5根,最后一根必定是玩家取到。- /*
- ** 问题:现在有21根火柴,两个人轮流取,
- ** 每人每次可以取走1至4根,不可多取,也不能不取,
- ** 谁取最后一根火柴谁输。请编写一个程序进行人机对弈,
- ** 要求人先取,计算机后取;计算机一方为“常胜将军”。
- ** By 小锅
- ** 7/4/11
- */
- #include <stdio.h>
- int main()
- {
- int StickNum = 21;
- int i;
-
- printf( "Game Start!\n" );
- while( StickNum > 0 )
- {
- do{
- printf( "How many sticks do you want to take (1 ~ %d) : ", StickNum > 4 ? 4 : StickNum );
- scanf( "%d", &i );
- }while( i < 1 || i > 4 || i > StickNum );
- if( StickNum - i > 0 )
- printf( "%d stick left in the pile.\n", StickNum - 1 );
- if( StickNum - i <= 0 )
- {
- printf( "You have taken the last stick!\n" );
- printf( "You Lose!\nGanme Over!\n" );
- break;
- }
- else
- {
- printf( "Computer take %d stick(s).\n", 5 - i );
- StickNum -= 5;
- printf( "%d stick left in the pile.\n", StickNum );
- }
-
- }
- return 0;
- }
复制代码 |
评分
-
查看全部评分
|