第十一章
练习12-4
//对代码清单12-7的程序进行修改。
//不将姓名、身高等数据作为初始值,而是从键盘输入。
//可以选择按身高进行升序排列,或者按照姓名的顺序排列。
#include <stdio.h>
#include <string.h>
#define NUMBER 2
#define NAME_LEN 64
typedef struct {
char name[NAME_LEN];
int height;
float weight;
long schols;
} Student;
void swap_Student (Student *x, Student *y)
{
Student temp = *x;
*x = *y;
*y = temp;
}
void sort_by_height (Student a[],int n)
{
int i,j;
for (i=0; i<n-1; i++) {
for (j=n-1; j>i; j--) {
if (a[j-1].height > a[j].height)
swap_Student(&a[j-1],&a[j]);
}
}
}
void sort_by_name (Student a[],int n)
{
int i,j,m;
for (i=0; i<n-1; i++) {
for (j=n-1; j>i; j--) {
for (m=0; m<NAME_LEN; m++) {
if (a[j-1].name[m] >a[j].name[m]){
swap_Student(&a[j-1],&a[j]);
break;
}
else if (a[j-1].name[m] == a[j].name[m])
continue;
else
break;
}
}
}
}
int main ()
{
int i,opt;
Student std[NUMBER];
printf("输入学生信息:姓名、身高、体重、奖学金:\n");
for(i=0; i<NUMBER; i++) {
printf("学生%d:",i+1);
scanf("%s%d%f%d",&std[i].name,&std