首先阐明规定:
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 这三个数字在“剪刀石头布”意义上的大小和输赢的?凑的过程见上面表格:
具体执行后的后果见下图: