1118: 习题8-4 移动数据
时间限制: 1 Sec 内存限制: 12 MB提交: 46 解决: 27
[ 提交][ 状态][ 讨论版]
题目描述
输入n个整数(不超过10),使前面各数顺序后移m个位置,最后m个数变成最前面的m个数(m<n),写一个函数实现上述功能。
在main函数中调用该函数,最后分行输出移动后的n个数,每个数占一行。
输入输出都在main函数中进行。
n和m以及n个数都需要从键盘上进行输入。
输入
输入分三行
第一行输入一个数字(假设该数字以n表示,不超过10),表示要输入的数据个数
第二行输入以空格分隔的n个数
第三行输入后移的位置(假设该数字以m表示,m<n)
输出
分行输出移动后的数据,每个数字单独占一行。
样例输入
10
1 2 3 4 5 6 7 8 9 0
3
样例输出
8
9
0
1
2
3
4
5
6
7
提示
C语言第四版教学实验-第八章 指针
调用函数,这都是基础的,就不多解释了
#include<stdio.h>
int main()
{
void move(int[20],int,int);
int a[20],n,m,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
move(a,n,m);
for(i=0;i<n;i++)
printf("%d\n",a[i]);
return 0;
}
void move(int array[20],int n,int m)
{
int *p,array_end;
array_end=*(array+n-1);
for(p=array+n-1;p>array;p--)
*p=*(p-1);
*array=array_end;
m--;
if(m>0)move(array,n,m);
}