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_ 好滴好滴,阿里嘎多