zl程序教程

您现在的位置是:首页 >  其他

当前栏目

例 9.4 有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息。

输出 信息 顺序 要求 包括 学生 按照 成绩
2023-09-14 09:06:59 时间

C程序设计(第四版) 谭浩强 例9.4 个人设计

例 9.4 有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息。

代码块:

#include <stdio.h>
#include <stdlib.h>
struct Student{                                    //定义结构体类型Student
	int num;
	char name[20];
	float score;
};
void input(Student *st, int n);                    //定义输入函数
void print(Student *st, int n);                    //定义输出函数
void sort(Student *st, int n);                     //定义排序函数
int main()
{
	Student *stu;                                  //定义结构体指针stu
	int n;
	printf("Please enter Student number: ");       //输入学生个数
	scanf("%d", &n);
	stu=(Student*)malloc(n*sizeof(Student));       //为stu分配内存空间
	input(stu, n);                                 //调用输入函数
	sort(stu, n);                                  //调用排序函数
	print(stu, n);                                 //调用输出函数
	system("pause");
	return 0;
}
//输入函数
void input(Student *st, int n)
{
	int i;
	for (i=0; i<n; i++){
		printf("Please enter No.%d student info: ", i+1);
		scanf("%d %s %f", &st[i].num, st[i].name, &st[i].score);
	}
}
//输出函数
void print(Student *st, int n)
{
	Student *p;
	for (p=st, printf("Sort by:\n"); p<st+n; printf("%d %-7s %.2f\n", p->num, p->name, p->score), p++);
}
//排序函数
void sort(Student *st, int n)
{
	int i, j;
	Student temp;
	for (i=0; i<n; i++)
		for (j=i+1; j<n; j++)
			if (st[i].score>st[j].score){
				temp=st[i], st[i]=st[j], st[j]=temp;
			}
}