实验八 结构体与其他构造类型
一、实验目的
- 掌握结构体变量的定义和引用。
- 掌握结构体数组和结构体指针的使用。
- 培养使用结构体解决实际问题的能力。
二、实验内容
2、 有n名学生的信息(包括学号、姓名和成绩),编写函数实现按成绩由高到低的顺序输出学生的信息。
函数接口定义:
在这里描述函数接口。例如:
void sort(struct Student stud[],int n)//选择法
输入格式:
输入一个正整数n(n<50),下面n行输入n个学生的信息,包括:学号、姓名、成绩。
输出格式:
输出从高到低排序后的学生信息,包括:学号、姓名、成绩。
输入样例:
在这里给出一组输入。例如:
解释
3 101 Zhang 78 102 Wang 91 103 Li 85
输出样例:
在这里给出相应的输出。例如:
102 Wang 91
103 Li 85
101 Zhang 78
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
struct Stu
{
int num;
char name[50];
int score;
};
int main()
{
struct Stu s[50], * a[50];
struct Stu* t, ** p;
int i,j;
int n;
scanf("%d", &n);
for (i = 0; i < n; ++i)
scanf("%d%s%d", &s[i].num, s[i].name, &s[i].score);
for (i = 0; i < n; ++i)
a[i] = &s[i];
for (i = 0; i < n-1; ++i)
{
p = a + i;
for (j = i + 1; j < n; ++j)
if ((*p)->score < a[j]->score)
p = a + j;
if (p != a + j)
{
t = *p;
*p = a[i];
a[i] = t;
}
}
for (i = 0; i < n; ++i)
printf("%d %s %d\n", a[i]->num, a[i]->name, a[i]->score);
return 0;
}