用C语言设计一个简易的选择题答题系统

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

本文写的是一名刚接触C语言的小白在编写时遇到的一些问题以及解决方法。

要求:1.20道题

           2.随机出题,题目顺序不一样


提示:以下是本篇文章正文内容,下面案例可供参考

一、问题一:如何产生随机数(不重复)

 对于一名小白来说,刚看到时真的不知道怎么下手。在经过不断思考后,最后采用的是以下方法:

       采用随机数的方法:首先我们需要用到随机数函数rand(),以及头文件<stdlib.h>。

用法如下:

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int x;
    x=rand();
	printf("%d",x);
	return 0;
} 

 但是这用随机数实际上是伪随机数。为什么这么说呢?函数rand()输出的随机数实际上是根据算法计算出来,并不能每次都随机。举个例子,第一次运行会随机输出,一个数,但二次或者多次运行仍是第一次的结果,所以我们还需要另一个函数srand和另一个头文件<time.h>

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
	int x;
	srand(time(NULL));
	x=rand();
	printf("%d",x);
	return 0;
} 

 此时我们可以输出一个真正的随机数。但此时问题又来了,我们只需要1-20以内的随机数啊,如何控制随机数的范围呢?其实很简单,只需要将代码稍稍修改一下即可,具体操作如下:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
	int x;
	srand(time(NULL));
	x=rand()%20+1;
	printf("%d",x);
	return 0;
}

 现在我们就可以得到1-20之间的随机数了,是不是很简单呢?接下来就是如何让产生的20个随机数不重复:

int i,j,x,a[20]={0};//数组初始化为0 
x = rand()% 20 + 1;//生成 1~20  之间的随机数 
a[0] = x; //第一个不会重复
for(i=1; i<20; i++)
    {    //生成数组前20个随机数
		x = rand()%20+1;
		a[i] = x;
		for(j=0; j<i; j++)
        {    //筛选有效随机数 
			if(a[i] == a[j])
            {    //随机数重复,则随机数无效
			    i-=1;//随机数无效,数组下标减1,重新生成当前数组随机数
				break;
			}
		}
	}

 到此不重复的随机数就产生了。

 

二、问题二:如何录入题目

废话不多说,继续讲如何录入题目。我采用的是通过用2维数组方法来存储题目以及选项 ,刚开始没想明白的时候感觉挺难的,后来发现其实非常简单,举例如下:

char tm[20][1000];
char da[20]
strcpy(tm[0],"如果int a=3,b=4;则条件表达式a<b? a:b的值是( )\nA.3\tB.4\tC.0\tD.1\n");//录入第一题
da[0]='A';//配对第一题答案

如此依次将题目录入即可,配合问题一所述,答题系统大体框架基本完成。

总结

提示:这里对文章进行总结:

对我而言,答题系统的主要难点在于随机数的抽取,今天写这篇文章希望可以帮助到跟我一样的新手。大家有什么更好的建议可以评论区一起探讨共同进步。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值