user-0 提问: 各位大哥大姐 帮帮忙 偶是计算机菜鸟 要完成课程设计 这是我自己写 一直不知道怎么改

回复:
user: user-1
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。

user: user-0
content: 额 这个功能可以追加题目

user: user-0
content: #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<string.h> #include<time.h> #include<conio.h> #define MAX 200 #define  N  30 int read(int k);/*读取文件并显示试卷*/ int test();/*选择试卷难度*/ void insert ();/*插入题库*/ int match(int n,char c,char a);/*判定正确与错误*/ struct question  {    char quest[MAX];    char option1[N];    char option2[N];    char option3[N];    char option4[N];    char ans; }; int i; int m; FILE *fp; struct question questdata[N]; /*用于存放试题的结构体数组*/ int main(void) { 	int x; 	int y; 	y=0; 	while(1) 	{ 		printf("\n欢迎登陆选择题标准化系统\n"); 		printf("\n "); 		printf(" \t完成试卷并评分 <1>\n"); 		printf(" \t导入试题库     <2>\n"); 		printf(" \t退出系统       <3>\n");          scanf("%d",&x);	 		while(x!=1&&x!=2&&x!=3) 		{ 			printf("请重新输入 选择<1-3>\n"); 		    scanf("%d",&x); 		} 		 		switch(x) 		{ 	    	case 1: 				{ 			     	system("cls"); 					m=test(); 					read(m); 					break; 				} 			case 2:  				{ 					system("cls");  			  		insert(); 				     break; 				} 			case 3: 				{ 					system("cls");   					y=2; 					break; 				} 			 		}         if(y==2) 			break; 			 	} 	return 0; }  int read(int k) {	 	int choice,j,a[30],total=0; 	srand(time(NULL));/*用于产生随机数*/ 	if((fp=fopen("e:\\test.txt","a"))==NULL)/*读取文件text.dat*/ 		printf("无法打开文件\n"); 	while(!feof(fp))/*使用feof函数检查文件是否结束*/ 		for(i=0;i<k;i++) 		{ 			a[i]=(rand()%k);/*产生随机数并保证不重复，如果一次相同i-1加一 保证m道题*/ 			if(i>0) 			for(j=i-1;j>=0;j--) 			{ 			   if(a[i]==a[j]) 			   { 				 i--; 				 break; 			   } 			   for(i=0;i<k;i++) 				j=a[i]; 			   fread(&questdata[j],sizeof(struct question),1,fp);/*随机读取m道题目*/ 		       printf("%d %s",i,questdata[j].quest[MAX]);/*输出试题*/ 			   printf("A %s",questdata[j].option1); 			   printf("B %s",questdata[j].option2); 			   printf("c %s",questdata[j].option3); 			   printf("D %s",questdata[j].option4); 			   printf("请输入答案：\n"); 			   scanf("%c",&choice); 			   total+=match(k,choice,questdata[j].ans); 			} 			   printf("你的总成绩为：%d",total); 		} 		return 1;  }    int test()/*根据难度选择试卷 难易体现在题量上*/ {    int n,m;    printf("\t\t\t请选择试卷难度:\n");    printf("\t\t1 容易 2 中等 3 困难\n");    scanf("%d",&n); 	while(n!=1&&n!=2&&n!=3) 	{ 		printf("\t\t请重新输入 选择<1-3>\n"); 	}    switch(n)    {       case 1: m=5; break;       case 2: m=10; break; 	  case 3: m=20; break;    }    return m; } //用于试卷评分 评一道题根据等级选择每道题分数  int match(int n,char c,char a) { 	int score; 	switch(n) 	{ 	  case 1: score=20; break;/*做对一道题的得分*/       case 2: score=10; break; 	  case 3: score=5; break; 	} 	if(c!=a)/*如果答案不正确，得分为0*/ 	{ 		score=0; 		printf("答案错误\n"); 	} 	else printf("答案正确\n"); 	return score; }  void insert() { 	while(1) 	{ 	  char sign; 	  int m; 	  FILE *fp;       struct question *p; 	 printf("请输入要插入的选择题数目:\n"); 	 scanf("%d",&m); 	 fflush(stdin);      for(i=0;i<m;i++) 	 {           p=(struct question*)malloc(sizeof(struct question)); 	      printf("请输入要插入的题干内容：\n"); 	      scanf("%s",&p[i].quest); 	      printf("请输入A选项内容\n"); 		  scanf("%s",&p[i].option1); 		   printf("请输入B选项内容\n"); 		   scanf("%s",&p[i].option2); 			printf("请输入C选项内容\n"); 		   scanf("%s",&p[i].option3); 	       printf("请输入D选项内容\n"); 		   scanf("%s",&p[i].option4); 	      printf("请输入答案选项<A-D>\n"); 		  scanf("%s",&p[i].ans); 		   fflush(stdin); 	 } 	    if(( fp=fopen("e:\\test.txt","a+"))==NULL) 		{ 			printf("文件不存在，现在已重新在指定路径生成文件\n"); 			fp=fopen("e:\\test.txt.","wb"); 		} 		if(fp==NULL) 		{ 			 printf("\n文件打开出错\n"); 			  getchar(); 			  exit(-1);  		} 	     fwrite(p,sizeof(struct question),1,fp); 	     fclose(fp); 	  	  printf("是否继续插入题目,继续请按Y,退出请按N\n"); 	   	   sign = getchar(); 		  if(sign == 'N'||sign == 'n') 		  { 			  system("cls");	//清屏函数 			  break; 		  }  	} 	 	 }  这是修改过的 但是那个试题的插入还是有点问题

user: user-2
content: 为什么要一道一道去导入题目呢？直接把要导入的题目存放在文件里然后合并到原题库文件不就行了吗？

user: user-3
content: 先把你的代码格式弄得好看点。 注意 锁紧、断行。