‘壹’ 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;
}