有 n ( n <=10)个整数,使前面各数顺序向后移 m ( m <= n )个位置,最后 m 个数变成最前面的 m 个数,如图所示。编写函数 shift ( a , n , m )实现上述功能,在主函数中输入 n 个整数并输出调整后的 n 个数。
时间: 2023-12-20 15:51:43 浏览: 69
代码如下:
```c
#include <stdio.h>
void shift(int a[], int n, int m) {
int temp[m];
for (int i = n - m; i < n; i++) {
temp[i - (n - m)] = a[i];
}
for (int i = n - m - 1; i >= 0; i--) {
a[i + m] = a[i];
}
for (int i = 0; i < m; i++) {
a[i] = temp[i];
}
}
int main() {
int n, m;
printf("请输入整数个数n和向后移动的位数m:");
scanf("%d%d", &n, &m);
int a[n];
printf("请输入%d个整数:", n);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
shift(a, n, m);
printf("调整后的%d个整数为:", n);
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
return 0;
}
```
测试样例:
输入:
```
请输入整数个数n和向后移动的位数m:7 3
请输入7个整数:1 2 3 4 5 6 7
```
输出:
```
调整后的7个整数为:5 6 7 1 2 3 4
```
阅读全文