输入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]	     
   }
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。