TA的每日心情 | 开心 2014-6-18 08:29 |
---|
签到天数: 14 天 [LV.3]偶尔看看II
滴水大师
- 积分
- 2345
|
本帖最后由 大灰狼 于 2014-8-7 09:27 编辑
题目
解决代码及点评
- <pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"></pre><pre class="cpp" name="code" code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179"><pre class="cpp" name="code" code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179"><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"></pre><pre code_snippet_id="91880" snippet_file_name="blog_20131210_3_5161705" class="cpp" name="code">/************************************************************************/
- /*
- 83. 人机搏弈。
- 有15颗棋子,你和计算机轮流取,每次只允许取1─3颗,直到取尽为止,谁手中的棋子总数为奇数者为赢。
- 先由键盘输入来确定计算机先取还是你先取。
- 提示:取胜者秘诀是:第一次先取两颗,以后按下边规则进行:
- 1) 刚取的棋子数如果和已取得的棋子数加起来是个奇数,那么剩下的棋子数必须是1或8或9;
- 2) 刚取的棋子数如果和已取得的棋子数加起来是个偶数,那么剩下的棋子数必须是4或5。
- 思考: n颗棋子时,程序应如何修改?
-
-
-
-
- */
- /************************************************************************/
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <string.h>
-
-
-
- void main()
- {
- const int N=15;
-
- int num=N;
- int numw=0;
- int numd=0;
- int who=0;
- printf("请选择游戏选项 1 代表计算机先取 2,代表玩家先取\n");
- scanf_s("%d",&who);
- if (who==1)
- {
- int temp=rand()%3+1;
- numd+=temp;
- num-=temp;
- printf("计算机选择了%d\n",temp);
- while(num>1)
- {
- scanf_s("%d",&temp);
- if (temp!=1&&temp!=2&&temp!=3)
- {
- printf("谁让你乱按的!!");
- goto loop;
- }
- else
- {
- if (num<temp)
- {
- printf("谁让你乱按的!!");
- goto loop;
- }
- else
- {
- num-=temp;
- numw+=temp;
- printf("现在还剩%d张牌",num);
-
- }
-
- }
- if (num==0)
- {
- if (numw%2)
- {
- printf("玩家赢了\n");
- }
- else
- {
- printf("电脑赢了\n");
- }
- goto loop;
- }
- else if (num==1)
- {
- if (numw%2)
- {
- printf("玩家赢了\n");
- }
- else
- {
- printf("电脑赢了\n");
- }
- numd+=1;
-
- goto loop;
- }
- if (num>1)
- {
- int temp1=rand()%3+1;
- if (temp1>num)
- {
- temp=num;
- }
- numd+=temp;
- printf("电脑选择%d\n",temp1);
- num-=temp1;
- printf("现在还剩%d张牌",num);
- }
-
- }
- if (num==0)
- {
- if (numw%2)
- {
- printf("玩家赢了\n");
- }
- else
- {
- printf("电脑赢了\n");
- }
- goto loop;
- }
- else if (num==1)
- { numw+=1;
- if (numw%2)
- {
- printf("玩家赢了\n");
- }
- else
- {
- printf("电脑赢了\n");
- };
- goto loop;
- }
-
-
- }
- else if (who==2)
- {
- int temp;
- while(num>1)
- {
- scanf_s("%d",&temp);
- if (temp!=1&&temp!=2&&temp!=3)
- {
- printf("谁让你乱按的!!");
- goto loop;
- }
- else
- {
- if (num<temp)
- {
- printf("谁让你乱按的!!");
- goto loop;
- }
- else
- {
- num-=temp;
- numw+=temp;
- printf("现在还剩%d张牌",num);
-
- }
-
- }
- if (num==0)
- {
- if (numw%2)
- {
- printf("玩家赢了\n");
- }
- else
- {
- printf("电脑赢了\n");
- }
- goto loop;
- }
- else if (num==1)
- {
- if (numw%2)
- {
- printf("玩家赢了\n");
- }
- else
- {
- printf("电脑赢了\n");
- }
- numd+=1;
-
- goto loop;
- }
- if (num>1)
- {
- int temp1=rand()%3+1;
- if (temp1>num)
- {
- temp=num;
- }
- numd+=temp;
- printf("电脑选择%d\n",temp1);
- num-=temp1;
- printf("现在还剩%d张牌",num);
- }
-
- }
- if (num==0)
- {
- if (numw%2)
- {
- printf("玩家赢了\n");
- }
- else
- {
- printf("电脑赢了\n");
- }
- goto loop;
- }
- else if (num==1)
- { numw+=1;
- if (numw%2)
- {
- printf("玩家赢了\n");
- }
- else
- {
- printf("电脑赢了\n");
- };
- goto loop;
- }
-
-
- }
- else
- {
- printf("谁让你乱按的!!");
- }
-
- loop: system("pause");
- }</pre><br><br><br></pre></pre></pre>
|
|