在C语言中如何用把二维数组中的一行贼给一维数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C语言中如何用把二维数组中的一行贼给一维数组?相关的知识,希望对你有一定的参考价值。

参考技术A c语言中
二维数组是按行优先存储的

在内存中存一个二维数组时
先把数组中第一行的数组元素存完
再接着存下一行的
直到存完。
ps:定义一个二维数组

int
a[m][n]
该数组为m行
n列的矩阵,在内存中
这样顺序存的:
a[0][0]
a[0][1]
...
a[0][n-1]
a[1][0]
a[1][1]...
不知道是不是帮到你的忙了
望采纳
参考技术B int
i,j,a[3][4],b[12];
int
n=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)

b[n++]=a[i][j];

或者用这个,memcpy(b
,
a[0],16);
后面的16表示4个整形,16个字节,但是我怕你搞错,还是走循环,嵌套赋值吧

如何用c语言给输入的二维数组每一行排序

可以用stdlib.h中的qsort函数
如果是int a[10][10]的话
排序第i行
qsort(a[i],10,sizeof(int),comp);
就可以了,comp是一个比较函数
int comp(const void *m1, const void *m2)
return *(int*)m1-*(int*)m2;

这样就可以排序了,如果要反序,就将comp中的m1和m2互换,可以试试,如果不对可以Hi我
参考技术A #include <stdio.h>
void main()

int a[3][4],i,j,t,m,x;
printf("输入一3×4二维整型数组:\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",*(a+i)+j);
for(x=1;x<5;x++)
for(i=0;i<3;i++)

for(t=0;t<3;t++)
if(*(*(a+i)+t+1)<*(*(a+i)+t))

m=*(*(a+i)+t+1);
*(*(a+i)+t+1)=*(*(a+i)+t);
*(*(a+i)+t)=m;


printf("每行按从小到大的排序后为:\n");
for(i=0;i<3;i++)

for(j=0;j<4;j++)
printf("%6d",*(*(a+i)+j));
printf("\n");

本回答被提问者采纳
参考技术B 这是最基本的排序算法

依次比较两个把大的放在前面

循环
循环
就可以了

以上是关于在C语言中如何用把二维数组中的一行贼给一维数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何用c语言给输入的二维数组每一行排序

C语言中如何用gets();语句来接收一个二维数组

C语言中如何用名字存数组,用时间函数模拟随机,实现随机输出一个姓名。

C语言中二维数组行指针是啥

C语言一维数组转二维数组

C语言中怎么把一维数组赋给另外一个一维数组