千家信息网

C语言结构体数组怎么定义和使用

发表于:2025-02-10 作者:千家信息网编辑
千家信息网最后更新 2025年02月10日,这篇文章主要讲解了"C语言结构体数组怎么定义和使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言结构体数组怎么定义和使用"吧!介绍一个结构体变量
千家信息网最后更新 2025年02月10日C语言结构体数组怎么定义和使用

这篇文章主要讲解了"C语言结构体数组怎么定义和使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言结构体数组怎么定义和使用"吧!

介绍

一个结构体变量可以存放一个学生的一组信息,可是如果有 10 个学生呢?难道要定义 10 个结构体变量吗?难道上面的程序要复制和粘贴 10 次吗?

很明显不可能,这时就要使用数组。结构体中也有数组,称为结构体数组。它与前面讲的数值型数组几乎是一模一样的,只不过需要注意的是,结构体数组的每一个元素都是一个结构体类型的变量,都包含结构体中所有的成员项。

定义结构体数组的方法很简单,同定义结构体变量是一样的,只不过将变量改成数组。或者说同前面介绍的普通数组的定义是一模一样的,如:

struct STUDENT stu[10];

这就定义了一个结构体数组,共有 10 个元素,每个元素都是一个结构体变量,都包含所有的结构体成员。

结构体数组的引用与引用一个结构体变量在原理上是一样的。只不过结构体数组中有多个结构体变量,我们只需利用 for 循 环一个一个地使用结构体数组中的元素。

下面编写一个程序,编程要求:从键盘输入 5 个学生的基本信息,如姓名、年龄、性别、学号,然后将学号最大的学生的基本信息输出到屏幕。

# include # include struct STU{    char name[20];    int age;    char sex;    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].sex, 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.sex, 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 # include struct STU{    char name[20];    int age;    char sex;    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.sex, stumax.num);}

输出结果是:

学生姓名:小明 学生年龄:21 学生性别:M 学生学号:Z1207035

注意,字符要用单引号括起来,字符串要用双引号括起来。

补充

C语言结构体数组示例演示

【示例】计算全班学生的总成绩、平均成绩和以及 140 分以下的人数。

#include 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语言结构体数组怎么定义和使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

学生 结构 数组 信息 变量 学号 输入 姓名 年龄 语言 性别 元素 函数 数值 小明 输出 一模一样 只不过 程序 结果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 玩客云 服务器 清理 网络安全等级考试要求 分布式空间数据库名词解释 职中读计算机网络技术好吗 防火墙和网络安全检测装置 软件开发职位是什么 咪店通互联网科技有限公司 网络安全研究生学费一年多少 数据库应用技术课题选择 苹果手机指纹存在数据库吗 网络安全知答题 网狐6603服务器 数据库对点餐系统功能的分析 客户端web访问服务器ip设置 数据库报表权限怎么配置 linux重新启动ssh服务器 陕汽e家服务器端口 js文件加载服务器验证 景沐网络技术工作室 服务器硬盘录像机安装教程 高防服务器是什么意思 浙江数据网络技术咨询报价 第一次怎么打开数据库 数据库原理及应用教程第4版试题 美国网络安全特工 生化分析仪数据库查询失败 佛山市博砾软件开发有限公司 返回符合条件的数据库所有行 什么修改器可以改服务器 创成网络技术有限公司
0