石头、剪刀、布程序,C语言模拟

/*同问用C编写:同学 A 和B两个人玩最简单的石头剪子布游戏,游戏规则如下:石头赢剪子;剪子赢布;布赢石头;
如果二者相同,则平局;并且规定,如果赢一局则得 2 分,平局的话双方各得 1 分,输的人不得分。两个人一共玩了 N 局,
并且已知每个人每局出的是什么,我们用字符’R’代表石头,’S’代表剪子,’P’代表布。并且给出两个字符串代表两个人每局的出法。

对于这个游戏,输出赢家是谁,并且输出他的得分,如果最后出现了平分,则输出“TIE”加上平分的分数,用空格隔开(具体输出方式见样例)。*/

程序1:

#include<stdio.h>
int comp(char a,char b)//A的每一局得分函数
{
 if(a==b)return 1;
 if(a=='R'&&b=='S')return 2;
 if(a=='R'&&b=='P')return 0;
 if(a=='S'&&b=='R')return 0;
 if(a=='S'&&b=='P')return 2;
 if(a=='P'&&b=='R')return 2;
 if(a=='P'&&b=='S')return 0;    
}
int main()
{
 int scoreA=0,scoreB=0;//分别代表A和B的得分
 char a,b;//分别代表A和B出的形状
 int n;//比较的局数
 int i;//循环变量
 int temp;//临时存储函数comp的返回值
 printf("R:石头 S:剪子 P:布\n");
 printf("请输入比较的局数:");//输入比较局数
 scanf("%d",&n);
 for(i=0;i<n;i++)//循环n次
 {
  printf("inputA%d:",i+1);
  getchar();
  scanf("%c",&a);//输入A出的
  printf("inputB%d:",i+1);  
  getchar(); 
  scanf("%c",&b); //输入B出的
  temp=comp(a,b);
  scoreA+=temp;//累加A的分数
  scoreB+=(2-temp); //累加B的分数          
 }
 if(scoreA>scoreB)//输出A和B的比较结果
  printf("A(%d)赢B(%d)输\n",scoreA,scoreB);                 
 else
  if(scoreA<scoreB)
   printf("A(%d)输B(%d)赢\n",scoreA,scoreB);  
  else
    printf("TIE分数都是%d\n",scoreA); 
  system("pause");
  return 0;
} 

程序2:

#include<stdio.h>
#define MAXSIZE 100
int comp(char a,char b)//A的每一局得分函数
{
 if(a==b)return 1;
 if(a=='R'&&b=='S')return 2;
 if(a=='R'&&b=='P')return 0;
 if(a=='S'&&b=='R')return 0;
 if(a=='S'&&b=='P')return 2;
 if(a=='P'&&b=='R')return 2;
 if(a=='P'&&b=='S')return 0;    
}
int main()
{
 int scoreA=0,scoreB=0;//分别代表A和B的得分
 char a[MAXSIZE],b[MAXSIZE];//分别代表A和B出的形状
 int n;//比较的局数
 int i;//循环变量
 int temp;//临时存储函数comp的返回值
 printf("R:石头 S:剪子 P:布\n");
 printf("请输入比较的局数:\n");//输入比较局数
 scanf("%d",&n);
 //printf("inputA:");
 getchar();
 for(i=0;i<n;i++)
 {
  scanf("%c",&a[i]);                
 }
 getchar();
 for(i=0;i<n;i++)
 {
  scanf("%c",&b[i]);                
 }
 for(i=0;i<n;i++)//循环n次
 {  
  temp=comp(a[i],b[i]);
  scoreA+=temp;//累加A的分数
  scoreB+=(2-temp); //累加B的分数          
 }
 if(scoreA>scoreB)//输出A和B的比较结果
  printf("A(%d)赢B(%d)输\n",scoreA,scoreB);                 
 else
  if(scoreA<scoreB)
   printf("A(%d)输B(%d)赢\n",scoreA,scoreB);  
  else
    printf("TIE %d\n",scoreA); 
  system("pause");
  return 0;
} 


下面是一个简单的石头剪刀游戏C语言代码,可以进行五局三胜的比赛: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int i, j, k, player, computer, win, lose, draw; char *gesture[3] = {"石头", "剪刀", ""}; srand(time(NULL)); // 设置随机种子 win = lose = draw = 0; // 初始化胜利、失败、平局次数为0 for (i = 0; i < 5; i++) { // 进行五局比赛 printf("第%d局比赛:\n", i+1); printf("请选择石头(0)、剪刀(1)或(2):"); scanf("%d", &player); // 家选择手势 computer = rand() % 3; // 电脑随机选择手势 printf("家出了%s,电脑出了%s。\n", gesture[player], gesture[computer]); if (player == computer) { // 平局 printf("本局平局!\n"); draw++; } else if ((player - computer + 3) % 3 == 1) { // 家胜利 printf("恭喜你,本局胜利!\n"); win++; } else { // 电脑胜利 printf("很遗憾,本局失败!\n"); lose++; } if (win >= 3 || lose >= 3) { // 已经有一方胜利三局,比赛结束 break; } } if (win > lose) { // 家胜利 printf("恭喜你,你赢得了比赛!\n"); } else if (win < lose) { // 电脑胜利 printf("很遗憾,你输了比赛!\n"); } else { // 平局 printf("比赛结束,双方打成平局!\n"); } printf("比赛结果:胜利%d局,失败%d局,平局%d局。\n", win, lose, draw); return 0; } ``` 代码中使用了一个指针数组 `gesture`,用来存储三种手势的名称。`srand()` 函数用来设置随机种子,每次运行程序时都会产生不同的随机数。`rand() % 3` 可以得到一个 0~2 的随机数,对应石头剪刀三种手势。`if ((player - computer + 3) % 3 == 1)` 这个表达式用来判断家胜利的情况,可以根据手势之间的关系得出。 程序中使用了一个循环来进行五局比赛,如果有一方胜利三局,就会跳出循环。最后根据胜利、失败、平局次数来输出比赛结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值