
题目
解决代码及点评
/************************************************************************/ /* 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"); }
代码编译以及运行
由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:
1)新建工程
2)选择工程
3)创建完工程如下图:
4)增加文件,右键点击项目
5)在弹出菜单里做以下选择
6)添加文件
7)拷贝代码与运行
程序运行结果
代码下载
http://download.csdn.net/detail/yincheng01/6681845
解压密码:c.itcast.cn