C++编程:按照二维数组的第一行从大到小排序,每列相应各行跟着第一行移动

如:有数组 3 1 5
0.3 0.5 0.1
1 0 2
0 1 1
希望程序运行后得到的结果是:
5 3 1
0.1 0.3 0.5
2 1 0
1 0 1

第1个回答  2015-04-13
//#include "stdafx.h"//vc++6.0加上这一行.
#include <iostream>
using namespace std;
int main(void){
    double a[4][3]={{3,1,5},{0.3,0.5,0.1},{1,0,2},{0,1,1}},tmp;
    int i,j,k,l;
    for(i=0;i<3;i++){
        for(k=i,j=k+1;j<3;j++)
            if(a[0][k]<a[0][j]) k=j;
        if(k!=i)
            for(l=0;l<4;l++){
                tmp=a[l][k];
                a[l][k]=a[l][i];
                a[l][i]=tmp;
            }
    }
    for(i=0;i<4;i++){
        for(j=0;j<3;cout << a[i][j++] << '\t');
        cout << endl;
    }
    return 0;
}

本回答被网友采纳
第2个回答  2015-04-13
int main()
{
float a[][3] = {{3,1,5},{0.3,0.5,0.1},{1,0,2},{0,1,1}};
float temp = 0;
int k = sizeof(a)/3/sizeof(float);
for(int i = 0;i < 3;i++)
{
for(int j = 0;j < (2 - i);j++)
{
if(a[0][j] < a[0][j+1])
{
for(int m =0;m < k;m++)
{
temp = a[m][j];
a[m][j] = a[m][j+1];
a[m][j+1] =temp;
}
}
}
}
for(int i = 0;i < k;i++)
{
for(int j = 0;j < 3;j++)
{
if(i == 1)
{
printf("%0.1f ",a[i][j]);
}
else
{
printf("%0.0f ",a[i][j]);
}
}
printf("\n");
}
getchar();
return 0;
}
相似回答