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

C++如何根据用户输入的学生姓名创建对应变量避免逐个预定义?

C++学生成绩动态存储实现方案

你需要用C++标准库提供的关联容器实现需求,不需要提前手动定义大量变量,核心逻辑是用学生姓名作为键,成绩作为值存储。

实现步骤

  • 引入必要头文件:除了基础的iostream和string外,需要引入map或unordered_map头文件
  • 定义关联容器对象,类型为std::map<std::string, int>或者std::unordered_map<std::string, int>,前者会自动按照学生姓名排序,后者查询速度更快
  • 接收用户输入的学生姓名和成绩,直接插入到容器中即可

示例代码

#include <iostream>
#include <string>
#include <unordered_map> // 也可以替换成<map>

int main() {
    // 定义存储学生姓名-成绩的容器,不需要提前定义大量student_xx变量
    std::unordered_map<std::string, int> student_scores;
    std::string name;
    int score;

    std::cout << "请输入学生姓名和成绩,输入Ctrl+Z结束输入:" << std::endl;
    // 循环接收输入,直接存入容器
    while (std::cin >> name >> score) {
        student_scores[name] = score;
        std::cout << "已成功保存学生 " << name << " 的成绩:" << score << std::endl;
    }

    // 查询示例:输入姓名获取成绩
    std::cout << "\n请输入要查询的学生姓名:" << std::endl;
    std::cin.clear(); // 清除输入结束的状态位
    std::cin >> name;
    auto it = student_scores.find(name);
    if (it != student_scores.end()) {
        std::cout << name << " 的成绩为:" << it->second << std::endl;
    } else {
        std::cout << "未找到该学生的成绩记录" << std::endl;
    }

    return 0;
}

说明

  • 补充纠正笔误:你提问里的cin <<是用法错误,标准输入流读取数据应该用cin >>,输出流打印才用cout <<
  • 这种实现方式支持任意数量的学生成绩存储,不需要提前手动声明变量
  • 后续要修改、删除、统计成绩都可以直接对容器操作,语法简单易维护
  • 如果需要存储多科成绩,可以把容器的值类型换成数组、结构体或者另一个关联容器即可

内容的提问来源于stack exchange,提问作者João Guilherme

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:54:03