虽然ac了但是在本地有点问题捏

P5740 【深基7.例9】最厉害的学生

6lszxz @ 2021-12-05 18:47:28

先上代码:

#include "cstdio"
#include "iostream"

using namespace std;

int main()
{
    struct Student
    {
        string name;
        int gradeC;
        int gradeM;
        int gradeE;
    };
    int n;
    cin>>n;
    struct Student list [n];
    for(int i=0;i<n;i++)
    {
        cin>>list[i].name>>list[i].gradeC>>list[i].gradeM>>list[i].gradeE;
    }
    int max=list[0].gradeE+list[0].gradeM+list[0].gradeC;
    int num=0;
    for(int i=1;i<n;i++)
    {
        if(max<list[i].gradeC+list[i].gradeM+list[i].gradeE)
        {
            max=list[i].gradeC+list[i].gradeM+list[i].gradeE;
            num=i;
        }
    }
    cout<<list[num].name<<' '<<list[num].gradeC<<' '<<list[num].gradeM<<' '<<list[num].gradeE;

}

然后我这边用的Clion告诉我:

error C2131: 表达式的计算结果不是常数

note: 因读取超过生命周期的变量而失败

note: 请参见“n”的用法

问题都是在第18行呜呜


by ud2_ @ 2021-12-05 19:10:11

数组大小必须是常量,不能是变量。


by 6lszxz @ 2021-12-05 20:52:15

@ud2_ 所以这个规定是编译器的问题还是cpp本身的语法捏QAQ


by ud2_ @ 2021-12-05 20:57:26

@6lszxz 是 C++ 的规定。一些编译器(比如你谷评测机的 GCC)允许不遵循这一规定。


by 6lszxz @ 2021-12-05 22:14:40

@ud2_ 好滴好滴,阿里嘎多


|