当前位置:首页 » 编程语言 » c语言连接两个数组
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言连接两个数组

发布时间: 2022-02-04 12:47:45

1. c语言如何定义两个数组

int output(int a[4], b[4])
改成
int output(int a[4], int b[4])

2. c语言,连接2个数组的方法

连接两个数组有点问题,for(x=0;x<6;x++) 数组长度怎么确定array.length 不能用6来表示
可以写个方法,将两数组合并成一个数组
也可以用API函数 memory

3. c语言怎么合并两个数组

int main() {
char a[] = "123456";
char b[] = "abcde";
int buflen = strlen(a) + strlen(b);
char *p = (char*)malloc(buflen + 1);
memset(p, 0, buflen);
printf("%d\n", buflen);
strcpy(p, a);
strcat(p, b);
printf("%s\n", p);
free(p);
}
C的数组在创建后不可变得,因此数组合并的思想就是把数组塞到一个足够大的空间里形成新数组。
上面的函数是比较简单的合并方法

4. C语言怎样输入两行数,存入两个数组中

实现方法:

  1. 自定义按行读入数组的函数 int reada( int *a, int max)

    1. 先读一个数到数组

    2. 再读一个字符,

    3. 判断是否回车符,是则结束读入,否则,下一步

    4. 判断读到的个数是否达到max,达到则结束读入,否则循环到a

    5. 循环结束后,清除缓存中的数据

    6. 返回读到的整数个数

  2. 定义两个数组

  3. 调用该函数reada去分别读取两个数组

参考代码:

#include<stdio.h>
intreada(int*a,intmax)
{
charch=0;
inti;
for(i=0;i<max;i++)
{
scanf("%d",&a[i]);
ch=getchar();
if(ch==' '){
i++;
break;
}
}
while(ch!=' ')ch=getchar();
returni;
}
voidmain()
{
inta[5],b[5];
intm,n,i;
m=reada(a,5);
n=reada(b,5);
for(i=0;i<m;i++)
printf("%d",a[i]);
printf(" ");
for(i=0;i<n;i++)
printf("%d",b[i]);
}

5. c语言怎么用strcat将两个数组a[i]、b[j]合并成一个数组

strcat是字符串拼接函数,不是数组拼接函数,所以不能用于拼接两个数组。

可以用以下方法:

  1. 用数组的话用memcpy。

  2. 用循环把所有数组元素重新拷贝。

  3. 直接当字符串输入。

6. C语言之指针:连接两个字符数组

程序最最主要的问题在于:你在connect函数中,返回了一个局部变量的地址,即局部变量c。
当你返回这个指针(即局部变量c),你是想返回c这个数组的首地址是吧,确实是这样,返回了这个地址值。但是,千万要注意,当你回到主函数时,事实上那个数组早已经不存在了,已经销毁了,也就是说里面的数据已经不是那个connect函数中我们希望的数据了。在主函数中printf("%s",connect(a,b)); 当然不会得到想要的结果了。不知道你明白了没有*_*

我改进了一下,仅供参考
#include "stdio.h"

//增加了一个参数,即s,用于存放连接后的数组元素
char *connect(char *pa, char *pb, char *s)
{
char *pc = s;
int i=0,j=0;

while(*(pa+i)!='\0')
{
*(pc+i)=*(pa+i);
i++;
}

while(*(pb+j)!='\0')
{
*(pc+i)=*(pb+j);
i++;
j++;
}

return s;
}
int main()
{
char a[10],b[10];
char c[20]; //这个数组不放在connect函数中,而是在这里出现,目的是为下面的调用提供接口

scanf("%s",a);
scanf("%s",b);
printf("%s\n", connect(a, b, c));

return 0;
}
你试试吧,可以正确执行*_*
嘿嘿,对于这个程序呢,connect函数是有可以改进之处的,我又做了一点改进,你要是愿意,可以看一下。
#include "stdio.h"
#include "string.h"

//这个connect函数是不是简单了许多呢*_*
char *connect(char *pa, char *pb, char *s)
{
int n = strlen (pa);

strcpy (s, pa);
strcpy (s+n, pb);

return s;
}
int main()
{
char a[10],b[10];
char c[20];

scanf("%s",a);
scanf("%s",b);
printf("%s\n", connect(a, b, c));

return 0;
}

7. C语言,不用strcat,设计一个函数,将两个字符数组连接起来(要用指针的办法)

#include<stdio.h>
void lian(char *a,char *b);
void main()
{

char str1[]="hello";
char str2[]="girl";
char *p1=str1,*p2=str2;
lian(p1,p2);
printf("str1+str2:%s\n",p1);
}
void lian(char *a,char *b)
{ int i=0;
int j=0;
while(* (a+i)!='\0')
{i++;}
for(;* (b+j)!='\0';i++,j++)
{* (a+i)=* (b+j);
* (a+i+1)='\0';
}
}
你应该改这样,不过你样会有内存泄露
最好把char *p1=str1,*p2=str2;改为
char *p2=str2;
char p1[100];//给他足够大的空间
strcpy(p1,str1);//把str1赋给p1的指向,还有要加上string.h这个头文件

8. 怎么用c语言将两个数组并起来

看代码,写了几种数组的合并:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
voidcharacter()
{
charc1[]={'H','e','l','l','o'};
charc2[]={'','w','o','r','l','d','!'};
intk=0;
charnew_c[100];
for(inti=0;i<sizeof(c1);i++)//注意是sizeof()
new_c[k++]=c1[i];
for(i=0;i<sizeof(c2);i++)
new_c[k++]=c2[i];
new_c[k]='';
puts(new_c);

}
voidstring()
{
chars1[]={"hello,"};
chars2[]={"c语言!"};
intk=0;
charnew_s[100];
for(inti=0;i<strlen(s1);i++)//注意是strlen()
new_s[k++]=s1[i];
for(i=0;i<strlen(s2);i++)
new_s[k++]=s2[i];
new_s[k]='';
puts(new_s);
}
voidnumber()
{
intnum1[]={1,2,3},*p1=num1;
intnum2[]={4,5,6,''};//整型数组,字符数组是没有结束符号,自己加入‘’
intnew_num[100];
intk=0;
for(inti=0;i<sizeof(num1)/sizeof(int);i++)
{
new_num[k++]=*(p1++);
}
for(i=0;num2[i]!=0;i++)
{
new_num[k++]=num2[i];
}
new_num[k]='';
for(i=0;new_num[i]!=0;i++)
{
printf("%d",new_num[i]);
}
puts("");

}
voidmain()
{
character();//字符数组的合并
string();//字符串的合并
number();//整型数组的合并,做法是一样的

}

运行截图:

9. C语言怎么连接两个一维数组

你可以考虑用指针配合动态分配内存来做。首先确认两个一维数组的总长度,然后下面是一个例子代码:
int *a = malloc(n*sizeof(int));
将第一个和第二个数组顺序加到a指针就好了。

10. 如何用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++];
或许有更好的实现,你自己在想想吧!