一个结构体变量可以存放一个学生的一组信息,可是如果有 10 个学生呢?难道要定义 10 个结构体变量吗?难道上面的程序要复制和粘贴 10 次吗?
很明显不可能,这时就要使用数组。结构体中也有数组,称为结构体数组。它与前面讲的数值型数组几乎是一模一样的,只不过需要注意的是,结构体数组的每一个元素都是一个结构体类型的变量,都包含结构体中所有的成员项。
定义结构体数组的方法很简单,同定义结构体变量是一样的,只不过将变量改成数组。或者说同前面介绍的普通数组的定补考成绩怎么查义是一模一样的,腊肠犬价格如:
struct student stu[10];
这就定义了一个结构体数组,共有 10 个元素,每个元素都是一个结构体变量,都包含所有的结构体成员。
结构体数组的引用与引用一个结构体变量在原理上是一样的。只不过结构体数组中有多个结构体变量,我们只需利用 for 循 环一个一个地使用结构体数组中的元素。
下面编写一个程序,编程要求:从键盘输入 5 个学生的基本信息,如姓名、年龄、性别、学号,然后将学号最大的学生的基本信息输出到屏幕。
# include <stdio.h># include <string.h>struct stu{ char name[20]体育教师工作总结; int age; char x; char num[20];};void outputstu(struct stu stu[5]); //函数声明, 该函数的功能是输出学号最大的学生信息int main(void){ int i; struct stu stu[5]; for (i=0; i<5; ++i) { printf("请输入第%d个学生的信息:", i+1); scanf ("%s%d %c%s", stu[i].name, &stu[i].age, &stu[i].x, stu[i].num);/*%c前面要加空格, 不然输入时会将空格赋给%c*/ } outputstu(stu); return 0;}void outputstu(struct stu stu[5]){ struct stu stumax = stu[0]; int j; for (j=1; j<5; ++j) { if (strcmp(stumax.num, stu[j].num) < 0) //strcmp函数的使用 { stumax = stu[j]; } } printf("学生姓名:%s 学生年龄:%d 学生性别:%c 学生学号:%s\n", stumax.name, stumax.age, stumax.x, stumax.num);}
输出结果是:
请输入第1个学生的信息:小红 22 f z1207031
请输入第2个学生的信息:小明 21 m z1207035
请输入第3个学生的信息:小七 23 f z1207022
请输入第4个学生的信息:小欣 20 f z1207015
请输入第5个学生的信息:小天 19 m z1207024
学生姓名:小明 学生年龄:21 学生性别:m 学生学号:z1207035
结构体数组的初始化与前面讲的数值型数组的初始化是一模一样的,数值型数组初始化的方法和需要注意的问题在结构体数组的初始化中同样适用,因为不管是数值型数组还是结构体数组都是数组。下面就将前面的一个程序修改一下。
# include <stdio.h># include <string.h>struct stu{ char name[20]; int age; char x; char num[20];};void outputstu(struct stu stu[5]); //函数声明int main(void){ struct stu stu[5] = {{"小红", 22, 'f', "z1207031"}, {"小明", 21, 'm', "z1207035"}, {"小七", 23, 'f', "z1207022"}, {"小欣", 20, 'f', "z1207015"}, {"小天", 19, 'm', "z1207024"}}; outputstu(stu); return 0;}void outputstu(struct stu stu[5]){ struct stu stumax = stu[0]; int j; for (j=1; j<5; ++j) { 大公无私造句 if (strcmp(stumax.num, stu[j].num) < 0) { stumax = stu[j]; } } printf("学生姓名:%s 学生年龄:%d 学生性别:%c 学生学号:%s\n", stumax.name, stumax.age, stumax.x, stumax.num);}
输出结果是:
学生姓名:小明 学生元宵节活动策划年龄:21 学生性别:m 学生学号:z1207035
注意,字符要用单引号括起来,字符串要用双引号括起来。
c语言结构体数组示例演示
【示例】计算全班学生的总成绩、平均成绩和以及 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
以上就是c语言结构体数组的定义和使用详解的详细内容,更多关于c语言 结构体数组的资料请关注www.887551.com其它相关文章!
本文发布于:2023-04-04 02:25:50,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/da9886dfee64e5679b99c487cb7e7b55.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C语言结构体数组的定义和使用详解.doc
本文 PDF 下载地址:C语言结构体数组的定义和使用详解.pdf
留言与评论(共有 0 条评论) |