當前位置:首頁 » 編程語言 » 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++];
或許有更好的實現,你自己在想想吧!