当前位置:首页 » 编程语言 » c语言如何将二维数组并列
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言如何将二维数组并列

发布时间: 2022-09-10 13:58:08

‘壹’ c语言,给定两个二维数组A和B,其元素按递增顺序排列。请编写一个程序设计把数组A和B的元素合并到数

#include <stdio.h>
void main()
{
int a[10],b[10],c[20],i,ia,ib,ic;
printf("please input the first array\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
scanf("%d",&b[i]);
printf("\n");
ia=0;ib=0;ic=0;
while(ia<10&&ib<10)
{
if(a[ia]<b[ib])
{
c[ic]=a[ia];
ia++;
}
else{
c[ic]=b[ib];
ib++;
}
ic++;
}
while(ia<10)
{
c[ic]=a[ia];
ia++;
ic++;
}
while(ib<10)
{
c[ic]=b[ib];
ib++;
ic++;
}
for(i=0;i<20;i++)
{
printf("%5d",c[i]);}
}

‘贰’ C语言 如何对二维数组进行按列排序

无论是多少维的数组,机内都是一维的,以行优先存放。所以直接降为一维数组排序最方便省事。下面以二维数组为例写出代码——

#include"stdio.h"
intmain(intargc,char*argv[]){
intx[3][3]={{9,4,3},{6,2,7},{5,8,1}},i,j,k,*p;
printf("Beforeorderingisasfollows: ");
for(i=0;i<3;i++){
for(j=0;j<3;printf("%2d",x[i][j++]));
printf(" ");
}
for(p=(int*)x,i=0;i<9;i++){//用p=(int*)x将x降为一维数组p,选择法排序
for(k=i,j=k+1;j<9;j++)
if(p[k]>p[j])
k=j;
if(k!=i)
j=p[k],p[k]=p[i],p[i]=j;
}
printf("Sortedasfollows: ");
for(i=0;i<3;i++){//输出排序后的二维数组
for(j=0;j<3;printf("%2d",x[i][j++]));
printf(" ");
}
return0;
}

运行结果:

‘叁’ C语言 如何对二维数组进行按列排序

在C语言中,二维数组按行存储,对每一行排序很方便,可以把每一行当成一个一维数组,使用排序函数直接进行排序。

然而对每一列进行排序,就不能直接当成一维数组进行排序。但是仍然可以把第j列a[0...M-1][j]在逻辑上当成一维数组进行排序,下面以使用冒泡排序为例对其排序。

对二维数组按列排序后,进一步展示了如何调用快速排序函数按行进行排序。

程序源码:

#include<stdio.h>
#include<stdlib.h>


#defineM3
#defineN3

//输出二维数组的函数
voidprint(inta[][N])
{
inti,j;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%d",a[i][j]);
}
printf(" ");
}
}

//qsort的cmp函数
intcmp(constvoid*a,constvoid*b)
{
return*(int*)a-*(int*)b;
}

intmain(intargc,char*argv)
{

inta[M][N]={3,2,1,9,8,7,6,5,4};

printf("按列排序前的二维数组是: ");
print(a);
printf(" ");
intj;
for(j=0;j<N;j++)//对每一列进行升序排序
{
//对第j列进行排序
intm,n;
intt;
for(m=M-1;m>0;m--)
{
for(n=0;n<m;n++)
{
if(a[n][j]>a[n+1][j])
{
t=a[n][j];
a[n][j]=a[n+1][j];
a[n+1][j]=t;
}
}
}
}
printf("按列排序后二维数组变为: ");
print(a);
printf(" ");

//对按列排序后的二维数组按行升序排序(调用快速排序函数)

inti;
for(i=0;i<M;i++)
{
qsort(a[i],N,sizeof(a[i][0]),cmp);
}

printf("按列排序后再按行排序后二维数组变为: ");
print(a);
printf(" ");
system("pause");
return0;
}

编译运行后的结果如下:

‘肆’ 求C语言二维数组元素排列组合

只是0,1还好办,要是0-9,或者更多数字就不好弄,
你这个其实跟数组是一维或者二维关系不大,3*3二维跟9个的一维,组合数结果是一样的
这个用到绑定插入法,先将少的数字绑定,3个0,3个相对6个少点,
1.先将3个0,看成一个整体。插入到6个1中间。共7种插法,
2.2个0看成一个整体,插入,7种,在插入另外一个0,这是个这个0不能查到0的前,或者后,会跟之前的重复,6种,6*7=42种插法,
3.分开插,0不能相邻,101010/010101整体,向剩下的111里面查去,共2*4=8种

‘伍’ C语言怎么并列打印两个的二维数组

#include<stdio.h>

intmain()

{ inta[3][3]={1,2,3,4,5,6,7,8,9},b[3][3]={10,20,30,40,50,60,70,80,90};

inti,j;

printf("%-13s%-10s ","A数组:","B数组:");

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

printf("%3d",a[i][j]);

printf("");

for(j=0;j<3;j++)

printf("%3d",b[i][j]);

printf(" ");

}

return0;

}

‘陆’ C语言二维数组如何交换两行或者两列

代码:

#include<stdio.h>

int main()

{

int i, j, a[2][3] = { {1,2,3},{4,5,6} },b[3][2];

printf("array a: ");

for (i = 0; i <=1; i++)//处理a数组中的一行中各元素

{

for (j = 0; j <= 2; j++)//处理a数组中的某一列元素

{

printf("%5d", a[i][j]);

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

}

printf(" ");

}

printf("array b: ");

for (i = 0; i<=2; i++)

{

for (j = 0; j <=1; j++)

{

printf("%5d", b[i][j]);

}

printf(" ");

}

return 0;

}

(6)c语言如何将二维数组并列扩展阅读:

1、return在函数中的作用

我们如果将函数看做一个加工厂,参数就是我们向加工厂投入的原料,具体的函数功能实际上就是加工的过程,而return语句代表返回值,就是加工厂在实现加工之后给“投资人”的成品。

2、return语句的特点

a、在函数当中,遇到return语句之后就意味着函数运行的结束,在此之后的代码是不运行的。

b、它不支持任何运算也没有任何内建方法,和任何其他的数据类型比较是否相等时永远返回false,也可以将None赋值给任何变量。

c、执行到return语句时,会退出函数,return之后的语句不再执行。但将return语句放在try语句块中,是个例外。

3、return的默认值:return函数默认的返回值为undefined。

‘柒’ C语言中如何将一个3×3的二维数组,行列互换,并赋值到另一个二维数组

#include<stdio.h>


intmain(void)


{


intarray[3][3]={1,2,3,4,5,6,7,8,9};


intarray_1[3][3];


printf("原始数组: ");


for(inti=0;i<3;i++){


for(intj=0;j<3;j++){


array_1[j][i]=array[i][j];


printf("%d ",array[i][j]);


}


printf(" ");


}


printf("转换后数组: ");


for(intm=0;m<3;m++){


for(intn=0;n<3;n++){


printf("%d ",array_1[m][n]);


}


printf(" ");


}


return0;


}