user-0 提问: 帮忙改个bug

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 改了一下代码  你试试看吧 逻辑上的 bug， 你单步跟踪先自己试试  #include<stdio.h> #include<stdlib.h> #include<string.h>  void input(); void name();  void number(); void max(); void min();  void insert();  void alter();  void sort();  void delet();  void statistic(); void output();//函数声明   //声明结构类型  struct student  { 	char			num[15];      char			name[20];      int				chinese; 	int				math;  	int				c;  	float			sum;  	float			aver; }stu[100];  int n;   int main()  { 	int a,flag=0;  	while(1)  	{ 		printf("学生管理系统\n"); 		printf("1.输入学生信息\n");  		printf("2.按名字查询学生信息\n");  		printf("3.按学号查询学生信息\n"); 		printf("4.查找最高分学生\n"); 		printf("5.查找不及格学生\n");  		printf("6.插入学生信息\n");  		printf("7.修改学生信息\n");  		printf("8.按平均分排序\n"); 		printf("9.删除学生信息\n"); 		printf("10.统计最高分，不及格人数\n");  		printf("11.显示全部学生信息\n");  		printf("0.退出\n"); 		printf("请输入你的选择:"); 		scanf("%d",&a);  		switch(a) 		{ 		case 1: 			input(); 			break;   		case 2: 			name(); 			break;  		case 3: 			number(); 			break; 		case 4: 			max(); 			break; 		case 5: 			min(); 			break; 		case 6: 			insert(); 			break;  		case 7: 			alter(); 			break; 		case 8: 			sort();  			break; 		case 9: 			delet(); 			break; 		case 10: 			statistic();  			break; 		case 11: 			output(); 			break; 		case 0: 			flag=1; 			break; 		default: 			printf("error"); 		}  		if(flag) break;  	} }  void input()  { 	system("CLS"); 	int i; 	printf("输出你想输入的学生信息个数:"); 	scanf("%d",&n); 	for(i=0;i<n;i++)  	{ 		printf("学号:"); 		scanf("%s",stu[i].num);  		printf("姓名:"); 		scanf("%s",stu[i].name); 		printf("语文:"); 		scanf("%d",&stu[i].chinese);  		printf("数学:"); 		scanf("%d",&stu[i].math); 		printf("C语言:"); 		scanf("%d",&stu[i].c); 		stu[i].sum=(stu[i].chinese+stu[i].math+stu[i].c); 		stu[i].aver=(stu[i].chinese+stu[i].math+stu[i].c)/3; 		printf("总成绩=%4.1f\n",stu[i].sum); 		printf("平均成绩=%4.1f\n",stu[i].aver); 	} }  void name() { 	system("CLS"); 	int i; 	char name[20];  	printf("请输入学生姓名:\n"); 	scanf("%s",name); 	printf("\t学号\t姓名\t英语\t数学\tC语言\t平均成绩\t总成绩\n"); 	for(i=0;i<n;i++) 	{ 		if(strcmp(stu[i].name,name)==0)  		{ 			printf("%10s\t%s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name, 				stu[i].chinese,stu[i].math,stu[i].c,stu[i].aver,stu[i].sum); 		} 	} }  void number()  { 	system("CLS"); 	int i; 	char number[15];  	printf("请输入学号:\n"); 	scanf("%s",number); 	printf("\t学号\t姓名\t英语\t数学\tC语言\t平均成绩\t总成绩\n"); 	for(i=0;i<n;i++) 	{ 		if(strcmp(stu[i].num,number)==0)  			printf("%10s\t%s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name, 			stu[i].chinese,stu[i].math,stu[i].c,stu[i].aver,stu[i].sum); 	} }  void max ( ) { 	int i;  	int j=0; 	int k=0; 	int g=0; 	int max=0; 	for(i=0;i<n;i++) 	{ 		if(stu[i].chinese>max) 			j=i; 		printf ("语文最高分学生为：%s",stu[j].name); 	}  	for(i=0;i<n;i++) 	{ 		if(stu[i].math>max) 			j=k; 		printf ("数学最高分学生为：%s",stu[k].name); 	}  	for(i=0;i<n;i++) 	{ 		if(stu[i].c>max) 			j=g; 		printf ("C语言最高分学生为：%s",stu[g].name); 	} }  void min( ) { 	system("CLS"); 	int i; 	printf("语文不及格名单：\n"); 	for(i = 0;i < n;i++) 	{ 		if(stu[i] .chinese< 60) 		{ 			printf("姓名：%s\t", stu[i] .name); 			printf("语文成绩：%4.2f\n", stu[i] .chinese ); 		} 		else  		{ 			printf("语文没有不及格的！\n"); 		} 	} 	printf("数学不及格名单：\n");  	for(i = 0;i < n;i++) 	{ 		if (stu[i].math < 60) 		{ 			printf("姓名：%s\t",stu[i].name); 			printf("数学成绩：%4.2f\n",stu[i].math); 		} 		else  		{ 			printf("数学没有不及格的！\n"); 		} 	} 	printf("C语言不及格名单：\n");  	for(i = 0;i < n;i++) 	{  		if(stu[i] .c< 60) 		{  			printf("姓名：%s\t", stu[i] .name); 			printf("C语言成绩：%4.2f\n", stu[i] .chinese ); 		} 		else  		{ 			printf("C语言没有不及格的！\n"); 		} 	}  }  void insert() { 	system("CLS"); 	int q;  	int i; 	char a[15]; 	char b[20]; 	int s1,s2,s3; 	printf("输入插入的位置：");  	scanf("%d",&q); 	printf("\t学号\t姓名\t英语\t数学\tC语言\n");  	scanf("%s %s %d %d",a,b,&s1,&s2,&s3); 	for(i=n-1;i>=q;i--)//将插入位置后面的同学向后移动一个位置 	{ 		strcpy(stu[i+1].num,stu[i].num); 		strcpy(stu[i+1].name,stu[i].name); 		stu[i+1].chinese=stu[i] .chinese; 		stu[i+1].math=stu[i]. math; 		stu[i+1].c=stu[i].c; 	} 	strcpy(stu[q].num,a); 	strcpy(stu[q].name,b); 	stu[q]. chinese =s1; 	stu[q].math =s2; 	stu[q].c =s3;  }  void alter() { 	system("CLS"); 	int i; 	int m; 	int h; 	char q[15]; 	printf("请输入要修改的学生学号："); 	scanf("%s",q); 	for(i=0;i<n;i++) 	{ 		if (0==strcmp(stu[i].num,q))//查找该学生所在位置 			m=i; 		printf("输入要修改的科目（修改语文成绩请输入1，修改数学成绩请输入2，修改C语言成绩请输入3）"); 		scanf ("%d",&h);//为要修改的科目 		printf("您要修改为："); 		if(h==1)//修改科目为语文成绩时 		{ 			scanf("%f",&stu[m].chinese); 			printf("已修改！\n"); 		} 		else if(h==2)//修改科目为数学时; 		{ 			scanf("%f",&stu[m].math); 			printf("已修改！\n"); 		} 		else if(h==3)//修改科目为C语言时; 		{ 			scanf("%f",&stu[m].c); 			printf("已修改！\n"); 		} 	} }  void sort()  { 	system("CLS"); 	int i,j; 	char b; 	struct student temp;  	printf("\t学号\t姓名\t英语\t数学\tC语言\t平均成绩\t总成绩\n"); 	for(i=0;i<n;i++) 	{ 		for(j=i+1;j<n;j++) 			if(stu[i].sum<stu[j].sum) 			{ 				temp=stu[i]; 				stu[i]= stu[j]; 				stu[j]=temp; 			} 			printf("%10s\t%s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name, 				stu[i].chinese,stu[i].math,stu[i].c,stu[i].aver,stu[i].sum); 	} 	printf("退出"); }  void delet() { 	int i;  	char q[15];  	int m;  	int j; 	printf("输入要删除学生的学号："); 	scanf("%s",q); 	for(i=0;i<n;i++) 	{ 		if(strcmp(stu[i].num,q)==0) 			m=i; 		for(i=m,j=m+1,j<n-1;i++;j++)//将后一位学生的信息向前移动一个存储单位覆盖要删除的学生信息 		{  			strcpy(stu[i].num,stu[j].num); 			strcpy(stu[i].name,stu[j].name); 			stu[i].chinese =stu[j].chinese; 			stu[i].math =stu[j]. math; 			stu[i].c =stu[j].c; 		} 	} }  void statistic ( ) { 	system("CLS"); 	int i,e=0,m=0,c=0,x,y,z; 	for(i=0;i<n;i++) 	{ 		if(stu[i].chinese<60) e++; 	} 	for(i=0;i<n;i++) 	{ 		if(stu[i].math<60) m++; 	} 	for(i=0;i<n;i++) 	{ 		if(stu[i].c<60) c++; 	} 	printf("英语不及格人数：%d\n数学不及格人数：%d\nC语言不及格人数：%d\n",e,m,c); 	for(i=0;i<n;i++) 	{ 		if(stu[i].chinese>stu[i+1].chinese) x=stu[i].chinese; 	} 	for(i=0;i<n;i++) 	{ 		if(stu[i].math>stu[i+1].math) y=stu[i].math; 	} 	for(i=0;i<n;i++) 	{ 		if(stu[i].c>stu[i+1].c) z=stu[i].c; 	} 	printf("英语最高分：%d\n数学最高分：%d\nC最高分：%d\n",x,y,z); }  void output()  { 	system("CLS"); 	int i; 	printf("\t学号\t姓名\t英语\t数学\tC语言\t平均成绩\t总成绩\n"); 	for(i=0;i<n;i++) 	{ 		printf("%10s\t%s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name, 			stu[i].chinese,stu[i].math,stu[i].c,stu[i].aver,stu[i].sum); 	} }

