04 猜拳游戏
问题描述:
使用C语言编写一个与电脑进行剪刀石头布的小程序,输入1表示用户出剪刀,输入2表示用户出石头,输入3表示用户出布;若电脑胜利则输出用户输了,若电脑输了则输出用户赢了,平局则输出双方平局;
运行效果:
代码实现:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
// 判断胜负
int fun(int u_choice,int &c_choice)
{
// 电脑做出选择
srand((unsigned)time(NULL)); // 初始化随机数种子
c_choice = 1 + rand() % 3; // 生成[1,3]之间的随机整数
switch(c_choice - u_choice)
{
case -1:
case 2:
return 1; // 用户赢了
case -2:
case 1:
return -1; // 用户输了
case 0:
return 0; // 平局
}
return 0;
}
// 打印猜拳
int printfChoice(int choice)
{
switch (choice) {
case 1:
printf("出的是剪刀\n");
break;
case 2:
printf("出的是石头\n");
break;
case 3:
printf("出的是布\n");
break;
default:
printf("无效选择\n");
return 0;
}
return 1;
}
int main()
{
int u_choice; // 用户的选择
int c_choice; // 电脑的选择
int result = 0; // 猜拳结果
for (int i = 1; i <= 10; i++) {
// 用户做出选择
printf("请输入你的选择(1:剪刀、2:石头、3:布):");
scanf_s("%d", &u_choice);
// 打印用户猜拳
printf("用户:");
if (!printfChoice(u_choice)) return 0;
// 猜拳结果
result = fun(u_choice, c_choice);
// 打印电脑猜拳
printf("电脑:");
printfChoice(c_choice);
// 打印猜拳结果
if (result > 0)
printf("用户赢了\n");
else if (result == 0)
printf("双方平局\n");
else
printf("用户输了\n");
}
return 0;
}