关于#c++#的问题:为什么这段代码能在vs2022中运行


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

class Student {//学生类,用于统计学生各科成绩,总成绩,平均成绩

private:
        string name;//学生姓名
        string number;//学号
        vector<double> score;//分数
        double totalScore=0;//总分
        double averageScore=0;//平均分
        vector<string> course{"语文","数学","英语","综合"};//四门课程
public:
    void inputScore();//录入学生成绩
    void countTotal();//总分计算
    void countAverage();//平均分计算
    void showScore();//输出学生成绩
};

void Student::inputScore()//录入学生各科成绩
{
    string str1;//声明字符串变量,用于存放学生姓名
    double sco;//声明双浮点变量,用于存放科目分数
    cout << "请输入学生姓名:";
    cin >> str1;//录入学生姓名
    this->name = str1;
    for (int i = 0; i != 4; i++) {//循环输入学生各科成绩
        cout << "学生" << str1 << course[i] << "成绩为:";
        cin >> sco;
        (this->score).push_back(sco);
    }
    
}

void  Student::showScore()//格式化输出学生各科成绩,统计总分均分并输出
{
    cout << "学生" << this->name << endl;
    cout << "课程:";
    for (int i = 0; i != 4; i++){
        cout<< this->course[i]<<" ";
    }
    cout << endl;
    cout << "分数:";
    for (int i = 0; i != 4; i++) {
        cout << this->score[i]<<"  ";
    }
    cout << endl;
    cout << "总分:" << this->totalScore << endl;
    cout << "平均分:" << this->averageScore << endl;

}

void Student::countTotal()//计算总分
{
    this->totalScore = this->score[0] + this->score[1] + this->score[2] + this->score[3];
}

void Student::countAverage()//计算平均分
{
    this->averageScore = (this->totalScore) / 4.0;
}

int main()
{
    Student stu1;//实例化学生对象
    stu1.inputScore();//调用成员函数录入各科成绩
    stu1.countTotal();//计算总分
    stu1.countAverage();//计算平均分
    stu1.showScore();//格式化输出
    //stu1.name="张三"  //调用私有成员失败报错
    return 0;
}

为什么这段代码能在vs2022中运行,但是在vc++6.0中报错

vector x{xxx,yyyy,zzz}这叫列表初始化,这玩意儿从c++11才支持,vc6出来的时c++11标准还没有呢。

都什么年代了还用vc6

报什么错

【以下回答由 GPT 生成】

这段代码能够在VS 2022中成功运行的原因是符合C++语法规则,并且没有语法错误。根据代码,它实现了一个学生类,可以录入学生的各科成绩,并计算总成绩和平均成绩,最后输出学生的成绩信息。

具体来说,这段代码的运行过程是:

  1. 导入所需的头文件 <iostream><vector>

  2. 创建一个名为 Student 的类,包含私有成员变量 namenumberscoretotalScoreaverageScorecourse

  3. 在类的定义中,声明了四个成员函数 inputScore()countTotal()countAverage()showScore(),用于实现录入成绩、计算总分、计算平均分和输出成绩的功能。

  4. inputScore() 函数中,首先要求用户输入学生姓名,并将输入的姓名赋值给 name 成员变量。然后,使用循环四次,分别让用户输入学生的语文、数学、英语和综合成绩,并将输入的成绩存储在 score 变量中。

  5. showScore() 函数用于格式化输出学生的各科成绩和统计信息。首先输出学生的姓名,然后使用循环输出每门课程的名称,接着再使用循环输出对应课程的成绩。

  6. main() 函数中,创建了一个名为 studentStudent 类对象,然后依次调用 inputScore()showScore() 函数,完成成绩的录入和输出。

代码没有明显的错误或违反语法规则,所以能够在VS 2022中成功编译和运行。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^