/*定义一个学生结构,用于描述学生的姓名,性别,考分(三门成绩),学号。
现在有五个同学的信息,请完成输入,并且(1)按学号(由小到大)排序(2)按总分,
由小到大排序 。用函数实现上述功能,并且注意结构数组作参的情形*/
#include <stdio.h>
#define N 5
struct stuData
{
int num; //学号
char gender; //性别
char name[15]; //姓名
float score[3]; //三门课成绩
} stu [N];
void sort(); //排序功能
void main()
{
int i;
struct stuData stu1;
printf("请输入学生的相关信息\n");
printf("学号 姓名 性别 成绩\n");
for(i=0;i<5;i++)
{
scanf("%d%s %c%f",&stu[i].num,stu[i].name,&stu[i].gender,&stu[i].score);
}
printf("学号 姓名 性别 成绩\n");
sort();
for(i=0;i<5;i++)
{
printf("%d\t%s\t %c\t%.2f",stu[i].num,stu[i].name,stu[i].gender,stu[i].score);
}
}
void sort() //此函数用来排序
{
struct stuData temp;
int i, j;
//冒泡法排序
for (i = 0; i < N - 1; i++)
{
for (j = 0; j < N - 1 - i; j++)
{
if (stu[j].num < stu[j+1].num) //将数组里的信息结构按学号排序
{
temp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}
}
不知道哪里不对了
[此贴子已经被作者于2006-7-12 13:42:12编辑过]
----------------解决方案--------------------------------------------------------