C语言入门:结构数组与计算平均成绩示例

0 下载量 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语言程序。