题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。
程序:
#include<stdio.h>
int change(int a[100], int n, int m);
int main()
{
int n, m, i, a[100];
printf("请输入数组长度n");
scanf("%d", &n);
printf("请输入%d个数", n);
for (i = 0; i<n; i++)
{
scanf("%d", &a[i]);
}
printf("需要移动的数的个数m:");
scanf("%d", &m);
change(a, n, m);
printf("新数列为:");
for (i = 0; i<n; i++)
printf("%d ", a[i]);
return 0;
}
int change(int a[100], int n, int m)
{
int b[100], i;
// 把最后m个存放在b
for (i = 0; i < m; i++){
b[i] = a[n - m + i];
}
// 把前面n-m个往后挪m个
for (i = n-1; i >=m; i--) {
a[i] = a[i-m];
}
// 把前m个从b放回a
for (i = 0; i < m; i++){
a[i] = b[i];
}
return 0;
}
输出样例: