我是靠谱客的博主 贪玩钢笔,最近开发中收集的这篇文章主要介绍用C语言随机抽取选择题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、基本函数

1.rand

在C语言中,如果要实现随机抽取,需要用到rand

rand()会返回一个范围在0到RAND_MAX(32767)之间的伪随机数(整数)。

在调用rand()函数之前,可以使用srand()函数设置随机数种子,如果没有设置随机数种子,rand()函数在调用时,自动设计随机数种子为1。随机种子相同,每次产生的随机数也会相同。

rand()函数需要的头文件是:<stdlib.h>

使用rand()函数产生1-100以内的随机整数:int ret = rand() % 100 + 1;

2.srand

srand()函数需要的头文件仍然是:<stdlib.h>

srand()用来设置rand()产生随机数时的随机数种子,使用rand()和srand()产生1-100以内的随机整数:srand(time(0));

 int ret = rand() % 100 +1

随机数(1~ a)公式:

 ret = rand() % a + 1;

3.time

头文件:<time.h>
为了使随机数更随机,我们通常以当前时间为种子,产生随意数。time(NULL)用来获取当前时间,本质上得到的是一个大整数,然后用这个数来随机数。

#include <stdlib.h>
#include <time.h>
srand((unsigned int)time(NULL));
ret = rand() % 20 + 1;

二、常见问题

1.随机数卡顿

通常我们用srand(time(NULL));语句,就是用当前时间(单位是秒)给rand()的运算设初值,但由于你每次都用这句,所以当时间相同时,运算出来的伪随机数就是相同的。而由于time()函数的单位是秒,所以程序就一直循环,直到过了大约1秒钟,两次srand(time(NULL));设的初始数字不同时,才可能找到下一个数,而且这个数还是不够随机的。如此一来,你每产生一个新数的时间至少要1秒钟,自然7个数要10秒钟也就很正常了。

但是,如果把srand()语句挪到main()函数的开头,就可以很好地解决这个问题。

int main()
{
	srand((unsigned int)time(NULL));
	for (i = 0; i < 20; i++)
	{
		ret = rand() % 20 + 1;

2.抽取到相同的随机数

这个时候可以用数组来过滤掉相同的随机数

for (i = 0; i < 20; i++)
	{
		ret = rand() % 20 + 1;
		for (j = 0; j < i; j++)
		{
			if (arr[j] == ret)
			{
				i--;
				j = -1;
				break;
			}
		}
		if (j < 0)
			continue;

3.空格问题
如输入A和输入A[空格][空格]输入的结果都是一样的,那么我们应该怎样解决这个问题呢?

这里我们需要用到isspace函数
isspace函数主要用于检查参数c是否为空白字符。
头文件:<ctype.h>

#include <ctype.h>
scanf_s("%s", arr2, 1000);

		for (j = 0;arr2[j] != ''; j++)
		{
			if (isspace(arr2[j]))
				continue;
			else
				arr3[j] = arr2[j];
		}

三、其它人性化设计

1.输入问题

if (*w == e || *w == (e + 32))
	{
		n++;
		printf("恭喜你!答对了!n————————————————————n");

虽然选择题只有A/B/C/D四个选项,但这样会更加符合具体的答题场景,也更受人们喜欢。

2.记录题目的正确与错误

printf("你答对了以下题目:n");
	for (i = 0; arr6[i] != ''; i++)
	{
		printf(" %d", arr6[i]);
	}
	printf("n");
	printf("你答错了以下题目:n");
	for (i = 0; arr7[i] != ''; i++)
	{
		printf(" %d", arr7[i]);
	}
	printf("n");

3.计算正确率

s = n / 20.0 * 100;
	printf("你的正确率是%.2f%%,", s);
	if (s >= 90 && s <= 100)
		printf("你真优秀!n");
	else if (s >= 80)
		printf("继续加油!n");
	else if (s >= 60)
		printf("不要灰心!n");
	else
		printf("还有待提高啊!n");

四、感悟

通过这次实践,我认识到自己还有很多知识囫囵吞枣,没有掌握透彻,同时也对编程有了更深刻的理解,作为一个刚接触编程的大学生,我会更加努力,认真踏实,与大家共勉。

最后

以上就是贪玩钢笔为你收集整理的用C语言随机抽取选择题的全部内容,希望文章能够帮你解决用C语言随机抽取选择题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部