C语言从零开始(我) #1---超超基础剪刀石头布程序复现

(文中提及函数如有需要请到MSDN查询用法)

(点击进入)


一、新学内容

  1. rand函数基础
  2. time函数应用

二、代码主体

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
	char player=0;          
	int computer=0;
	int result=0;
	srand(time(NULL));
	
    printf("A:剪刀\nB:石头\nC:布\nD:退出\n");
	scanf("%c", &player);

	while (1)
	{
		switch (player)
		{
		case 65:
		case 97:
			player = 6;
			printf("你出了剪刀\n");
			break;

		case 66:
		case 98:
			player = 9;
			printf("你出了石头\n");
			break;

		case 67:
		case 99:
			player = 12;
			printf("你出了布\n");
			break;
			
		case 68:
		case 100:
			printf("游戏退出\n");
			break;
		}
		
		computer = (rand()%4);
		switch (computer)
		{
		case 1:
			printf("电脑出了剪刀\n");
			break;
		case 2:
				printf("电脑出了石头\n");
				break;
		case 3:
			printf("电脑出了布\n");
			break;
		}
		result = (int)player + computer;
		if (result==9||result==10||result==14)
		{
			printf("你赢了");
			return 0;
		}
		else if (result==8||result==12||result==13)
		{
			printf("你输了");
			return 0;
		}
		else
		{
			printf("平局");
			return 0;
		}
	}
}

三、浅谈思路

想要写出剪刀石头布程序,首先需要解决的第一件事就

如何让系统来是判定胜负

这里使用的是对玩家与电脑出招赋值

根据双方所出招式(突然词穷了)赋值之和来判定胜负

所以 就需要随机取值

四、代码解读

这段代码有一个对于初学者来说的难点(因为我学那本书里没有0.0):

随机取值

C语言里随机取值使用

rand()

但是rand()函数为假随机, 理解为同一个rand只有第一次生成的数字为随机。

后面在此运行都为第一次生成的数字(个人理解 错误请纠正)。

所以这里要引入一个新的函数  

srand()

可以看到MSDN里中定义为给rand()函数一个初始种子值。

如果初始种子是一样的话,

那么rand函数随机生成数字也是一样的(不重启情况下)。

srand一次运行只用执行一次 所以将其放在while循环之外。

但又遇到一个问题,如何让种子每次都不一样呢?

于是 我们再次引入函数

time()

 我们看到time()函数返回值为从19701.1午夜到现在的秒数 

即每时每刻返回值都不同

由于不需要存储这个值 所以直接设定为NULL 

即 time(NULL)

确定界限

再使用取余来确定上限(原理为余数不会大于除数)

将取余后的值加上一个数字来确定下限、

例:

a=(rand()%10+50)

a范围即为50-59

如此 随机取值结束

五、闲谈

新手们都要加油啊!!

应该会日更吧?

有不足或者缺陷欢迎指出!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值