C++第1周项目3——结构体数组处理学生成绩

此C++程序定义了一个结构体数组,用于存储5名学生的学号、姓名及三门课程的成绩。程序从键盘接收输入,计算每个学生的总分和平均分,并将所有信息输出。主要涉及结构体、数组、循环和输入输出操作。
  1. /*
    每位同学的信息学号、姓名、C++、高数、英语成绩,定义一个学生成绩的结构体数组,
    其中的数据成员包括学号(char num[12])、姓名(name)、三门课的成绩(grade)、总分(score)、均分(average))。
    (1)从键盘上输入5名学生的信息;
    (2)求出每名同学的总分和均分,并存储在结构体数组中(可以读入过程中“顺便”计算);
    (3)输出求出每位同学的信息学号、姓名、总分和均分。


    */






    #include <iostream>
    using namespace std;
    struct student
    {
    char num[13];
    char name[20];
    float grade[3];
    float score;
    float average;
    };
    int main()
    {
    student stu[5];
### C++ 中声明结构体数组的方法 在 C++ 编程语言中,可以通过定义一个结构体类型来存储多个相关变量的数据集合。为了处理一组具有相同类型的结构体实例,可以使用 **结构体数组** 的形式。 #### 结构体数组的声明方法 结构体数组的声明类似于普通数组的声明方式,只需指定结构体称以及所需的数组大小即可。以下是具体的语法: ```cpp struct StructName { 数据类型 成员1; 数据类型 成员2; }; StructName arrayName[arraySize]; ``` 其中 `StructName` 是已定义的结构体类型,`arrayName` 表示数组字,而 `arraySize` 则是数组的长度[^2]。 #### 示例代码 下面是一个完整的例子,展示如何声明和初始化一个结构体数组,并对其进行操作: ```cpp #include <iostream> using namespace std; // 定义结构体 struct Person { char name[20]; // 字 int age; // 年龄 }; int main() { // 声明一个包含5个Person结构体数组 struct Person people[5]; // 初始化第一个元素 strcpy(people[0].name, "Alice"); people[0].age = 25; // 初始化第二个元素 strcpy(people[1].name, "Bob"); people[1].age = 30; // 输出数组中的数据 cout << "First person&#39;s name: " << people[0].name << ", Age: " << people[0].age << endl; cout << "Second person&#39;s name: " << people[1].name << ", Age: " << people[1].age << endl; return 0; } ``` 上述代码展示了如何定义一个为 `Person` 的结构体,并创建了一个包含五个 `Person` 类型成员的数组 `people`。接着分别对前两个成员进行了赋值操作,并通过标准输出流将其显示出来。 #### 使用指针访问结构体数组 除了传统的数组索引外,还可以借助指针的方式访问结构体数组的内容。这种方式对于某些特定场景可能更加高效或者灵活。例如,在遍历整个数组时可以直接移动指向当前项的指针而不是改变下标[^3]。 ```cpp for (struct Person *p = &people[0]; p < &people[5]; ++p) { cout << (*p).name << ": " << (*p).age << "\n"; } ``` 以上片段说明了另一种循环读取所有记录的技术——运用指针算术运算完成迭代过程。 ### 总结 综上所述,C++ 提供了一种简单有效的方式来管理和操作大量同质化的复杂数据单元即结构体数组。这不仅限于基本的例子如人员单管理,也可以扩展到更复杂的实际应用场合比如图书管理系统的设计与开发当中去[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值