C语言如何把三个数组合成一个数组 如a[]={1,2,3}b[]={4,5,6}c[]={7,8,9} 结:d[]={1,2,3,4,5,6,7,8,9,}?

作者&投稿:历韵 (若有异议请与网页底部的电邮联系)
C语言编程: 把1、2、3、4、5、6、7、8、9这九个数组合成三个三位数。要求:每个数字仅用一次~

3位数的平方数就那么多,从11^2到31^2穷举判断就好
///
/// 轮询3位平方数
///
static void searchNum()
{
for (int i = 11; i <= 29; i++)
{
for (int j = i + 1; j <= 30; j++)
{
for (int k = j + 1; k <= 31; k++)
{
if (checkNum(i * i, j * j, k * k))
{
Console.WriteLine("符合解:" + (i * i) + "," + (j * j) + "," + (k * k));
}
}
}
}
}

///
/// 判断3个三位数是否为不同数字组成
///
///
///
///
///
static bool checkNum(int num1, int num2, int num3)
{
int[] list = new int[9];
list[0] = num1 / 100;
list[1] = (num1 % 100) / 10;
list[2] = num1 % 10;
list[3] = num2 / 100;
list[4] = (num2 % 100) / 10;
list[5] = num2 % 10;
list[6] = num3 / 100;
list[7] = (num3 % 100) / 10;
list[8] = num3 % 10;
for (int i = 0; i < list.Length - 1; i++)
{
for (int j = i + 1; j < list.Length; j++)
{
if (list[i] == list[j])
{
return false;
}
}
}

return true;
}

