任务描述
本关任务:编写函数交换数组 a 和数组 b 中的对应元素,要考虑到数组 a 和数组 b 中数组元素的个数不同。
相关知识
略
编程要求
根据提示,在右侧编辑器 Begin-End 区间补充代码,完成三个子函数的定义,交换数组 a 和数组 b 中的对应元素,具体要求如下:
- 函数 inputarr()实现数组的输入,当遇到数字
-1
时,结束输入;- 函数 swaparr()实现数组元素的交换;
- 函数 outputarr()实现数组元素的输出。
测试说明
平台会对你编写的代码进行测试:
测试输入:
91 1 42 32 9 57 6 33 2 88 -1
41 13 25 32 29 74 68 30 5 48 57 6 33 62 81 -1
预期输出:
41 13 25 32 29 74 68 30 5 48 57 6 33 62 81
91 1 42 32 9 57 6 33 2 88
开始你的任务吧,祝你成功!
#include <stdio.h>
#include <stdlib.h>
void inputarr(int *a, int *n);
void swaparr(int *a, int *n, int *b, int *m);
void outputarr(int *a, int n);
int main()
{
int a[100], b[100], n = 0, m = 0;
inputarr(a, &n);
inputarr(b, &m);
swaparr(a, &n, b, &m);
outputarr(a, n);
outputarr(b, m);
return 0;
}
void inputarr(int *a, int *n)
{
int num;
int i = 0;
scanf("%d", &num);
while (num != -1)
{
a[i] = num;
i++;
scanf("%d", &num);
}
*n = i;
}
void swaparr(int *a, int *n, int *b, int *m)
{
int min = (*n < *m) ? *n : *m;
for (int i = 0; i < min; i++)
{
int temp = a[i];
a[i] = b[i];
b[i] = temp;
}
if (*n < *m)
{
for (int i = min; i < *m; i++)
{
a[*n] = b[i];
(b[i]=-1);
(*n)++;
}
*m = *n;
}
else if (*n > *m)
{
for (int i = min; i < *n; i++)
{
b[*m] = a[i];
a[i]=-1;
(*m)++;
}
*n = *m;
}
}
void outputarr(int *a, int n)
{
for (int i = 0; i < n; i++)
{
if(a[i]!=-1) printf("%d ", a[i]);
}
printf("\n");
}