解题思路:

1:把a[] 中要转移的m个数存入另一个数组 b[];

2:a[] 从末尾依次等于前一个数,移动N-m次;

3:把b[]中的数,放到a[]的前面;
4:输出a[];

参考代码:

#include <stdio.h>
#include <malloc.h>
int main()
{
    int    *a    = NULL;
    int    *b    = NULL;
    int    N;
    scanf( "%d", &N );   //输入N

    a = (int *) malloc( N * sizeof(int) );  //开辟空间存N个数

    for ( int i = 0; i < N; i++ )   //输入N个数
        scanf( "%d", &a[i] );

    int m;
    scanf( "%d", &m );      //输入转移个数m
    b = (int *) malloc( m * sizeof(int) );   //开辟空间存转移数

    for ( int i = 0; i < m; i++ )   //把a[] 中要转移的m个数存入另一个数组 b[];
    {
        b[i] = a[N - m]; N++;
    }

    for ( int j = 9; j >= m; j-- )  //a[] 从末尾依次等于前一个数,移动N-m次;
        a[j] = a[j - m];

    for ( int i = 0; i < m; i++ )  //把b[]中的数,放到a[]的前面;
        a[i] = b[i];

    for ( int i = 0; i < 10; i++ )  //输出a[];
        printf( "%d ", a[i] );
        
        return (0);
}

别忘点赞哦-.-

点赞(37)
 

0.0分

34 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 38 条评论

一起写Bug 5年前 回复TA
@qweuihqqi 胡写
给我五美元 5年前 回复TA
@小雨 error C2133: 'a' : unknown size (Vc6.0下编译的提示信息)
给我五美元 5年前 回复TA
@小雨 有个问题是int a[n],n不知道大小,能编译通过吗
给我五美元 5年前 回复TA
@小雨 这个算法总共交换了n次数组元素,只使用了一个用来交换的临时单元。A的逆,B的逆,在求AB整体的逆
给我五美元 5年前 回复TA
@豆豆哦 算法思想:本题解通过一个大数组,将原数组的元素统统想后移动m个单位(由于数组空间较大),然后在将那个超出原来范围的m个元素,赋给前面的那m个空间
qweuihqqi 5年前 回复TA
#include<stdio.h>
void move(int a[],int n)
{
	int m;
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
	}
	scanf("%d", &m);
	for (int i = 0; i <= 9; i++)
	{
		int d = i;
		int c = i+1;
		if (i + m >= 10)
		{
			d -= 10;
		}
		a[d+m] = c;
	}
	for (int i = 0; i < n; i++)
	{
		printf("%d ", a[i]);
	}
}
int main()
{
	int n;
	scanf("%d", &n);
	int a[50];
	move(a,n);
}
小雨 5年前 回复TA
#include<stdio.h>

void reverse(int a[],int from,int to)
{
    int i,t;
    for(i=0;i<(to-from+1)/2;i++)
    {
        t=a[from+i];
        a[from+i]=a[to-i];
        a[to-i]=t;
    }
}
int main()
{
    int n,m,i;
    scanf("%d",&n);
    int a[n];
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    scanf("%d",&m);
    reverse(a,0,n-m-1);
    reverse(a,n-m,n-1);
    reverse(a,0,n-1);
    for(i=0;i<n;i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
}
小白到大神 5年前 回复TA
#include <stdio.h>

void fun(int a[], int b[], int n, int key)
{
    int i;

    for (i = 0; i < key; i++)
    {
        b[i] = a[n - key + i];
    }

    for (i = key; i < n; i++)
    {
        b[i] = a[i - key];
    }
}

int main(void)
{
    int i, n, key;
    int a[100], b[100];

    scanf("%d", &n);

    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);

    scanf("%d", &key);

    fun(a,b,n,key);

    for (i = 0; i < n; i++)
        printf("%d ", b[i]);


    return 0;
}
沐风成殇 5年前 回复TA
#include <stdio.h>


int main()
{
    int n,m;
    scanf("%d",&n);
    int a[n];
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    scanf("%d",&m);
    for(int i=0;i<n;i++)
    {
        if(i<m){
            printf("%d ",a[n-(m-i)]);
        }else{
            printf("%d ",a[i-m]);
        }
    }

    return 0;
}
奔跑吧C 5年前 回复TA
#include<stdio.h>
#include<stdlib.h>
void Tiao_Zheng(int *ShuZu, int Wei, int YiWei);
int main()
{
	int *ShuZu, Wei, YiWei;
	scanf("%d", &Wei);
	ShuZu = (int *)calloc(Wei,sizeof(int));
	for (int i = 0;i < Wei;i++)
	{
		scanf("%d", &ShuZu[i]);
	}
	scanf("%d", &YiWei);
	Tiao_Zheng(ShuZu, Wei, YiWei);
}
void Tiao_Zheng(int *ShuZu, int Wei, int YiWei)
{
	for (int i = Wei - YiWei;i < Wei;i++)
	{
		printf("%d ", *(ShuZu + i));
	}
	for (int i = 0;i < Wei - YiWei;i++)
	{
		printf("%d ", *(ShuZu + i));
	}
}