user-0 提问: 编写程序，初始化10名学生的基本信息，包括学号、姓名、三科（高数、英语、程序设计）成绩，分别计算每名学生的总分，并按个人总分对学生降序排序

回复:
user: user-0
content: 引用 1 楼 chxchxkkk的回复:搞两个结构体太复杂了吧，一个就足够了。 两个结构体，就直接不会使用了

user: user-0
content: 统一回复一下各位大佬 #include <stdio.h> struct courses { 	char cName[20]; 	double score; }; struct student/*?学生信息结构定义?*/ { 	int num;/*?学号?*/ 	char name[10];/*?姓名?*/ 	double sum;/*?总分?*/ 	struct courses sc[3]; }; int main() { 	struct student students[10] = 	{{101,"xiao",0,{{"computer",89},{"math",78},{"english",76}}}, 	{102,"zhao",0,{{"computer",90},{"math",56},{"english",54}}}, 	{103,"qian",0,{{"computer",91},{"math",73},{"english",63}}}, 	{104,"sun",0,{{"computer",92},{"math",95},{"english",82}}}, 	{105,"li",0,{{"computer",93},{"math",74},{"english",73}}}, 	{106,"zhou",0,{{"computer",94},{"math",25},{"english",95}}}, 	{107,"wu",0,{{"computer",95},{"math",34},{"english",13}}}, 	{108,"zheng",0,{{"computer",96},{"math",64},{"english",76}}}, 	{109,"wang",0,{{"computer",97},{"math",68},{"english",68}}}, 	{110,"jiang",0,{{"computer",98},{"math",78},{"english",76}}}}, 	temp;/*?定义结构数据?*/ 	for(int i=0;i<10;i++) 	{ 		printf("num:%d ",students[i].num); 		printf("name:%s ",students[i].name);//sum总分等于?sc数组中的第1，2，3个成员的和 		students[i].sum=students[i].sc[0].score+students[i].sc[1].score+students[i].sc[2].score; 		printf("sum:%.2lf\n",students[i].sum); 	} 	for(int i=0;i<10;i++)//?这就是??冒泡排序算法 	{ 		for(int j=i;j<10;j++) 		{ 			if(students[i].sum<students[j].sum) 			{ 				temp=students[i];/*交换数组元素*/ 				students[i]=students[j]; 				students[j]=temp; 			} 		} 	}/*?输出排序后的信息?*/ 	printf("排序后:\n"); 	for(int i=0;i<10;i++)//还是上面那个打印的for 	{ 		printf("num:%d ",students[i].num); 		printf("name:%s ",students[i].name);//sum总分等于sc数组中的第1，2，3个成员的和 		printf("name:%.2lf\n",students[i].sum); 	} 	return 0; }

user: user-0
content: 引用 1 楼 chxchxkkk的回复:搞两个结构体太复杂了吧，一个就足够了。 那我应该怎么写？

user: user-1
content: 搞两个结构体太复杂了吧，一个就足够了。

user: user-0
content: 引用 6 楼 m0_46108109的回复: struct courses {     char cName[20];     double score; }; struct student /* 学生信息结构定义 */ {     int num;                     /* 学号 */     char name[10];               /* 姓名 */     double sum;              /* 平均分 */     struct courses sc[10]; };  问题主要出在这个镶套结构上，首先你先不用镶套结构，就用一个结构表述一下。 struct student /* 学生信息结构定义 */ {     int num;                     /* 学号 */     char name[10];               /* 姓名 */     double sum;              /* 平均分 */     //把三科成绩平铺在这里 }; 然后再用镶套结构替换，上面的那个只使用一个结构表述的 struct student /* 学生信息结构定义 */ {     int num;                     /* 学号 */     char name[10];               /* 姓名 */     double sum;              /* 平均分 */     struct courses sc[10];//你会发现问题出在这里，每个学生的成绩只有三科。而你的定义是，每个学生的机构里，包含了10个成绩。 }; 另外，下面的初始化错了。 {   {101,"xiao",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {102,"zhao",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {103,"qian",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {104,"sun",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {105,"li",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {106,"zhou",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {107,"wu",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {108,"zheng",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {109,"wang",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {110,"jiang",{{1,"computer",89},{2,"math",78},{3,"english",76}}}                                 }//首先没有初始化平均分，其次，凭空多出来了123索引，两个结构里都没有这个成员 谢谢，确实是我结构的问题和初始化错了。

user: user-2
content: struct courses {     char cName[20];     double score; }; struct student /* 学生信息结构定义 */ {     int num;                     /* 学号 */     char name[10];               /* 姓名 */     double sum;              /* 平均分 */     struct courses sc[10]; };  问题主要出在这个镶套结构上，首先你先不用镶套结构，就用一个结构表述一下。 struct student /* 学生信息结构定义 */ {     int num;                     /* 学号 */     char name[10];               /* 姓名 */     double sum;              /* 平均分 */     //把三科成绩平铺在这里 }; 然后再用镶套结构替换，上面的那个只使用一个结构表述的 struct student /* 学生信息结构定义 */ {     int num;                     /* 学号 */     char name[10];               /* 姓名 */     double sum;              /* 平均分 */     struct courses sc[10];//你会发现问题出在这里，每个学生的成绩只有三科。而你的定义是，每个学生的机构里，包含了10个成绩。 }; 另外，下面的初始化错了。 {   {101,"xiao",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {102,"zhao",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {103,"qian",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {104,"sun",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {105,"li",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {106,"zhou",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {107,"wu",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {108,"zheng",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {109,"wang",{{1,"computer",89},{2,"math",78},{3,"english",76}}},                                     {110,"jiang",{{1,"computer",89},{2,"math",78},{3,"english",76}}}                                 }//首先没有初始化平均分，其次，凭空多出来了123索引，两个结构里都没有这个成员

user: user-1
content: 引用 2 楼 风吟xqy 的回复:[quote=引用 1 楼 chxchxkkk的回复:]搞两个结构体太复杂了吧，一个就足够了。 那我应该怎么写？[/quote] struct student /* 学生信息结构定义 */ {     int num;                     /* 学号 */     char name[10];               /* 姓名 */     double sum;              /* 平均分 */     double gaoshu;     double english;     double chengxu; };

user: user-3
content: 用一个结构体定义 另外可以申明一个student类型的临时变量 排序时用得着