题目描述
有n个数组成一组,现在要交换这组数中任意指定的两段。(两段不重合,且这两段的数字个数一样)
输入格式
共四行
第一行 一个整数n 第二行 一行n个数,数与数之间空格隔开 第三行 空格隔开的两个数(表示要交换的其中一段起始和终止位置) 第四行 空格隔开的两个数(表示要交换的另一段起始和终止位置)
输出格式
一行 交换后的n个数,数与数之间空格隔开
题目描述
有n个数组成一组,现在要交换这组数中任意指定的两段。(两段不重合,且这两段的数字个数一样)
输入格式
共四行
第一行 一个整数n 第二行 一行n个数,数与数之间空格隔开 第三行 空格隔开的两个数(表示要交换的其中一段起始和终止位置) 第四行 空格隔开的两个数(表示要交换的另一段起始和终止位置)
输出格式
一行 交换后的n个数,数与数之间空格隔开
运行结果:
C代码:
#include<stdio.h>
int main(void)
{
int a[100001], n, i, j;
int s1, t1, s2, t2; //记录两个区间
int tmp;//临时变量
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
//读取区间1
scanf("%d %d", &s1, &t1);
//读取区间2
scanf("%d %d", &s2, &t2);
for (i = s1,j=s2; i <= t1; i++,j++)
{
tmp = a[i-1];
a[i - 1] = a[j - 1];
a[j - 1] = tmp;
}
//输出
for (i = 0; i < n; i++)
{
if (i < n - 1)
printf("%d ", a[i]);
else
printf("%d", a[i]);
}
return 0;
}
C++代码:
#include <iostream>
using namespace std;
int main(void)
{
int a[100001], n, i, j;
int s1, t1, s2, t2; //记录两个区间
int tmp;//临时变量
cin >> n;
for (i = 0; i < n; i++)
cin >> a[i];
//读取区间1
cin >> s1 >> t1;
//读取区间2
cin >> s2 >> t2;
for (i = s1,j=s2; i <= t1; i++,j++)
{
tmp = a[i-1];
a[i - 1] = a[j - 1];
a[j - 1] = tmp;
}
//输出
for (i = 0; i < n; i++)
{
if (i < n - 1)
cout << a[i] << " ";
else
cout << a[i];
}
return 0;
}