A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一、结构体数组概念及定义

1、概念
数组的元素也可以是结构类型。因此可以构成结构型数组。结构数组的每一个元素都是具有相同结构类型的下标结构变量。在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体,例如一个班的学生档案,一个车间职工的工资表等。

例如:
  1. //方法一:定义一个结构体的同时定义结构体数组
  2. struct Contact{
  3.     char name[20];
  4.     char number[20];
  5.     char address[20];
  6.     char email[20];
  7. }contacts[10];

  8. //方法二:先定义一个结构体数组,再定义一个结构体数组
  9. struct Contact{
  10.     char name[20];
  11.     char number[20];
  12.     char address[20];
  13.     char email[20];
  14. };
  15. struct Contact contacts[10];
复制代码


2.结构数组的初始化和遍历
举例应用:
  1. #include <stdio.h>
  2. //先定义一个结构体
  3. struct Student{
  4.     int num;
  5.     char *name;
  6.     char sex;
  7.     float score;
  8. };

  9. int main(int argc, const char * argv[])
  10. {

  11.     //定义结构体数组、同时进行初始化
  12.     struct Student list [5] = {
  13.         {101,"Amos",'M',90.0f},
  14.         {102,"Allen",'M',80.9f},
  15.         {103,"Andy",'M',40.3f},
  16.         {104,"Sherry",'M',58.9f},
  17.         {105,"Barry",'M',100.0f},
  18.     };
  19.    
  20.     //1、利用上面的结构体,计算学生的平均成绩和不及格人数
  21.     //2、打印80-100分学生的成绩和姓名
  22.     float avg = 0;//平均分
  23.     int sum = 0;//不及格人数
  24.    
  25.     printf("成绩在80到100之间的学生姓名和分数如下:\n");
  26.    
  27.     for (int i = 0; i < 5; i++) {
  28.         avg += list[i].score;
  29.         
  30.         if (60 > list[i].score) {
  31.             sum++;
  32.         } else if(list[i].score >= 80){//假设满分为100
  33.         
  34.             printf("name:%s, score:%0.2f\n",list[i].name, list[i].score);
  35.         }

  36.     }
  37.     avg /= 5;//求平均成绩
  38.     printf("\n班级平均成绩为:%0.2f, 不及格人数为:%d\n", avg, sum);
  39.    
  40.     return 0;
  41. }
复制代码



打印结果:
成绩在80到100之间的学生姓名和分数如下:
name:Amos,score:90.00
name:Allen,score:80.90
name:Barry,score:100.00

班级平均成绩为:74.02, 不及格人数为:2

2 个回复

倒序浏览
继续努力!
回复 使用道具 举报
这里学的略晕
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马