任务描述
本关任务:编写函数交换数组 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>
#define N 20
void inputarr (int *p, int *n);
void outputarr (int *p,int n);
void swap(int *a, int *b);
void swaparr(int *a, int n, int *b,int m);
int main()
{
int i,n=0,m=0;
int a[N],b[N];
//printf("请输入数组a,以-1结束:\n");
inputarr(a,&n);
//printf("请输入数组b,以-1结束:\n");
inputarr(b,&m);
swaparr(a, n, b, m);
//printf("数组a中所有元素:\n");
outputarr (a,m);
//printf("数组b中所有元素:\n");
outputarr (b,n);
return 0;
}
/********** Begin **********/
/********** End **********/
我的代码
#include <stdio.h>
#define M 3
#define N 4
void input(int (*a)[N], int m, int n);
void output(int (*b)[N], int m, int n);
void outputarr(int array[], int n);
void fun(int x[][N], int *y, int m, int n);
int main()
{
int a[M][N];
int b[M * N];
input(a, M, N);
fun(a, b, M, N);
output(a, M, N);
outputarr(b, M * N);
return 0;
}
void input(int (*a)[N], int m, int n)
{
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
scanf("%d", &a[i][j]);
}
}
}
void fun(int x[][N], int *y, int m, int n)
{
for (int j = 0; j < n; j++)
{
for (int i = 0; i < m; i++)
{
y[j * m + i] = x[i][j];
}
}
}
void output(int (*b)[N], int m, int n)
{
printf("二维数组:\n");
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
printf("%d ", b[i][j]);
}
printf("\n");
}
}
void outputarr(int array[], int n)
{
printf("一维数组:\n");
for (int i = 0; i < n; i++)
{
printf("%d ", array[i]);
}
printf("\n");
}
错误,求解!