在学习这些语法初期,可以学着写一些有趣的小东西来提升学习兴趣.

写一个随机数为1-100的猜数字小游戏.

 一.   在C语言中:  使用while循环 / goto语句  和if条件语句来达成需求.

下面展示代码:

1.while语句方式

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
	srand((unsigned int)time(NULL));     //初始化随机数生成器(下面详细介绍)
	int num = rand() % 100 + 1;            //rand()函数来创造随机值
	int guess_num = 0;
	while (1)                            //如果输入的数字不符合要求,则进行无限循环
	{
		printf("请输入一个数字:");        //提示输入数字
		scanf("%d", &guess_num);   
		if (guess_num == num)
		{
			printf("恭喜你,猜对了!\n");        //数字猜对了,break 跳出while循环
			break;
		}
		else if (guess_num > num)
		{
			printf("你猜大了\n");           //猜大了,继续循环
		}
		else
		{
			printf("你猜小了\n");           //猜小了,继续循环
		}
	}
	return 0;
}

(1).创造随机数:使用rand()函数,在这里,它创造的并不是真正的随机数,rand() 生成的是伪随机数(范围是0-RAND_MAX)(RAND_MAX在大多数系统中是32767),序列由种子唯一决定(一般默认种子为1),如不做处理,那每次调用它得出的数字会是不变的.

故需使用srand()-函数初始化随机数生成器,上述默认情况下即srand(1),里面的1就是所谓的种子,种子改变会让随机值改变,若想让每次创造的随机值不同,必须让种子不断变化.

提到不断变化的量,我们常会想到时间(time),它时时刻刻在变化,于是这里我们采用time()函数来满足要求,此函数可以获得当前系统时间(从 1970 年 1 月 1 日 00:00:00 UTC 起的秒数)(规定)

(2).(unsigned int)time(NULL): 

 参数 NULL 表示不需要存储时间值,直接返回结果

 (unsigned int) 强制类型转换:将 time() 返回的 time_t 类型值转换为 unsigned int 类型。

(3).至此,我们就可以得到一个随机数(在上方提到的范围内),数字太大不好猜.故将rand()%100

取余100使r值范围变成0~99,再+1使r值范围变成1~100.

(4).当n==r时,if语句中的break便可以跳出while循环,否则将继续循环直至猜对.

2.goto语句方式

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
	srand((unsigned int)time(NULL));
	int num = rand() % 100 + 1;
	int guess_num = 0;
	again:                                   #goto跳回的位置
		printf("请输入一个数字:");
		scanf("%d", &guess_num);
		if (guess_num == num)
		{
			printf("你猜对了!\n");
		}
		else if (guess_num > num)
		{
			printf("你猜大了\n");
			goto again;                    #在下面两种猜错的情况下,goto跳回数字输入阶段来创造
		}                                  #循环
		else
		{
			printf("你猜小了\n");
			goto again;
		}
		return 0;
}

创造随机数部分与上方相同,主要是goto语句的使用

注意:goto语句的使用不当可能会产生混乱等,需视情况适合使用.

二.python方式

import random                                   #导入随机数模块,生成1~100的随机数
num = random.randint(1,100)
flag = True
guess_num = 0
while flag:                                     #用bool变量控制循环,猜中后flag变成False
    guess_num = int(input("请输入一个数字:"))    #退出循环
    if guess_num == num:
        print("恭喜你,猜对了!")
        flag = False
    elif guess_num > num:                       #所有的if else语句都存在于while中,猜错会一直 
        print("你猜的数大了")                    #循环直至猜对结束
    else :
        print("你猜的数小了")

1.random.randint(a,b) 是python内置random模块中的随机整数函数,会随机生成一个在a,b之间(包括a,b)的随机整数.

python在使用上较C语言更为简单,在此不多加赘述.

文章如有问题,还请佬们不吝赐教.

IT小白,在这里不断更新学习中的收获总结和困难反思.

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