#include
int main()
{
int x;
int y;
int target;
int array[101][101];
int sumOfRow[101];
scanf("%d%d%d",&x,&y,&target);
for(int i=1;i<=y;i++)
{
int sum=0;
for(int j=1;j<=x;j++)
{
scanf("%d",&array[i][j]);
sum+=array[i][j];
}
sumOfRow[i]=sum;
}
int sum=0;
for(int k=1;k<=y;k++)
{
sum+=array[k][target];
}
for(int i=1;i<=y-1;i++)
{
for(int j=1;j<=y-1-i;j++)
{
int temp=0;
if(sumOfRow[j+1]>sumOfRow[j])
{
temp=sumOfRow[j+1];
sumOfRow[j+1]=sumOfRow[j];
sumOfRow[j]=temp;
}
}
}
double average=sum*1.0/y;
printf("%lf %d",average,sumOfRow[y]);
}
你行列搞反了。题目说前三个整数分别为行数,列数和统计平均值的列序号。因此x是行号,y是列号,但你后面x和y用反了
x是行,y是列,你代码里是反的
int main()
{
int x;
int y;
int target;
int array[101][101];
int sumOfRow[101] = {0}, sum = 0;
scanf("%d%d%d", &x, &y, &target);
for (int i = 1; i <= x; i++) //
{
// int sum = 0;
for (int j = 1; j <= y; j++) //
{
scanf("%d", &array[i][j]);
sumOfRow[i] += array[i][j];
if (j == target)
sum += array[i][j];
}
}
// int sum = 0;
// for (int k = 1; k <= y; k++)
// {
// sum += array[k][target];
// }
// for (int i = 1; i <= y - 1; i++)
// {
// for (int j = 1; j <= y - 1 - i; j++)
// {
// int temp = 0;
// if (sumOfRow[j + 1] > sumOfRow[j])
// {
// temp = sumOfRow[j + 1];
// sumOfRow[j + 1] = sumOfRow[j];
// sumOfRow[j] = temp;
// }
// }
// }
int max = sumOfRow[0];
for (int i = 1; i <= x; i++)
{
if (max < sumOfRow[i])
max = sumOfRow[i];
}
double average = sum * 1.0 / y;
printf("%lf %d", average, max);
}