C语言——客观题考试系统

又一个课设,代码是舍友写的(跟我写的有点差距哈),码起来,说不定明年还能用到(滑稽)
C语言——客观题考试系统_第1张图片

#include
#include
#include
#include
struct que{
	char a[100],b[100],c[100],d[100],q[100];
	char answer[2];
}q[100];
void add()//增加题目
{
	FILE *fp=fopen("file08.txt","a+");
	que f;
	printf("请输入题目\n");
	scanf("%s",f.q);
	printf("请输入A选项\n");
	scanf("%s",f.a);
	printf("请输入B选项\n");
	scanf("%s",f.b);
	printf("请输入C选项\n");
	scanf("%s",f.c);
	printf("请输入D选项\n");
	scanf("%s",f.d);
	printf("请输入正确答案\n");
	scanf("%s",f.answer);
	fprintf(fp,"%s %s %s %s %s %s\n",f.q,f.a,f.b,f.c,f.d,f.answer);
	fclose(fp);
}
void exam()//进行考试
{
	que ex[5];
	int n=0;
	FILE *fp=fopen("file08.txt","a+");
	char arr[100];
	while ((fgets (arr, 100, fp)) != NULL){
		int len=strlen(arr);
		int m=0,p=0;
		for(int i=0;i<len-1;i++){
			if(arr[i]==' '){
				m++;
				p=0;
				continue;
			}
			if(m==0){
				q[n].q[p++]=arr[i];
				q[n].q[p]='\0';
			}
			if(m==1){
				q[n].a[p++]=arr[i];
				q[n].a[p]='\0';
			}
			if(m==2){
				q[n].b[p++]=arr[i];
				q[n].b[p]='\0';
			}
			if(m==3){
				q[n].c[p++]=arr[i];
				q[n].c[p]='\0';
			}
			if(m==4){
				q[n].d[p++]=arr[i];
				q[n].d[p]='\0';
			}
			if(m==5){
				q[n].answer[0]=arr[i];
			}
		}
		n++;
	}//从文件读取题目
	for(int i=0;i<5;){
		srand((unsigned)time(NULL));
		int s=rand()%n;
		ex[i]=q[s];
		int flag=0;
		for(int j=0;j<i;j++){
			if(!strcmp(ex[i].q,ex[j].q)){
				flag=1;
				break;
			}
		}
		if(flag)
			continue;
		i++;
	}//随机抽取五题
	int sum=0;
	char c[10];
	if(n<5)
		printf("题目不足5题\n");
	else{
		for(int i=0;i<5;i++){
			printf("%s( )\nA %s B %s C %s D %s\n",ex[i].q,ex[i].a,ex[i].b,ex[i].c,ex[i].d);
			printf("你的答案是");
			scanf("%s",c);
			if(c[0]==ex[i].answer[0])
				sum+=20;
		}
		printf("你的得分是:%d分\n",sum);
	}
}
int main(){
	int num;
	printf("----------欢迎使用客观题考试系统-------------\n");
	printf("---输入1增加试题,输入2进行考试,其他键退出---\n");
	while(~scanf("%d",&num)){
		if(num==1)
			add();
		else if(num==2)
			exam();
		else
			break;
		printf("输入1增加试题,输入2进行考试,其他键退出\n");
	}
	return 0;
}

有问题欢迎私信楼主,虽然我不一定回

你可能感兴趣的:(C语言)