输入n个数和输出调整后的n个数—C语言版
时间: 1ms 内存:128M
描述:
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。
输入:
输入数据的个数n n个整数移动的位置m
输出:
移动后的n个数
示例输入:
10
1 2 3 4 5 6 7 8 9 10
2
示例输出:
9 10 1 2 3 4 5 6 7 8
提示:
参考答案(内存最优[1092]):
#include<stdio.h>
void mv(int a[],int n,int m);
int main()
{
int a[80];
int m,i,n;
scanf("%d",&n);
for(i=0; i<n; i++)
scanf("%d",&a[i]);
scanf("%d",&m);
mv(a,n,m);
for(i=0; i<n; i++)
printf("%d ",a[i]);
return 0;
}
void mv(int *a,int n,int m)//将数组中前n个元素中的后m个移动到数组的开头其它元素往后移动
{
int t,i,j;
for(i=0;i<m;i++)
{
t=a[n-1]; //t来存放当前数组中的第n个元素
for(j=n-1;j>=1;j--) //将原先数组元素a[0]~a[n-2]依次移动到a[1]~a[n-1]
{
a[j]=a[j-1];
}
a[0]=t; //a[0]放a[n-1]
}
}
参考答案(时间最优[0]):
#include<stdio.h>
void mv(int a[],int n,int m);
int main()
{
int a[80];
int m,i,n;
scanf("%d",&n);
for(i=0; i<n; i++)
scanf("%d",&a[i]);
scanf("%d",&m);
mv(a,n,m);
for(i=0; i<n; i++)
printf("%d ",a[i]);
return 0;
}
void mv(int *a,int n,int m)//将数组中前n个元素中的后m个移动到数组的开头其它元素往后移动
{
int t,i,j;
for(i=0;i<m;i++)
{
t=a[n-1]; //t来存放当前数组中的第n个元素
for(j=n-1;j>=1;j--) //将原先数组元素a[0]~a[n-2]依次移动到a[1]~a[n-1]
{
a[j]=a[j-1];
}
a[0]=t; //a[0]放a[n-1]
}
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。