提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
题目:
[实验案例2:结构体数组]
用结构数组建立一张班级成绩单,包括每个学生的学号、姓名、成绩。用函数编程实现下列功能:
1. 输入每个学生的各项信息;
2. 输出每个学生的各项信息;
3. 按照学生的成绩项进行降序排序。
[实验指导]
先定义结构体,再定义输入函数、排序函数和显示函数。用主函数分别调用这些函数。
代码:
/* 用结构数组定义输入、排序和输出每个学生的信息,文件名sy9_2.c */
#include <stdio.h>
#define N 3
struct Stu {
long id; /* 学生编号*/
char name[20]; /* 名称 */
float score; /* 成绩 */
};
void input( struct Stu *p ,int n);
void sort( struct Stu *p ,int n);
void display( struct Stu *p ,int n);
int main( )
{
printf("请输入3个学生的信息:\n") ;
struct Stu info[N];
input(info,N); /*结构体数组名作为实参 */
display( &info[0] ,N);
sort(info,N);
display(info,N);
return 0;
}
void input(struct Stu *p,int n) /*输入结构体数组各元素的成员的值 */
{ int i;
float temp;
for(i=0;i<n;i++)
{
printf("请输入编号:");
scanf("%ld", &p[i].id );
printf("请输入姓名:");
scanf("%s", (p+i)->name );
printf("请输入成绩:");
scanf("%f", &temp);
(*(p+i)).score =temp;
printf("\n");
}
}
void sort(struct Stu *p,int n) /*对成绩用选择法进行降序排序 */
{ int i,j;
struct Stu t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if((p+i)->score<(p+j)->score){
t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
}
}
void display(struct Stu *p,int n) /*显示结构体数组元素的成员的值 */
{
int i;
for(i=0;i<n;i++)
{
printf("编号为:%ld\t", (*(p+i)).id );
printf("姓名为:%s\t", (p+i)->name );
printf("成绩为:%.2f\n", p[i].score );
}
}
结果:
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了结构体数组。