
//题目要求如下图所示,自己想了好久还是没能解决,希望大家帮我看看
#include <stdio.h>
int main()
{
int a[100][100],s[100]={0};
int m,n,i,j,t,p;
scanf("%d,%d",&m,&n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
getchar();
s[j] += a[i][j];
}
}
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(s[j] > s[j+1])
{
t = s[j];
s[j] = s[j+1];
s[j+1] = t;
//
for(p=0;p<m;p++)
{
t = a[p][j];
a[p][j] = a[p][j+1];
a[p][j+1] = t;
}
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
printf("%d",a[i][j]);
else
printf(",%d",a[i][j]);
}
printf("\n");
}
}
- 建立这样的结构:
struct item{
int avg; // 列的平均值
int index; // 列在数组中的索引
};
- 遍历原矩阵求出 struct item 列表;
- 根据avg升序排序 struct item 列表,可以自己实现排序算法,也可以调用qsort()函数,详情参考https://blog.csdn.net/ZDDWLIG/article/details/120209948.
- 根据排序后的 struct item 列表的index 输出原矩阵即可。