已知一个二维数组用c语言获得新的二维数组
已知一个二维数组:d[6][4]={{1,2,6,3},{2,6,8,1},{6,3,9,5},{7,1,4,5},{2,7,5,6},{1,3,7,2}}想要得到新的二维数组是:f[6][3]={{1,2,4,3},{2,3,4,1},{3,1,4,2},{4,1,2,3},{1,4,2,3},{1,3,4,2}}用c语言如何实现详细说明:新的二维数组6行4列第一列二维数组的元素{1,2,4,3}分别对应已知二维数组第一列元素{1,2,6,3}对应的大小序号第二列二维数组的元素{2,3,4,1}分别对应已知二维数组第二列元素{2,6,8,1}对应的大小序号以此类推...............................................第六列二维数组的元素{1,3,4,2}分别对应已知二维数组第六列元素{1,3,7,2}对应的大小序号
结果不应该是f[6][3],而是f[6][4].程序参考:
#include <stdio.h>
#include <stdlib.h>
int sort_function( const void *a, const void *b) //排序比较函数
{
return *(int *)a-*(int *)b;
}
void fun(int *d,int *f)
{
int t[4],i,j;
for(i=0;i<4;i++)
t[i]=d[i];
qsort(t,4,sizeof(int), sort_function); //排序
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
if (d[i]==t[j])
{
f[i]=j+1;
break;
}
}
}
int main()
{
int d[6][4]= {{1,2,6,3},{2,6,8,1},{6,3,9,5},{7,1,4,5},{2,7,5,6},{1,3,7,2}};
int f[6][4];
int i,j;
for(i=0; i<6; i++)
fun(d[i],f[i]);
for(i=0;i<6;i++)
{
for(j=0;j<4;j++)
printf("%2d",f[i][j]);
printf("
");
}
return 0;
}
结果
另外,排序你可能自己写(我用的是C标准函数)