我是靠谱客的博主 闪闪鞋垫,最近开发中收集的这篇文章主要介绍C语言——一个简单的答题系统,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

此次作业为制作一个20道判断题的答题系统

此次作业遇到难点:

1.随机出题;

2.支持输入空格;

3.若输入格式错误能够再进行输入;

4.结束后输出答题错误的题目且计算分数;

随机出题

我是用随机数保存一个数组,再运用数组里面的数来输出相应题目来达到随机出题效果

数组刚好20个数,若数组内的数重复则会重新获取随机数

随机数数组:

	int a[20];
	int i,j,c;
	srand((unsigned)time(NULL));
	for(i=0;i<20;i++)
	{
		a[i]=1+rand()%20;
		c=0;
		for(j=0;j<i;j++)
		{
		if(a[i]==a[j])
		c++;
		}
		if(c!=0)
		i--;
	}

支持输入空格

构建一个函数,利用函数删除输入的空格来达到输入空格再输入答案也正确的效果

删除空格的函数:

void fun(char *qc)
{
	char *qc_a=qc;
	int i=0;
	int j=0;
	for(i=0;qc[i]!='';i++)
	{
		if(qc[i]!=' ')
			qc_a[j++]=qc[i];
	}
	qc_a[j]='';
	qc=qc_a;	
}

若输入格式错误能够再进行输入

构建一个判断正确与错误的函数,若输入格式错误再引用一次函数

判断正确与错误的函数:

void zhengque()
{
	void fun(char *str);
	printf("请输入答案:");
	char str[100];
	gets(str);
	fun(str);
	if(strcmp(str,"T")==0){printf("恭喜你,答对了!!!nn");fs+=5;}
	else if(strcmp(str,"t")==0){printf("恭喜你,答对了!!!nn");fs+=5;}
	else if(strcmp(str,"Ture")==0){printf("恭喜你,答对了!!!nn");fs+=5;}
	else if(strcmp(str,"ture")==0){printf("恭喜你,答对了!!!nn");fs+=5;}
	else if(strcmp(str,"F")==0){printf("答案错误,再接再厉     正确答案是Tnn");cw=1;}
	else if(strcmp(str,"f")==0){printf("答案错误,再接再厉     正确答案是Tnn");cw=1;}
	else if(strcmp(str,"false")==0){printf("答案错误,再接再厉     正确答案是Tnn");cw=1;}
	else if(strcmp(str,"False")==0){printf("答案错误,再接再厉     正确答案是Tnn");cw=1;}
	else 
	{printf("请输入正确格式!(T/F;t/f;Ture/False;ture/false)n");
		zhengque();}
}
void cuowu()
{
	void fun(char *str);
	printf("请输入答案:");
	char str[100];
	gets(str);
	fun(str);
	if(strcmp(str,"T")==0){printf("答案错误,再接再厉     正确答案是Fnn");cw=1;}
	else if(strcmp(str,"t")==0){printf("答案错误,再接再厉     正确答案是Fnn");cw=1;}
	else if(strcmp(str,"Ture")==0){printf("答案错误,再接再厉     正确答案是Fnn");cw=1;}
	else if(strcmp(str,"ture")==0){printf("答案错误,再接再厉     正确答案是Fnn");cw=1;}
	else if(strcmp(str,"F")==0){printf("恭喜你,答对了!!!nn");fs+=5;}
	else if(strcmp(str,"f")==0){printf("恭喜你,答对了!!!nn");fs+=5;}
	else if(strcmp(str,"false")==0){printf("恭喜你,答对了!!!nn");fs+=5;}
	else if(strcmp(str,"False")==0){printf("恭喜你,答对了!!!nn");fs+=5;}
	else {printf("请输入正确格式!(T/F;t/f;Ture/False;ture/false)n");
		cuowu();}
}

结束后输出答题错误的题目且计算分数

构建一个全局变量cw与fs,令他们的初值为0

若答题错误则令cw=1,当cw=1时将题目序号储存在数组里同时将cw赋回0

若答题正确则令fs+5

最后答题完成后输出即可

最后题目我是用switch-case来接收随机数以达到随机出题的效果

 void tm(int n)
	{
		void zhengque();
		switch(n){
			case 1:printf("十进制数2004等值于八进制数3724n");zhengque();break;
			case 2:printf("十进制数221用二进制表示是11011101n");zhengque();break;
			case 3:printf("计算机内部采用二进制n");zhengque();break;
			case 4:printf("十六进制数2BA对应的十进制数是698n");zhengque();break;
			case 5:printf("十进制数45用二进制数表示是101101n");zhengque();break;
			case 6:printf("二进制数1111101011011转换成十六进制数是1F5Bn");zhengque();break;
			case 7:printf("十六进制数CDH对应的十进制数是205n");zhengque();break;
			case 8:printf("十进制数75用二进制数表示是1001011n");zhengque();break;
			case 9:printf("有一个数是123,它与十六进制数53相等,那么它是八进制数n");zhengque();break;
			case 10:printf("6位无符号的二进制数能表示的最大十进制数是63n");zhengque();break;
			case 11:printf("任意的二进制有限小数,必定也是十进制有限小数n");zhengque();break;
			case 12:printf("十进制表达式3*512+7*64+4*8+5的运算结果,用二进制表示为11111100101n");zhengque();break;
			case 13:printf("与二进制数101.01011等值的十六进制数为5.58n");zhengque();break;
			case 14:printf("十进制数2006等值于十六进制数7D6n");zhengque();break;
			case 15:printf("十进制数2003等值于二进制数11111010011n");zhengque();break;
			case 16:printf("一个非零无符号二进制整数后加两个零形成一个新的数,新数的值是原数值的4倍n");zhengque();break;
			case 17:printf("十进制数291等值于十六进制数123n");zhengque();break;
			case 18:printf("十六进制数5BB等值于十进制数1467n");zhengque();break;
			case 19:printf("某汉字的区位码是5448,它的机内码是D0D0Hn");zhengque();break;
			case 20:printf("十进制数0.625等值于二进制数0.101n");zhengque();break;
		}
	}

以上就是此次作业思路,有些东西参考了下百度

最后

以上就是闪闪鞋垫为你收集整理的C语言——一个简单的答题系统的全部内容,希望文章能够帮你解决C语言——一个简单的答题系统所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部