You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

结构体三维数组课程表开发:无法指定位置输入数据

解决三维结构体数组的课程表输入问题

我来帮你搞定这个课程表的输入功能!首先咱们先把你定义的三维数组维度理清楚——array[3][4][5]可以对应成「3个年级、4个上课日、5节课」,这样逻辑更清晰。接下来咱们一步步实现指定位置的信息录入功能,解决你当前代码无法正常输入的问题:

完整实现代码

#include <iostream>
#include <string>
using namespace std;

// 定义课程信息结构体
struct SPS {
    string Class;
    string Teacher;
    int noStudents;
};

int main() {
    // 声明三维课程表数组:[年级索引][周几索引][节数索引]
    struct SPS array[3][4][5];

    // 让用户输入要修改的位置索引
    int gradeIdx, dayIdx, lessonIdx;
    cout << "请输入要录入信息的位置(格式:年级索引 周几索引 节数索引,范围分别是0-2、0-3、0-4):" << endl;
    cin >> gradeIdx >> dayIdx >> lessonIdx;

    // 检查索引是否合法,避免数组越界崩溃
    if (gradeIdx < 0 || gradeIdx >= 3 || dayIdx < 0 || dayIdx >=4 || lessonIdx <0 || lessonIdx >=5) {
        cout << "错误:索引超出范围!请重新运行程序输入合法索引。" << endl;
        return 1;
    }

    // 录入课程信息,注意处理输入缓冲区的换行符
    cout << "请输入课程名称(支持带空格):" << endl;
    cin.ignore(); // 清除之前输入整数后留下的换行符,避免getline读取空内容
    getline(cin, array[gradeIdx][dayIdx][lessonIdx].Class);

    cout << "请输入老师姓名(支持带空格):" << endl;
    getline(cin, array[gradeIdx][dayIdx][lessonIdx].Teacher);

    cout << "请输入学生人数:" << endl;
    cin >> array[gradeIdx][dayIdx][lessonIdx].noStudents;

    // 验证录入结果
    cout << "\n✅ 信息录入成功!详情如下:" << endl;
    cout << "位置:[" << gradeIdx << "][" << dayIdx << "][" << lessonIdx << "]" << endl;
    cout << "课程名称:" << array[gradeIdx][dayIdx][lessonIdx].Class << endl;
    cout << "授课老师:" << array[gradeIdx][dayIdx][lessonIdx].Teacher << endl;
    cout << "学生人数:" << array[gradeIdx][dayIdx][lessonIdx].noStudents << endl;

    return 0;
}

关键细节说明

  • 索引合法性检查:必须确保输入的三个索引在数组的有效范围内(0到对应维度长度-1),否则会触发数组越界,导致程序崩溃或出现未知错误。
  • 输入缓冲区处理:用cin输入整数后,输入缓冲区会残留一个换行符,如果直接用getline读取字符串,会把这个换行符当成空输入。所以用cin.ignore()清除掉这个换行符,才能正确读取带空格的课程名和老师姓名。
  • 结构体成员赋值:直接通过array[gradeIdx][dayIdx][lessonIdx].成员名的方式,把输入的值赋值到指定位置的结构体实例中,这就是你之前代码缺失的核心步骤。

如果你的需求是批量录入或者有其他扩展功能,也可以基于这个基础代码进一步修改~

内容的提问来源于stack exchange,提问作者user9327397

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:27:27