描述
给定N个整数组成的序列,每次交换当前第x个与第y个整数,要求输出最终的序列。
要求:
1)使用指针的知识完成本题,助教会检查代码
2)编写swap(int* x ,int* y)函数用来交换两个整数
输入
输入描述:
第一行为序列的大小N(1<=N<=1000)和操作个数M(1<=M<=1000)。
第二行包含N个数字,表示初始序列。
接下来M行,每行两个整数x,y (1<=x,y<=N),表示要交换的两个整数的位置。在一次交换中,如果x和y相等,则不会改变序列的内容。
#include <stdio.h>
void swap(int *x,int *y)
{
int t = *x;
*x = *y;
*y = t;
}
int main()
{
int n,m;
int a[n];
int b[1000][2];
scanf("%d %d",&n,&m);
for(int i = 1; i <= n; i++){
scanf("%d",&a[i]);
}
for(int i = 1; i <= m; i++){
scanf("%d %d",&b[i][0],&b[i][1]);
swap(&a[b[i][0]],&a[b[i][1]]);
}
for(int i = 1; i <= n; i++){
printf("%d\n\n",a[i]);
}
return 0;
}
这么写哪里有问题,为什么有的数据不能通过