试题描述
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见下图。请编写move函数实现以上功能,请使用指针实现。
在主函数中输入n个整数存入数组,调用move函数,最后再输出调整后的n个数。
注意:不要改变函数名称,注意大小写敏感。
输入
输入包含三行:
第一行是正整数n(0 < n <= 100)。
第二行是n个整数,相邻两项之间用一个空格隔开。
第三行是非负整数m,代表向后移几个位置,已知0 < m <= n。
输出
输出一行,为调整后的n个数,相邻两项之间用一个空格隔开。
输入示例
8
12 43 65 67 8 2 7 11
4
输出示例
8 2 7 11 12 43 65 67
数据范围
输入输出均为int范围的整数
#include <stdio.h>
int main(){
int i,n,a[100],m;
scanf("%d",&n);
for(i=0;i<n;i++) scanf("%d",&a[i]);
scanf("%d",&m);
if (n!=m) move(a,n,m);
for (i=0;i<n;i++) printf("%d ",a[i]);
return 0;
}
int move(int *arr,int n,int m){
int i,*p,a,j;
p=arr;
for (j=0;j<n-m;j++){
a=arr[0];
for(i=0;i<n;i++)
*(p+i)=*(p+i+1);
arr[n-1]=a;
}
}
(学习尚少,仅供参考,若有不足,欢迎一起探讨。)