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}对应的大小序号 展开
按照你的要求编写的C语言程序如下
#include<stdio.h>
#include<stdlib.h>
int* sort(int a[],int n){
int i,j,temp;
int* b;
int* c;
b=(int*)malloc(n);
c=(int*)malloc(n);
for(i=0;i<n;i++){
b[i]=a[i];
}
for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;j++){
if(b[j]>b[j+1]){
temp=b[j];
b[j]=b[j+1];
b[j+1]=temp;
}
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(a[i]==b[j]){
c[i]=j+1;
break;
}
}
}
return c;
}
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];
int i,j;
for(i=0;i<6;i++){
f[i]=sort(d[i],4);
}
for(i=0;i<6;i++){
for(j=0;j<4;j++){
printf("%d ",f[i][j]);
}
printf("\n");
}
return 0;
}
第一次运行结果这样,不知道哪里出问题了每次都不一样
1 2 4 3
2 3 4 -2013265919
3 1 4 -2013265918
4 1 2 3
1 4 2 3
1 3 4 2
第二次运行结果这样
1 2 4 3
2 3 4 -2013265919
3 1 4 2
4 1 2 3
1 4 2 3
1 3 4 2