有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。

    xiaoxiao2023-11-13  223

    #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"); }
    最新回复(0)