『壹』 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;
}