网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 359|回复: 0
打印 上一主题 下一主题

【C语言】结构体数组

[复制链接]

686

主题

693

帖子

3101

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3101
跳转到指定楼层
楼主
发表于 2024-6-17 21:27:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。

在C语言中,定义结构体数组和定义结构体变量的方式类似,请看下面的例子:
  • struct stu{
  •     char *name;  //姓名
  •     int num;  //学号
  •     int age;  //年龄
  •     char group;  //所在小组
  •     float score;  //成绩
  • }class[5];


表示一个班级有5个学生。

结构体数组在定义的同时也可以初始化,例如:
  • struct stu{
  •     char *name;  //姓名
  •     int num;  //学号
  •     int age;  //年龄
  •     char group;  //所在小组
  •     float score;  //成绩
  • }class[5 = {
  •     {"Li ping", 5, 18, 'C', 145.0},
  •     {"Zhang ping", 4, 19, 'A', 130.5},
  •     {"He fang", 1, 18, 'A', 148.5},
  •     {"Cheng ling", 2, 17, 'F', 139.0},
  •     {"Wang ming", 3, 17, 'B', 144.5}
  • };


当对数组中全部元素赋值时,也可不给出数组长度,例如:
  • struct stu{
  •     char *name;  //姓名
  •     int num;  //学号
  •     int age;  //年龄
  •     char group;  //所在小组
  •     float score;  //成绩
  • }class[] = {
  •     {"Li ping", 5, 18, 'C', 145.0},
  •     {"Zhang ping", 4, 19, 'A', 130.5},
  •     {"He fang", 1, 18, 'A', 148.5},
  •     {"Cheng ling", 2, 17, 'F', 139.0},
  •     {"Wang ming", 3, 17, 'B', 144.5}
  • };



结构体数组的使用也很简单,例如,获取 Wang ming 的成绩:
class[4].score;
修改 Li ping 的学习小组:
class[0].group = 'B';

【示例】计算全班学生的总成绩、平均成绩和以及 140 分以下的人数。
  • #include <stdio.h>
  • struct{
  •     char *name;  //姓名
  •     int num;  //学号
  •     int age;  //年龄
  •     char group;  //所在小组
  •     float score;  //成绩
  • }class[] = {
  •     {"Li ping", 5, 18, 'C', 145.0},
  •     {"Zhang ping", 4, 19, 'A', 130.5},
  •     {"He fang", 1, 18, 'A', 148.5},
  •     {"Cheng ling", 2, 17, 'F', 139.0},
  •     {"Wang ming", 3, 17, 'B', 144.5}
  • };
  • int main(){
  •     int i, num_140 = 0;
  •     float sum = 0;
  •     for(i=0; i<5; i++){
  •         sum += class[i].score;
  •         if(class[i].score < 140) num_140++;
  •     }
  •     printf("sum=%.2f\naverage=%.2f\nnum_140=%d\n", sum, sum/5, num_140);
  •     return 0;
  • }


运行结果:
sum=707.50
average=141.50
num_140=2
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2024-12-23 08:16 , Processed in 0.033527 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表