这是杭电oj的2023题,我在VS运行成功,但是提交报runtimeerror,请大家帮忙看看是为啥。

2025-04-09 05:44:39
推荐回答(1个)
回答1:

void cal(double **score, int n, int m){
double *averageCourse;
double *averageStu;
double sum = 0;
averageStu = (double *)malloc(sizeof(double)*(n + 10));
averageCourse = (double *)malloc(sizeof(double)*(m + 10));
int count = 0;
int count1 = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
sum += score[i][j];
}
averageStu[i] = sum / m;
sum = 0;
}
sum = 0;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
// score[j][i] 这里你的下标错了
sum += score[j][i];
}
averageCourse[i] = sum / n;
sum = 0;
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (score[i][j] >= averageCourse[j])
count1++;
}
if (count1 == m)
count++;
count1 = 0;
}
for (int i = 0; i < n; i++)
{
if (i == n - 1)
printf("%.2lf\n", averageStu[i]);
else
printf("%.2lf ", averageStu[i]);
}
for (int i = 0; i < m; i++)
{
if (i == m - 1)
printf("%.2lf\n", averageCourse[i]);
else
printf("%.2lf ", averageCourse[i]);
}
// 两个换行
printf("%d\n\n", count);
}