#include<stdio.h>
//前面n-m个数后移一格,后面m个数每次移动一个,共移动m次
int* conv(int* p, int n, int m)
{
int i, j, k, tmp;
/*后m个移到前m个*/
for (i = n - m; i < n; ++i)
{
k = i - n + m; //k取值0,1,2..m
tmp = *(p + i); //保存本次移动m个数中要前移的那个数
/*第n-m-1个开始n-m个数依次后退一格*/
for(j = i - 1 ; j > i-(n-m)-1 ; --j)
*(p + j + 1) = *(p + j);
*(p + k) = tmp ; //后m个数前移
}
return p;
}
int main()
{
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
int* p=conv(a, 10, 5);
for (int i = 0; i < 10; ++i)
printf("%d ", p[i]);
system("pause");
}
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。
最新推荐文章于 2023-10-04 06:00:00 发布