user: user-2
content: /*****************************************************************************************            代码错误                      *************************************************************************************** */ void input()  { 	system("CLS");                                                                  //1 	int i;                                                                                  //2 	printf("输出你想输入的学生信息个数:");                           //3 	scanf("%d",&n);                                                              //4 	for(i=0;i<n;i++)                                                              //5 	{                                                                                      //6 		printf("学号:");                                                        //7 		scanf("%s",&stu[i].num);                                       //8 		printf("姓名:");                                                        //9 		scanf("%s",&stu[i].name);                                     //10 		printf("语文:");                                                        //11 		scanf("%d",&stu[i].chinese);                                 //12 		printf("数学:");                                                        //13 		scanf("%d",&stu[i].math);                                     //14 		printf("C语言:");                                                      //15 		scanf("%d",&stu[i].c);                                             //16 		stu[i].sum=(stu[i].chinese+stu[i].math+stu[i].c);  //17 		stu[i].aver=(stu[i].chinese+stu[i].math+stu[i].c)/3;//18 		printf("总成绩=%4.1f\n",stu[i].sum);                       //19 		printf("平均成绩=%4.1f\n",stu[i].aver);                    //20 	} } /* 第8行，num是一个字符数组，输入字符串的时候不需要对其取地址 scanf("%s",&stu[i].num);                                       //8 改成 scanf("%s",stu[i].num);                                       //8  第10行，name是一个字符数组，在输入字符串的时候不需要对其取地址了 scanf("%s",&stu[i].name);                                     //10 改成 scanf("%s",stu[i].name);                                     //10 */   void insert() { 	system("CLS");                                                                                     //1 	int q; char b; int s1,s2,s3;                                                                    //2 	printf("输入插入的位置：");                                                                //3 	scanf("%d",&q);                                                                                 //4 	printf("\t学号\t姓名\t英语\t数学\tC语言\n");                                     //5 	scanf("%d %s %f %f",&p,&a,&S1,&s2,&s3);                                     //6 	for(i=n-1,i>=q;i--)//将插入位置后面的同学向后移动一个位置           //7 	{                                                                                                          //8 		stu[i+1].num=stu[i].num;                                                         //9 		strcpy(stu[i+1].name,stu[i].name);                                           //10 		stu[i+1].chinese=stu[i] .chinese;                                              //11 		stu[i+1].math=stu[i]. math;                                                      //12 		stu[i+1].c=stu[i].c;                                                                     //13 	}                                                                                                         //14 	stu[q].num=b;                                                                                  //16 	strapy(stu[q].name,b);                                                                     //17 	stu[q]. chinese =s1;                                                                         //18 	stu[q].math =s2;                                                                              //19 	stu[q].c =s3;                                                                                     //20 } /* 第6行，学号你在结构体里面定义的是字符串，姓名也是字符串，输入格式只有4个输入，和输入参数个数对不上 输入参数p、a、S1(大写 S)没有定义，成绩是“语文”不是“英语”,“%f”是输入浮点数，“%d”才是输入整数 int q; char b; int s1,s2,s3;                                                                    //2 scanf("%d %s %f %f",&p,&a,&S1,&s2,&s3);                                     //6 改成 int q;  char b[15]; cahr a[20] int s1,s2,s3; scanf("%s %s %d %d %d",p,a,&s1,&s2,&s3);                                     //6     第7行，i 没有定义，在前面增加定义，i=n-1后面是分号，不应该是逗号 int i;                                                                                                              第9行，字符串赋值应该用 strcpy 函数，而不是直接 = 号赋值 stu[i+1].num=stu[i].num;                                                                 //9 改成 strcpy(stu[i+1].num,stu[i].num);                                                      //9  第16 17行，问题同第9行 stu[q].num=b;                                                                                  //16 strapy(stu[q].name,b);                                                                     //17 改成 strcpy(stu[q].num,a); strcpy(stu[q].name,b); */  void alter() { 	system("CLS");                                                                                       //1 	int i; int q;                                                                                             //2 	printf("请输入要修改的学生学号：");                                                    //3 	scanf("%d",&q);                                                                                   //4 	for(i=0;i<n;i++)                                                                                   //5 	{                                                                                                            //6 		if (q==stu[i].num)                                                                       //7 查找该学生所在位置       			m=I;                                                                                     //8 		printf("输入要修改的科目（修改语文成绩请输入1，修改数学成绩请输入2，修改C语言成绩请输入3）");//9 		scanf ("%d",&h);                                                                         //10 为要修改的科目 		printf("您要修改为：");                                                                //11 		if(h==1)//修改科目为语文成绩时                                                //12 		{                                                                                                   //13 			scanf("%f",&stu[m].chinese);                                             //14 			printf("已修改！\n");                                                           //15 		}                                                                                                   //16 		else if(h==2)//修改科目为数学时;                                               //17 		{                                                                                                   //18 			scanf("%f",&stu[m].math);                                                 //19 			printf("已修改！\n");                                                           //20 		}                                                                                                   //21 		else (h==3)//修改科目为C语言时;                                               //22 		{                                                                                                   //23 			scanf("%f",&stu[m].c);                                                        //24 			printf("已修改！\n");                                                           //25 		}                                                                                                     	} } /* 第2行，学生学号是字符串，所以q要定义成对应的字符数组 int i; int q; printf("请输入要修改的学生学号："); scanf("%d",&q); 改成 int i;  char q[15]; printf("请输入要修改的学生学号："); scanf("%s",q);  第7行，字符串比较用 strcmp 函数 if (q==stu[i].num)//查找该学生所在位置 改成 if (0==strcmp(stu[i].num,q))//查找该学生所在位置  第8行，m 未定义， I 要用小写的 m=I; 改成 m= i;  而且在参数定义加上m的定义 int m;  第10行， h未定义 在前面加上 h定义 int h;  第22 行， 括号前面少一个 if else (h==3)//修改科目为C语言时; 改成 else if(h==3)//修改科目为C语言时;  */   void sort()  { 	system("CLS");                                                                                                                    //1                             	int i,j;                                                                                                                                   //2 	char b;                                                                                                                                 //3 	struct student temp;                                                                                                           //4 	printf("\t学号\t姓名\t英语\t数学\tC语言\t平均成绩\t总成绩\n");                                        //5 	for(i=0;i<n;i++)                                                                                                                  //6 	{                                                                                                                                           //7 		for(j=i+1;j<n;j++)                                                                                                       //8 			if(student[i].sum<student[j].sum)                                                                     //9 			{                                                                                                                           //10 				temp=student[i];student[i]= student[j];student[j]=temp;                       //11 			}                                                                                                                           //12 			printf("%10s\t%s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,   //13 				stu[i].chinese,stut[i].math,stu[i].c,stu[i].aver,stu[i].sum);                           //14 	}                                                                                                                                           //15 	printf("退出");                                                                                                                      //16 } /* 第9 11 14行，student、stut数组名称引用错误，要用数组名stu */   剩下的写不下了 你慢慢检查吧，代码没有错误之后才能称之为bug，逻辑上的错误debug，单步跟踪，慢慢调试

user: user-0
content: 引用 5 楼 weixin_44135325的回复:void input()  { 	system("CLS"); 	int i; 	printf("输出你想输入的学生信息个数:"); 	scanf("%d",&n); 	for(i=0;i<n;i++)  	{ 		printf("学号:"); 		scanf("%s",&stu[i].num);  		printf("姓名:"); 		scanf("%s",&stu[i].name); 		printf("语文:"); 		scanf("%d",&stu[i].chinese);  		printf("数学:"); 		scanf("%d",&stu[i].math); 		printf("C语言:"); 		scanf("%d",&stu[i].c); 		stu[i].sum=(stu[i].chinese+stu[i].math+stu[i].c); 		stu[i].aver=(stu[i].chinese+stu[i].math+stu[i].c)/3; 		printf("总成绩=%4.1f\n",stu[i].sum); 		printf("平均成绩=%4.1f\n",stu[i].aver); 	} }  大佬，请继续讲解问题二

user: user-2
content: //声明结构类型  struct student  { 	char			num[15];      char			name[20];      int				chinese; 	int				math;  	int				c;  	float			sum;  	float			aver; }stu[100];  int n;   int main()  { 	int a,flag=0;  	while(1)  	{ 		printf("学生管理系统\n"); 		printf("1.输入学生信息\n");  		printf("2.按名字查询学生信息\n");  		printf("3.按学号查询学生信息\n"); 		printf("4.查找最高分学生\n"); 		printf("5.查找不及格学生\n");  		printf("6.插入学生信息\n");  		printf("7.修改学生信息\n");  		printf("8.按平均分排序\n"); 		printf("9.删除学生信息\n"); 		printf("10.统计最高分，不及格人数\n");  		printf("11.显示全部学生信息\n");  		printf("0.退出\n"); 		printf("请输入你的选择:"); 		scanf("%d",&a);  		switch(a) 		{ 		case 1: 			input(); 			break;   		case 2: 			name(); 			break;  		case 3: 			number(); 			break; 		case 4: 			max(); 			break; 		case 5: 			min(); 			break; 		case 6: 			insert(); 			break;  		case 7: 			alter(); 			break; 		case 8: 			sort();  			break; 		case 9: 			delet(); 			break; 		case 10: 			statistic();  			break; 		case 11: 			output(); 			break; 		case 0: 			flag=1; 			break; 		default: 			printf("error"); 		}  		if(flag) break;  	} }

user: user-2
content: 你这代码，我一个个问题来给你解决啊 问题一：代码排版，这叫乱码都不过分啊。这拿出去容易挨揍。最好学学别人的代码编辑排版。

user: user-3
content: 这是什么乱七八糟的，改不过来啊， 给你改一个函数，其他的参照着自己修改吧 void insert() { system("CLS"); int q;  char b;  char name[20];  // 这两个临时变量，需要定义 char num[15]; int s1,s2,s3; printf("输入插入的位置：");  scanf("%d",&q); printf("\t学号\t姓名\t英语\t数学\tC语言\n");  scanf("%s %s %f %f",&num,&name,&s1,&s2,&s3); for(i=n-1; i>=q; i--)//将插入位置后面的同学向后移动一个位置 { strcpy( stu[i+1].num, stu[i].num); strcpy(stu[i+1].name,stu[i].name); stu[i+1].chinese=stu[i] .chinese; stu[i+1].math=stu[i]. math; stu[i+1].c=stu[i].c; }  strcpy(stu[q].num, num); strapy(stu[q].name,name); stu[q]. chinese =s1; stu[q].math =s2; stu[q].c =s3;  }  貌似复制别人的代码，但是你的数据结构和人家的不一样，人家的num是整数，你这是char [20] 对应和num相关的都要去修改一遍 以上给你改的代码也只能保证编译过， 不保证你的算法逻辑对 太多了，慢慢玩儿吧 反正编译器提示的错误也很清楚

user: user-0
content: 引用 楼主 国家一级抬杠运动员.的回复:#include<stdio.h> #include<stdlib.h> #include<string.h> void input(); void name();  void number(); void max(); void min();  void insert();  void alter();  void sort();  void delet();  void statistic(); void output();//函数声明  struct student  {char num[15];  char name[20];  int chinese; int math;  int c;  float sum;  float aver;}//声明结构类型  stu[100]; int n;  int main()  {int a,flag=0;  while(1)  {printf("学生管理系统\n"); printf("1.输入学生信息\n");  printf("2.按名字查询学生信息\n");  printf("3.按学号查询学生信息\n"); printf("4.查找最高分学生\n"); printf("5.查找不及格学生\n");  printf("6.插入学生信息\n");  printf("7.修改学生信息\n");  printf("8.按平均分排序\n"); printf("9.删除学生信息\n"); printf("10.统计最高分，不及格人数\n");  printf("11.显示全部学生信息\n");  printf("0.退出\n"); printf("请输入你的选择:"); scanf("%d",&a); switch(a) {case 1:input();break;    case 2:name();break;   case 3:number();break;  case 4:max();break;  case 5:min();break;  case 6:insert();break;   case 7:alter();break;  case 8:sort(); break;  case 9:delet();break;  case 10:statistic(); break;  case 11:output();break;  case 0:flag=1;break;  default:printf("error");} if(flag) break; }} void input()  {system("CLS"); int i; printf("输出你想输入的学生信息个数:"); scanf("%d",&n); for(i=0;i<n;i++)  {printf("学号:"); scanf("%s",&stu[i].num);  printf("姓名:"); scanf("%s",&stu[i].name); printf("语文:"); scanf("%d",&stu[i].chinese);  printf("数学:"); scanf("%d",&stu[i].math); printf("C语言:"); scanf("%d",&stu[i].c); stu[i].sum=(stu[i].chinese+stu[i].math+stu[i].c); stu[i].aver=(stu[i].chinese+stu[i].math+stu[i].c)/3; printf("总成绩=%4.1f\n",stu[i].sum); printf("平均成绩=%4.1f\n",stu[i].aver);}} void name() {system("CLS"); int i; char name[20];  printf("请输入学生姓名:\n"); scanf("%s",name); printf("\t学号\t姓名\t英语\t数学\tC语言\t平均成绩\t总成绩\n"); for(i=0;i<n;i++) if(strcmp(stu[i].name,name)==0)  {printf("%10s\t%s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name, stu[i].chinese,stu[i].math,stu[i].c,stu[i].aver,stu[i].sum);}}  void number()  {system("CLS"); int i; char number[15];  printf("请输入学号:\n"); scanf("%s",number); printf("\t学号\t姓名\t英语\t数学\tC语言\t平均成绩\t总成绩\n"); for(i=0;i<n;i++) if(strcmp(stu[i].num,number)==0)  printf("%10s\t%s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name, stu[i].chinese,stu[i].math,stu[i].c,stu[i].aver,stu[i].sum);} void max ( ) { int i; int j=0;int k=0;int g=0;int max=0; for(i=0;i<n;i++) { if(stu[i].chinese>max) j=i; printf ("语文最高分学生为：%s",stu[j].name);} for(i=0;i<n;i++) { if(stu[i].math>max) j=k; printf ("数学最高分学生为：%s",stu[k].name);} for(i=0;i<n;i++) { if(stu[i].c>max) j=g; printf ("C语言最高分学生为：%s",stu[g].name);}} void min( ) {system("CLS"); int i; printf("语文不及格名单：\n"); for(i = 0;i < n;i++) {if(stu[i] .chinese< 60)  {printf("姓名：%s\t", stu[i] .name);  printf("语文成绩：%4.2f\n", stu[i] .chinese );} else  {printf("语文没有不及格的！\n");}} printf("数学不及格名单：\n"); for(i = 0;i < n;i++) {if (stu[i].math < 60) {printf("姓名：%s\t",stu[i].name); printf("数学成绩：%4.2f\n",stu[i].math);} else  {printf("数学没有不及格的！\n");}} printf("C语言不及格名单：\n"); for(i = 0;i < n;i++) { if(stu[i] .c< 60) { printf("姓名：%s\t", stu[i] .name); printf("C语言成绩：%4.2f\n", stu[i] .chinese );} else { printf("C语言没有不及格的！\n");}}  void insert() {system("CLS"); int q; char b; int s1,s2,s3; printf("输入插入的位置：");  scanf("%d",&q); printf("\t学号\t姓名\t英语\t数学\tC语言\n");  scanf("%d %s %f %f",&p,&a,&S1,&s2,&s3); for(i=n-1,i>=q;i--)//将插入位置后面的同学向后移动一个位置 { stu[i+1].num=stu[i].num; strcpy(stu[i+1].name,stu[i].name); stu[i+1].chinese=stu[i] .chinese; stu[i+1].math=stu[i]. math; stu[i+1].c=stu[i].c; } stu[q].num=b; strapy(stu[q].name,b); stu[q]. chinese =s1; stu[q].math =s2; stu[q].c =s3; } void alter() {system("CLS"); int i; int q; printf("请输入要修改的学生学号："); scanf("%d",&q); for(i=0;i<n;i++) {if (q==stu[i].num)//查找该学生所在位置 m=I; printf("输入要修改的科目（修改语文成绩请输入1，修改数学成绩请输入2，修改C语言成绩请输入3）"); scanf ("%d",&h);//为要修改的科目 printf("您要修改为："); if(h==1)//修改科目为语文成绩时 {scanf("%f",&stu[m].chinese); printf("已修改！\n");} else if(h==2)//修改科目为数学时; {scanf("%f",&stu[m].math); printf("已修改！\n");} else (h==3)//修改科目为C语言时; {scanf("%f",&stu[m].c); printf("已修改！\n");} void sort()  {system("CLS"); int i,j; char b; struct student temp;  printf("\t学号\t姓名\t英语\t数学\tC语言\t平均成绩\t总成绩\n"); for(i=0;i<n;i++) {for(j=i+1;j<n;j++) if(student[i].sum<student[j].sum) {temp=student[i];student[i]= student[j];student[j]=temp;} printf("%10s\t%s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name, stu[i].chinese,stut[i].math,stu[i].c,stu[i].aver,stu[i].sum);} printf("退出");} void delet int I; int q; int m; int j; printf("输入要删除学生的学号："); scanf("%d",&q); for(i=0;i<n;i++) {if(stu[i].num==q) m=i; for(i=m,j=m+1;j<n-1;i++;j++)//将后一位学生的信息向前移动一个存储单位覆盖要删除的学生信息 { stu[i].num=stu[j].num; strcpy(stu[i].name,stu[j].name); stu[i].chinese =stu[j]. Chinese; stu[i].math =stu[j]. math; stu[i].c =stu[j].c; } void statistic ( ) {system("CLS"); int i,e=0,m=0,c=0,x,y,z; for(i=0;i<n;i++) {if(stu[i].chinese<60) e++;} for(i=0;i<n;i++) {if(stu[i].math<60) m++;} for(i=0;i<n;i++) {if(stu[i].c<60) c++;} printf("英语不及格人数：%d\n数学不及格人数：%d\nC语言不及格人数：%d\n",e,m,c); for(i=0;i<n;i++) {if(stu[i].chinese>stu[i+1].chinese) x=stui].chnese;} for(i=0;i<n;i++) {if(stu[i].math>stu[i+1].math) y=stu[i].math;} for(i=0;i<n;i++) {if(stu[i].c>stu[i+1].c) z=stu[i].c;} printf("英语最高分：%d\n数学最高分：%d\nC最高分：%d\n",x,y,z);} void output()  {system("CLS"); int i; printf("\t学号\t姓名\t英语\t数学\tC语言\t平均成绩\t总成绩\n"); for(i=0;i<n;i++) {printf("%10s\t%s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name, stu[i].chinese,stu[i].math,stu[i].c,stu[i].aver,stu[i].sum);}} 大佬们，救救孩子吧