C语言入门:结构数组与计算平均成绩示例
137 浏览量
更新于2024-09-02
收藏 62KB PDF 举报
"C语言初学者入门讲座第十二讲 结构(2)"
在C语言中,结构(Struct)是一种复合数据类型,它允许我们将不同类型的变量组合在一起形成一个新的数据类型。结构体可以包含基本数据类型(如整型、浮点型、字符型等)以及其它结构体,甚至可以包含指向自身类型的指针,这为复杂数据组织提供了极大的灵活性。
结构数组是结构类型的一种应用,它的每个元素都是结构类型的一个实例。在描述一组具有相同属性的事物时,结构数组非常有用。比如,一个班级的学生档案可以用一个结构数组来表示,每个结构元素包含学生的编号(num)、姓名(name)、性别(sex)和分数(score)。
在C语言中,定义结构数组的语法如下:
```c
struct 结构体名 {
数据类型 成员1;
数据类型 成员2;
...
} 数组名[数组大小];
```
例如,定义一个名为`stu`的结构,包含学生的基本信息:
```c
struct stu {
int num;
char *name;
char sex;
float score;
} boy[5];
```
这定义了一个名为`boy`的结构数组,包含5个元素。每个`boy[i]`都是一个`struct stu`类型的结构变量。
初始化结构数组有两种方式。一是直接在定义时初始化所有元素,如:
```c
struct stu {
int num;
char *name;
char sex;
float score;
} boy[5] = {
{101, "Liping", 'M', 45},
{102, "Zhangping", 'M', 62.5},
// ... 其余元素
};
```
二是通过循环在程序运行时进行初始化:
```c
for (int i = 0; i < 5; i++) {
boy[i].num = i+101;
strcpy(boy[i].name, "Student" + (i+1)); // 假设已分配了name的内存
boy[i].sex = (i % 2 == 0) ? 'M' : 'F';
boy[i].score = (float)(i+55) / 10;
}
```
在实际编程中,结构数组可以用于处理复杂的数据操作。例如,计算学生平均成绩和不及格人数的程序,可以通过遍历结构数组并访问每个结构元素的`score`成员来实现:
```c
int main() {
int i, c = 0;
float ave, s = 0;
for (i = 0; i < 5; i++) {
s += boy[i].score;
if (boy[i].score < 60) c += 1;
}
printf("总分: %f\n", s);
ave = s / 5;
printf("平均分: %f\n不及格人数: %d\n", ave, c);
return 0;
}
```
在这个例子中,我们遍历结构数组`boy`,累加所有学生的分数来计算总分,并检查每个学生的分数是否低于60分,如果低于则增加不及格人数计数。最后,输出总分、平均分和不及格人数。
总结来说,C语言中的结构数组提供了一种高效且灵活的方式来存储和操作具有相同结构的多个数据项,广泛应用于各种数据管理和处理场景。通过熟练掌握结构数组的定义、初始化和操作,可以编写出更加复杂的C语言程序。
2022-09-19 上传
2020-07-26 上传
2020-07-26 上传
2020-07-26 上传
2020-07-26 上传
2020-07-26 上传
2020-07-26 上传
2020-07-26 上传
2020-07-26 上传
weixin_38514501
- 粉丝: 3
- 资源: 919
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器