萌萌媛の【C语言指针】有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数

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


#include<stdio.h>
#include <stdlib.h>

 int main()
{
	void sort(int p[],int n,int m);
    int *p;
    int n,m,i;
    printf("Give n and m:");
    scanf("%d%d",&n,&m);
    p=(int *)malloc(n*sizeof(int));//申请动态存储空间
    for(i=0;i<=n-1;i++)
        scanf("%d",p+i);
    sort(p,n,m);
    printf("After sorted:");
    for(i=0;i<=n-1;i++)
        printf("%-4d",p[i]);
    return 0;
}

void sort(int p[],int n,int m)  //将后面m个整数放到前面,前面n-m个数后移
{
    int i,j,number;
    for(i=1;i<=m;i++){
        number=p[n-1];
        for(j=n-2;j>=0;j--)
            p[j+1]=p[j];
        p[0]=number;
 
    }
}

非技术の思索:这个题还想了一会儿...因为数组定义的时候必须确定大小,以往每次都直接定义一个很大很大的数组。但是其实在想怎么真正意义的实现。百度了半天发现这位兄台的代码(我忘记是谁了...哭),指针的好处可能就在这里。好吧下次我一定能自己把这个代码写出来的。

猜你喜欢

转载自blog.csdn.net/qq_42050720/article/details/81407449