C语言二维数组问题?

谢谢朋友上次的回答,非常满意,有机会会报答朋友已知一个二维数组:d[6][4]={{1,2,6,3},{2,6,8,1},{6,3,9,5},{7,1,4,5},{2,7... 谢谢朋友上次的回答,非常满意,有机会会报答朋友
已知一个二维数组:
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}对应的大小序号
展开
 我来答
紫薇参星
科技发烧友

2021-09-20 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3626万
展开全部

按照你的要求编写的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
追答

有可能是返回的数据被其它程序更改了,你在sort函数中把return c改成return a,

然后在其前面加几句,具体见图中注释处,然后看看怎么样.

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式