首先,一个答题系统要输出题目。因此需要一个题库,题库怎么存题是个问题,如果用二维数组存题目,那么最后做出的程序就很占空间。这时选用switch语句就非常的好,它不用向系统申请储存空间,能够减少储存并提高效率。
接下来,我们就要输出题目了(总数要确定好),输出题目需要随机输出,这是我们需要一个头函数
#include<ctime>
这样我们的函数就可以根据当时的时间来产生一个随机数,但为了不输出重复的题目,我们最好用一个数组存该题目里未输出的题目的题号(switch语句中的编号),这样在得到随机数后,我们可以以随机数作为数组的下标来提取里面的题目编号,同时我们为了不产生重复的题目,我们就必须减少题目的数量,那么这个编号就不能再被用了,此时数组就产生了作用,我们可以将该数组里的该下标里的编号和该数组里的最后一个下标的编号进行交换,再将产生的随机数的上限减一,我们可以用yu来表示上限,代码如下:
rnd=rand()%yu;//产生随机数
yu--;
有了随机数后,我们就可以提取存在switch语句里的题目了。
然后我们要做一个答案判断系统。我们要输入你的答案,为了使你的输入更人性化,你最好用scanf函数进行输入,这样可以避免回车和空格带来的影响(在输入你的答案前),然后就要和答案进行比较,此时你可以选择用二维数组来存或者用switch语句来存,如果用二维数组来存,那么你答案题库的代码量就会减少很多,但同时你就无法解决大小写不同导致的结果判断不同的现象(适合用于那些答案非常严格的题目),如果用switch语句的话,就可以根据具体题目进项判断,这样就更人性化。
判断:
1、区分大小写,此时我们可以用string.h函数库里的strcmp函数进行判断。
2、不区分大小写,我们可以将答案的代码全都改为小写或者大写,当输入答案时将答案转为相同的大小写,这样再用string.h函数库里的strcmp函数进行判断就能达到目的。
最后达到要输出的题目数后就结束了。
建议开始时用如下代码
#define 变量名 输出的题目数
个人补充(人性化)(判断用switch语句):
1、我们可以加一个记分系统,当判断对的时候就加一分,这样就可以让答题者知道自己答对了多少题,可以用自定义函数返回分数和输出。
2、加个延时功能,这时我们要用如下头函数和代码:
#include<Windows.h>
Sleep(具体时间,以毫秒计);
3、可以加一个改字体颜色的代码:
#include<Windows.h>
int color(int x)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
return 0;
}
color(颜色编号0~F);
它改的是接下来的输出代码的颜色,所以有必要的时候还要改回来。