描述
读入n个整数到数组,将数组中的第m位插入到第k位,输出插入后数组的每一位
输入
输入两行,第一行:n(5=<n<=10)和与n对应个数的整数
第二行:m(1=<m<=n)、k (1=<k<=n)
输出
输出一行,输出每位数据以空格相隔
输入样例 1
5
12 34 56 50 104 2
输出样例 1
12 50 34 56 10
代码实现
#include <stdio.h>
int main() {
int n, m, k;
int i = 0;
int tmp = 0;
int arr[100] = { 0 };
scanf("%d", &n);
for (i = 1; i <= n; i++) {//遍历数组输入内容
scanf("%d", &arr[i]);
}
scanf("%d %d", &m, &k);//输入两个数分别代表插入的数和插入的位置
if (m > k) {//如果插入的数大于插入的位
tmp = arr[m];//将插入的数进行存储
while (m != k) {//当插入的数等于要插入的位置时停止循环
arr[m] = arr[m - 1];//将插入的数和插入的位之间的数字向前移一位
m--;
}
arr[k] = tmp;//将插入的数放到插入的位置
}
else if(m < k){//当插入的数小于要插入的位时
//只需将插入的数和插入的位之间的数向后移一位即可
tmp = arr[m];
while (m != k) {
arr[m] = arr[m + 1];
m++;
}
arr[k] = tmp;
}
for (i = 1; i <= n; i++) {//遍历数组输出内容
printf("%d ", arr[i]);
}
return 0;
}