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