一、题目
参考题4:编写函数void appendArray(int data1[], int n1, int data2[], int n2)接收传入的数组1和数组长度,数组2和数组长度,功能是将传入的数组2元素复制到数组1的后面。在main函数中定义初始化data1和data2,调用函数并输出data1。
二、主函数
我们先写main函数部分,因为题目中给出的函数的参数是有字符长度的,而且传入的数组是int型,所以我们需要定义两个int型数组和两个变量x,y。这里是需要自己去输入字符串长度的,如果像是字符串数组没有给这一点的就要去使用strlen函数去计算这个字符串的长度。后面可以看到这个是需要使用的。然后给数组和变量赋值。调用函数最后打印str1数组。这个就是main函数部分,结合代码以及代码后面的注释去看。
三、appendArray函数
这个函数的目的是把str2数组中的元素接到str1的后面,所以说我们需要使用指针的知识。首先,我们要清楚的认识到数组在进行函数传参的时候传的其实只是这个数组的首地址,也就是说传入的data1[]就是一个指针。然后我们实现函数的目的,因为我们要把str2数组接到str1数组后面。现在data1[]和data2[]分别指向的是str1和str2的首个元素,我们不需要去更改str1本来的部分所以说我们把data1+n1(此处的n1就是str1中元素的个数)让他指向str1数组的最后面。在使用一个while循环循环的次数即为str2中元素的个数也就是n2。接着就是把指针data2指向的元素去赋值给指针data1所指向的地址中。如此,循环结束后我们的str1就是接入后的数组了。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void appendArray(int data1[], int n1, int data2[], int n2)//此处的data1[]本质上是一个指针
{
int i = 1;//用来计数
data1 = data1 + n1;//此处把data1指向str1数组的末端
while (i <= n2)//刚好循环的次数是str2的长度
{
*data1 = *data2;//把str2的值赋在str1的末端
data1++;
data2++;
i++;
}
}
int main()
{
int str1[20];//根据题目要求进行定义
int str2[10];
int x = 0, y = 0;
//给数组长度和数组赋值
//这里如果要求的是一个字符数组我们就要使用strlen函数进行计算字符串长度了
//在使用strlen函数时不要忘记引用头文件#include<string.h>
scanf("%d", &x);
for (int i = 0; i < x; i++)
{
scanf("%d", &str1[i]);
}
scanf("%d", &y);
for (int i = 0; i < y; i++)
{
scanf("%d", &str2[i]);
}
//调用函数
appendArray(str1, x, str2, y);
//打印结果
for (int i = 0; i < x + y; i++)
{
printf("%d", str1[i]);
str1[i]++;
}
return 0;
}