C_逻辑题: 石头,剪刀,布

来源:互联网 发布:淘宝店运营方案论文 编辑:程序博客网 时间:2024/05/18 06:13

胜负逻辑的判断技巧:

思路转变
石头 = 1
剪刀 = 2
布 = 3
电脑 c
玩家 p
双方的选择无外乎 1 2 3
选项差值无外乎:0,1,2,-1,-2

现在我们站在玩家角度分析:

差值为0时, 一定是平手,不解释

-1 对应的所有情况:
石头对剪刀
剪刀对布

-2 对应的所有情况:
剪刀对布

1对应的所有情况
剪刀对石头
布对剪刀

2对应的所有情况
布对石头

所以无论站在任何一方的角度来看:
自己的选项-对方的选项 = 1 || -2时都是输
自己的选项-对方的选项 = -1 || 2时都是赢
自己的选项-对方的选项 = 0时为平手

所以判断输赢就简化成了,判断双方选择的差值。

丢代码:

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<Windows.h>#include<time.h>void check(char p){    srand(time(NULL));    char c;    int result;    c = rand() % 3 + 65;    printf("\n电脑选择了:  %c  ", c);    if (c == 'A') printf("石头\n");    if (c == 'B') printf("剪刀\n");    if (c == 'C') printf("布\n");    result = p - c;    if (result == 0)    {        printf("\n\n本局结果:  打了个平手!!!");    }    else{        if (result == -1 || result == 2){            printf("\n本局结果:  玩家胜 猴赛雷啊!!!");         }        else{            printf("\n本局结果:  电脑胜 再接再厉!!!");        }    }}int main(){    char player;    printf("\n\n请选择字母出招:  \n");    printf("A--石头\t\tB--剪刀\t\tC--布\n");    scanf("%c", &player);    getchar();    printf("\n您选择了:  %c  ", player);    if (player == 'A') printf("石头\n");    if (player == 'B') printf("剪刀\n");    if (player == 'C') printf("布\n");    printf("\n\n君子一言,驷马难追,少年,请按回车确认!");    getchar();    check(player);    getchar();    return 0;}
原创粉丝点击