首先阐明规定:

0、1、2三个整数别离是剪刀石头布在程序中的外部示意,用户也要求输出0、1或2,而后和计算机随机生成的0、1或2比输赢,这个程序的主体是一个死循环,须要按Ctrl-C退出程序!
    #include <stdio.h>    #include <stdlib.h>    #include <time.h>    int main(void)    {        char gesture[3][10] = {"scissor", "stone","cloth"};        int man, computer, result, ret;        srand(time(NULL));        while (1)        {            computer = rand() % 3;            printf("\nInput your gesture (0-scissor 1 -stone 2 - cloth) :\n ");            ret = scanf("%d", &man);            if (ret != 1 || man < 0 || man > 2)            {                printf("Invalid input! Please input 0, 1 or 2.\n");                continue;            }            printf("Your gesture: %s\tComputer's gesture: % s\n ",                 gesture[man],gesture[computer]);            result = (man - computer + 4) % 3 - 1;            //此处为外围代码!            if (result > 0)                printf("You win!\n");            else if (result == 0)                printf("Draw!\n");            else                printf("You lose!\n");        }        return 0;    }

依据对result的输赢判断条件可知,当result(即咱们输出的和电脑随机生成的后果通过计算之后的后果)大于0,咱们赢,小于0,咱们输,等于0,打成平手!
那么(man - computer + 4) % 3 - 1这个神奇的表达式是如何管制比拟出0、1、2这三个数字在“剪刀石头布”意义上的大小和输赢的?凑的过程见上面表格:


具体执行后的后果见下图: