【C语言项目】好玩又实用的程序——用C语言设计一个随机“捉鳖”程序

1、随机数的生成

前几天啊,班里要选人去学那什么健美操,采用捉鳖的方式,我突发奇想能不能用c语言设计个随机抽号程序,程序的精髓在如何“随机”。

查阅后,rand函数可以生成随机数,于是先跑起来让它生成十个随机数并输出
在这里插入图片描述

而后让它跑第二次

在这里插入图片描述

发现和第一次生成的随机数无差别。这不符合我们的需要!
于是我认真地查阅了这个函数,发现它在使用前还需要一个srand函数来设置随机数。

The srand function sets the starting point for generating a series of pseudorandom integers. To reinitialize the generator, use 1 as the seed argument. Any other value for seed sets the generator to a random starting point. rand retrieves the pseudorandom numbers that are generated. Calling rand before any call to srand generates the same sequence as calling srand with seed passed as 1.

看到英文就迷瞪…大概就是为srand函数需要一个随机源来为rand函数设置随机数,那随机源哪来的呢??时间时时刻刻在变,来调用电脑上的时间不就迎刃而解了嘛。

srand((unsigned) time(NULL));

第一次使用
在这里插入图片描述
第二次使用在这里插入图片描述

到这里就解决了随机的问题!

2、反复捉鳖与程序设计

一个程序,应有自己的界面,玩法,所以我们来将其优化一下。
先创建一个菜单函数。

void menu()
{
	printf("1.抽取————————0.放弃\n");
}

进入程序,选择进行抽取还是放弃。
而这个程序有可能被重复使用,所以还得有个循环,并且是那种先进入循环后判断条件的do while语句可以帮我们实现。

       do
	{
		menu();
		scanf("%d", &input);
    }while(input);

下一步,我们要根据使用者的选择去进行下一步。
if分支可以实现,但是用switch进行多分支循环比if方便许多。

do
	{
		menu();
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			break;
		case 0:
			break;
		}
	} while (input);

当使用者选择1后,程序要开始抽号输出,我需要的是1-27号,所以用取模来实现

do
	{
		menu();
		scanf("%d", &input);
		Sleep(1000);
		switch (input)
    	{
		case 1:
			printf("抽到的学号是:%d\n", rand() % 27 + 1);
			break;
		case 0:
			break;
		}
	} while (input);

至此,游戏

3、细节优化

在使用中发现,当使用者选择1后,发现程序运行的太快,所以需要程序运行慢一点,也给在等待的同学中一点紧张感。
Sleep函数(程序休眠函数)

int input = 0;
	do
	{
		menu();
		scanf("%d", &input);
		switch (input)
		{
		case 1:
		    Sleep(1000);
			printf("抽到的学号是:%d\n", rand() % 27 + 1);
			break;
		case 0:
			break;
		}
	} while (input);

至此,一个完整的程序就出炉了!以后会经常写一点实用的,希望大家多多关注!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值