main()
{
int a[]={1,7,9,2,5};
int b[]={-1,7,9,2,5,6,8,-2};
int c[20];
int i=0,j=0,k=5;
for(i=0;i<5;i++)*(c+i)=*(a+i);
for(j=0;j<8;j++)
{
for(i=0;i<5;i++)if(*(c+i)==*(b+j)break;
if(i==5)*(c+k++)=*(b+j);
}
for(i=0;i<k;i++)printf("%4d",*(c+k));
printf("\n");
}
以上程序合并ab两个数组,并保留一个重复的元素。

//O(n),完成合并

#include<stdio.h>

int merge(int a[],int b[],int n,int m){//合并两个有序数组

//原理是归并排序的合并阶段

//两个有序数组合并,仍保持有序 

int i=0,j=0;

int c[100]={0};//存储合并后的数组 

int k=0;

while(i<n&&j<m){

if(a[i]<b[j]){

c[k++]=a[i++];

}

else{

c[k++]=b[j++];

}

}

while(i<n){

c[k++]=a[i++];

}

while(j<m){

c[k++]=b[j++];

}

for(int i=0;i<k;i++){

a[i]=c[i];//合并后的数组存入a数组 

}

return k;//返回合并后的数组长度 

}

void print(int a[],int n){//打印数组 

for(int i=0;i<n;i++){

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

}

printf("
");

}

int main(){

int a[20]={1,2,3};

int b[20]={4,5,6};

int c[20]={7,8,9}; 

int len1=3;//数组a的长度 

int len2=3;//数组b的长度 

int len3=3;//数组c的长度 

int len=0;//合并数组长度 

//经过两次合并 

len=merge(a,b,len1,len2);//数组a,b合并,存入数组a 

printf("a,b合并
");

print(a,len);//打印a,b合并结果 

len=merge(a,c,len,len3);//数组a,b,c合并,存入数组a 

printf("a,b,c合并
");

print(a,len);//打印a,b,c合并结果

return 0;

}



下面方法可以把三个int 数组合成一个新数组,新数组元素个数是 m。
已知的三个数组大小可以不等。
如果是 float 或 double 型,把程序中变量声明和 sizeof(int) 换成 相应类型即可。
#include <stdio.h>
int main()
{
int a[]={1,2,3},b[]={4,5,6},c[]={7,8,9},*d;
int n[3],m,i;
n[0]=sizeof(a)/sizeof(int);
n[1]=sizeof(b)/sizeof(int);
n[2]=sizeof(c)/sizeof(int);
m=n[0]+n[1]+n[2];
d = (int *) malloc(m * sizeof(int));
for (i=0;i<n[0];i++)d[i]=a[i];
for (i=0;i<n[1];i++)d[i+n[0]]=b[i];
for (i=0;i<n[2];i++)d[i+n[0]+n[1]]=c[i];
for (i=0;i<m;i++) printf("%d ",d[i]);
return 0;
}

设置一个字符串buffer,把三个数组分别循环一遍,放进buffer,用逗号隔开,然后再转化成一个数组!

循环,赋值,
都是一维数组可以用接字符串的方式延伸,不行的话就用循环,一步一步赋值!

你可以上网查查一些函数,有些函数可以拼接数组.我学的是java,最笨的方法就是写循环把每个数组值取出来然后对d数组进行赋值


c语言第三个数组怎么写..
include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>void input(double*a,int n){ int i; for(i=0;i<n;i++) { scanf("%lf",a+i); }}double aver(double*a,int n){ int i; double ave=0; for(i=0;i<n;i++) { ...

c语言将一段字符数组的数字三个三个的输出怎么实现?
char s[] = "123456789";for (int i = 0; s[i]; i++){ if (i % 3 == 0 && i != 0)putchar(' ');putchar(s[i]);}

C语言 从txt中读入三行数据到三个数组 求代码及解释
include"stdio.h"void main(){ int j;double x[6],y[6],x0[3];FILE *fp;if((fp=fopen("C:\\\\a.txt","r"))==NULL){ printf("cannot open this file\\n");return;} for(j=0;j<6;j++)fscanf(fp,"%lf",&x[j]);fscanf(fp,"\\n"); \/* 增加换行 *\/ for(j=0;j<6;j...

C语言如何将多个数字存入一个数组中
1、使用多维数组读入数字即可。2、例程:include <stdio.h>int main(void){ int a[3][4], i = 0, j = 0; for(i = 0; i < 3; i++) for (j = 0; j < 4; j++) scanf("%d;", &(a[i][j])); for(i = 0; i < 3; i++) { printf("\\na[%d...

...如何将输入的这一串字符分别定义到三个数组中,
可以直接输入到三个变量中。不过要保证中间没有空格。int a,b;char op;scanf("%d%c%d",&a,&c,&b);

C语言中怎么把一维数组赋给另外一个一维数组
或者遍历二维数组,将每个元素赋值为一维数组对应值上。优点为操作灵活,可以按照需要任意赋值。2、当一维数组和二维数组类型相同,而且赋值顺序与一维数组中的存储顺序完全相同时,可以用memcpy的方式,直接一次性赋值。如一维数组为a,二维数组为b,基础类型为TYPE,需赋值元素个数为n,可以调用 memcpy(b,...

[图]C语言如何将三个字符串存放在一个大数组中
char longst[1000] = {0};strcat(longstr, "china");strcat(longstr, "*");strcat(longstr, "u.s.a");strcat(longstr, "*");strcat(longstr, "Canada");

...两个数组内的相应元素相加,结果存储到第三个数组内
+ num2[i];}}void show_array(int *num, int lenth){int i ;for( i = 0; i < lenth; i++){printf("%-3d",num[i]);}}void main(){int num1[]={1,2,3,4,5};int num2[]={5,6,7,8,9};int num3[5];int lenth = 5; add(num1,num2,num3,lenth);printf("...

C语言中如何把一个数组的值赋给另一个数组 急!!!
第一个问题,用FOR循环吧第一个数组的值 给第二个,第二个问题,可以,完全可以,第一个矩阵刚好是第二个的转制矩阵,当然可以了。

c语言 分别输出三个数组的大写字母,小写字母,数字
因为 c=='\\0'了 不满足条件,不执行了 应该给c初始化

信阳市13660517009: 如何用C语言编程将两个有序数组a,b合并成一个数组c -
从向七叶: 就以你的例子来写,可适当修改为更普遍的 算法核心代码为:int i = j = k = 0;//循环比较,将小的插入到C数组中 while ( i < 3 && j < 3) { if (a [i] < b [j]) c[k++] = a[i++]; else c[k++] = b[j++]; }//处理其中一个数组剩下 while (i < 3) c[k++] = a[i++]; while( j < 3) c[k++] = b[j++]; 或许有更好的实现,你自己在想想吧!

信阳市13660517009: C语言编程 数组合并 -
从向七叶: #include<stdio.h> int main() { int aLength; scanf("%d",&aLength); int a[aLength]; int i,j=0; for(i=0;i<aLength;i++) { scanf("%d",a+i); } int bLength; scanf("%d",&bLength); int b[bLength]; for(i=0;i<bLength;i++) { scanf("%d",b+i); } int allLength...

信阳市13660517009: 任意将三个数组合的c语言程序 -
从向七叶: 12345678910111213141516171819202122232425262728293031323334353637383920 void MP_Ellipse(int xc , int yc , int a, int b)21 { 22 double sqa = a * a;23 double sqb = b * b;24 25 double d = sqb + sqa * (-b + 0.25);26 int x = 0;27 int y = b;...

信阳市13660517009: 跪求一个C语言程序,实现功能:任意输入3个数,求出全部的组合.如365,全部组合有27种 -
从向七叶: 3个的 要写多个的也可以改#include <stdio.h> #include "string.h"main(){int i,j,k,nLen,count=0;char a3="\0";gets(a);nLen = strlen(a);for (i=0;i<nLen;i++){for (j=0;j<nLen;j++){for (k=0;k<nLen;k++){printf("%c%c%c ",ai,aj,ak);count++;if (count%9==0){printf("\n");}}}}}

信阳市13660517009: c语言 从1—10中取三个数,组合并输出 -
从向七叶: #include <stdio.h> #include <malloc.h> typedef struct s_node { int iCount; int aNum[3]; struct s_node *next; }Node; int main(void) { Node *pHead = NULL; Node *pNext = NULL; int i = 0,j = 0,k = 0; int num = 0; pHead = (Node *)malloc(sizeof(Node)); ...

信阳市13660517009: 跪求一个C语言程序,实现功能:任意输入3个数,求出全部的组合如?
从向七叶: #include int main() { int a[3],i,j,k; for(i=0;i { scanf("%d",&a[i]); } for(i=0;i { for(j=0;j { for(k=0;k printf("%d%d%d ",a[i],a[j],a[k]); } printf(" "); } gech(); return 0; } 实验了一下,凑合能用.

信阳市13660517009: 用c语言设计一个程序输入三个数,将它们组合成六个三位数 -
从向七叶: 要求输入 1 到 9 中 的 3 个数字,组合成 6 个 3 位数 ,程序如下:#include #include int main () { int a[3]; int b[10]; int i,j,k,n=0; printf("input 3 diff digits, 1-9:\n"); for (i=0;i<3;i++) scanf("%d",&a[i]); for (i=0;i<3;i++) for (j=0;j<3;j++) for (k=0...

信阳市13660517009: C语言:6.合并数组. ⑴ 编写函数 int com(int *a,int *b,int *c) -
从向七叶: #include "stdio.h"#include "algorithm.h"#define M 10#define N 10 int com(int *a, int *b, int *c) { int i, j; int count = 0; for (i = 0; ic[i] = a[i]; for (j = 0; jc[i++] = b[j]; sort(c, c + (M + N)); for (i = 0; i{ if (c[i] == c[i + 1]) { count++; for (j = i; jc[j] = c[j + 2]; } ...

信阳市13660517009: c语言中,将三个数组合并并将其中相关元素排序,求程序,用for语句实现 -
从向七叶: //刚写的code,如果有疑问,欢迎交流#include void bubblesort(int *list,int len) //冒泡排序 { int i,j; int temp; for(i=0;i for(j=0;j { if(list[j+1] { temp=list[j+1]; list[j+1]=list[j]; list[j]=temp; } } } int main(){ int a[100], b[100], c[100]; int m, n, p, i; scanf("%d %d %d",...

信阳市13660517009: 同C语言合并两个数组 -
从向七叶: int main(int argc, char* argv[]) {int a[2][3]={1,2,3,4,5,6};int b[2][3]={7,8,9,3,2,1};int i,j;int c[12]; //c是个数组哈int k=0;printf("The array is: ");//你已经有a和b了不用再输入了,这样输入也不对 // for(i=0;i<6;i++) // scanf("%d",&a); // for(i=0;i...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网