成长之路---C语言笔记(结构体数组)

简介: 成长之路---C语言笔记(结构体数组)

结构体数组


在我们实际应用中经常遇到需要使用结构体数组来表示多个具有相同数据结构的一个群体。

所谓结构体数组,就是数组元素类型为结构体类型的数组。因此,结构体数组的每个 元素都是具有相同结构体类型的下标结构体变量。 结构体数组的使用与结构体变量类似,需要先构造类型,再定义变量,定义结构体数组时只需说明它为数组类型

即可。


结构体数组的定义


结构体类型标识符 数组名[长度];结构体数组的定义与普通结构体变量的定义相同,也是分为三种形式具体请阅读上篇。


结构体数组的引用


数组名[下标].成员名;
stu[0].num;stu[1].age;


例如上述结构体数组的引用:stu[0].num表示第0行数组的成员num的值,stu[1].age表示第1行数组的成员age的值。


结构体数组的初始化


结构体数组定义好之后就可以对结构体数组进行赋值操作了,其中包括在定义结构体数组时赋值和在定义结构体数组之后的赋值。


在定义结构体数组时赋值


struct stu
{
int num;
char name[20];
char sex;
float score;
}student[2]={{1001,"Zhang",'M',73.5},
             {1002,"Li",'F' ,67.5},
             {1003,"Hu",'M',78.5}};


当对全部元素进行初始化时,

数组长度可以省略。数组元素相互之间用“{}”括起来,“{}”和“{}”之间用“,”逗号分隔

编译时,系统会根据给出初值的结构体常量的个数来确定数组元素的个数。一个结构体常量包括结构体中全部成员的值。


在定义结构体数组之后赋值


在定义结构体数组之后对其进行赋初值操作,与一维数组的操作相类似,可以使用for循环语句,通过格式输入语句进行赋值。

使用案例


#include<stdio.h>
struct stu
{
int num;
int chinese;
int english;
int maths;
}
int main()
{
struct stu student[5];
int i;
for(i=0;i<5;i++)
{
printf("输入第%d个学生的学号、语文、英语、数学成绩: \n";i);
scanf("%d%d%d%d", &student[i].num, &student[i].chinese, &student[i].english, &student[i].maths );
}
printf("学生基本信息为: \n");
for(i=0; i<5; i++)
printf( "%d\t%d\t%d\t%d\n", student[i].num, student[j].chinese,student[i].english, student[i].maths);
return 0;
}



今日题目


使⽤结构体 读⼊ n(>0)名学⽣的姓名、学号、成绩,分别输出成绩最⾼和成绩最低学⽣的姓名

和学号

输⼊: 3

Joe Math990112 89

Mike CS991301 100

Mary EE990830 95

注释:总共输⼊了3名学⽣

输出: Mike CS991301

Joe Math990112

最后的话 :如果大家觉得这篇文章对你们有帮助的话希望你们能够点点关注,你们的关注是我继续写下去的动力,谢谢大家。


答案与解析


思路:先求和,然后一直取余就行了。最后倒着输出


#include<stdio.h>
int main()
{
int number_a=0,number_b=0,number_c=0,sum=0,count=0;
int p[100]={0};
scanf("%d %d %d",&number_a,&number_b,&number_c);
sum=number_a+number_b;//求和
while(sum){
p[count++]=sum%number_c;//取余
sum=sum/number_c;
}
for(int i=count-1;i>=0;i--){//倒着输出
printf("%d",p[i]);
}
if(count==0) printf("0");//如果sum为0输出0
return 0;
}
目录
相关文章
|
7月前
|
存储 人工智能 程序员
一文彻底搞明白C语言的数组
本文详细介绍了C语言中的数组,包括定义、初始化(静态与动态)、存储方式、访问方法及常用操作,如遍历、修改元素和作为函数参数传递。数组是C语言中最基本的数据结构之一,掌握它对编程至关重要。下篇将介绍二维数组,敬请期待!
309 0
一文彻底搞明白C语言的数组
|
9月前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
685 14
|
9月前
|
存储 编译器 C语言
【C语言】结构体详解 -《探索C语言的 “小宇宙” 》
结构体通过`struct`关键字定义。定义结构体时,需要指定结构体的名称以及结构体内部的成员变量。
452 10
|
10月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
864 13
|
10月前
|
存储 编译器 数据处理
C 语言结构体与位域:高效数据组织与内存优化
C语言中的结构体与位域是实现高效数据组织和内存优化的重要工具。结构体允许将不同类型的数据组合成一个整体,而位域则进一步允许对结构体成员的位进行精细控制,以节省内存空间。两者结合使用,可在嵌入式系统等资源受限环境中发挥巨大作用。
322 12
|
9月前
|
传感器 算法 安全
【C语言】两个数组比较详解
比较两个数组在C语言中有多种实现方法,选择合适的方法取决于具体的应用场景和性能要求。从逐元素比较到使用`memcmp`函数,再到指针优化,每种方法都有其优点和适用范围。在嵌入式系统中,考虑性能和资源限制尤为重要。通过合理选择和优化,可以有效提高程序的运行效率和可靠性。
657 6
|
10月前
|
存储 数据建模 程序员
C 语言结构体 —— 数据封装的利器
C语言结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起,形成一个整体。它支持数据封装,便于管理和传递复杂数据,是程序设计中的重要工具。
|
10月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
277 5
|
10月前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
10月前
|
存储 NoSQL 编译器
C 语言中指针数组与数组指针的辨析与应用
在C语言中,指针数组和数组指针是两个容易混淆但用途不同的概念。指针数组是一个数组,其元素是指针类型;而数组指针是指向数组的指针。两者在声明、使用及内存布局上各有特点,正确理解它们有助于更高效地编程。