结构体进阶
标签: C语言
学习人数: 11.7k


高清播放
赞赏支持

题目

有N个学生,每个学生的数据包括学号、班级、姓名、三门课成绩。从键盘输入N 个学生数据,要求打印出每个学生三门课的平均成绩,以及平均分最高分学生数据(包括学号、班级、姓名、三门课成绩,平均分)。
要求:
1、 定义学生结构体。
2、 用一个函数实现N 个学生数据的输入,用另一个函数负责求每个学生三门课程的平均成绩,再用一个函数求出平均分最高的学生并输出该学生的数据。要求平均分和平均分最高的学生数据都在主函数中输出。

题目链接:http://www.noobdream.com/DreamJudge/Issue/page/1052/

 

结构体数组

对于结构体数组,我们先回想一下整型数组,然后举例我们要统计咱们班30个人的姓名,学号 ,成绩,如果我们用结构体变量来实现是不现实的。那么我们就准备用结构体数组来完成这事。结构体数组就是同一类型的结构体变量的集合,内存分布上是连续的。

一个结构体变量中可以存放一组数据;如一个学生的学号、姓名、成绩等数据.如果有10个学生的数据需要参加运算显然应该用数组,这就是结构体数组(如果定义10个结构体变量太麻烦了)结构体数组与以前介绍过的数值型数组不同之处:每个数组元素都是一个结构体类型的数据,它们都分别包括各个成员(分量)项以下以直接定义结构体数组为例:

struct student {
    int num;
    char name[20];
    char age;
}stu[2];

我们定义了一个结构体类型是struct student,它有三个成员分别是num, name, age。用这样的结构体类型定义了一个结构体数组stu[2],该数组有两个元素,分别是 stu[0], stu[1].那如何给数组元素中的成员赋值呢?

结构体数组的引用:

stu[0].num = 100;
strcpy( stu[0].name,“Zhangsan” );
stu[0].age = 18;

我们可以改结构体类型去定义一个的新的结构体数组 struct student sunplus[10];

 

结构体指针

结构体指针和其他类型的指针都是一样的理解,在32位平台不管啥类型的指针都占4个字节的空间。

结构指针变量说明的一般形式为:

结构体指针的应用

Lucy.num = 101;
(*P).num = 101;
P -> num = 101;

注意:“->” 称为指向运算符
*p等价于结构体变量,所以对于引用结构体变量中的成员我们用点引用

 Lucy.num = 101; (*p).num = 101;
对于结构体指针去引用里面的成员: p->num = 101;

 

题目解析:定义结构存储学生的信息,然后计算出每个学生的平均成绩,并且找出平均分最高的学生。

...
登录查看完整内容


课后作业

 

 


登录后开始许愿

暂无评论,来抢沙发