写杭电2023题的时候发现一个很神奇的事情
在vs2019编译器上,对结构体内的数组进行
int a[6]={0,0,0,0,0,0}
这样的初始化是没什么问题的
而在杭电oj提交时
0_0_36549296_2139.cpp
0_0_36549296_2139.cpp(15) : error C2536: “student::student::aa”: 无法指定数组的显式初始值设定项
0_0_36549296_2139.cpp(15) : 参见“student::aa”的声明
所幸就直接在主函数里初始化了
for (int k = 0; k < 6; k++)
{
s[i].aa[k] = 0;
}
下面附上完整代码
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<algorithm>
typedef long long l;
using namespace std;
struct student
{
int aa[6];
};
int main()
{
int n, m, i, j;
while (cin >> n >> m)
{
double a[5] = { 0 };
student s[51];
for (i = 0; i < n; i++)
{
for (int k = 0; k < 6; k++)
{
s[i].aa[k] = 0;
}
for (j = 0; j < m; j++)
{
int t; cin >> t;
a[j] += t;
s[i].aa[j] += t;
s[i].aa[5] += t;
}
if(i==0)
printf("%.2f", s[i].aa[5]*1.0 / m);
else
printf(" %.2f", s[i].aa[5] * 1.0 / m);
}
cout << endl;
for (j = 0; j < m; j++)
{
a[j] = a[j] / n;
if(j==0)
printf("%.2f", a[j]);
else
printf(" %.2f", a[j]);
}
cout << endl;
int count = 0;
for (i = 0; i < n; i++)
{
bool ok = true;
for (j = 0; j < m; j++)
{
if (s[i].aa[j] < a[j])ok = false;
}
if (ok == true)count++;
}
cout << count << endl << endl;
}
return 0;
}