解题思路:

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 条评论

昔痕 4年前 回复TA
#include <stdio.h>

int main()
  {
  	int a[1000];
  	int b[1000];
  	int n,m;
  	scanf("%d",&n);
  	int i,j;
  	for(i=0;i<n;i++)
  	  scanf("%d",&a[i]);
  	scanf("%d",&m);
  	for(i=n-m,j=0;i<n;i++,j++)
  	  	b[j]=a[i];
	for(i=0;i<n-m;i++,j++)
	  	b[j]=a[i];
	for(i=0;i<n;i++)
	  printf("%d ",b[i]);
	  
	return 0;
  	
   }
踏上星辰 4年前 回复TA
#include <stdio.h>
int main(void)
{
	int n;
	int b[1024] = { 0 };
	int a=0;
	int m=0;
	scanf_s("%d", &n);
	for (int i = 0; i < n; i++)
	{	
		scanf_s("%d", &a);
		b[i] = a;
	}
	scanf_s("%d",& m);
	for (int i = 0; i < m; i++)
		printf("%d ", b[n + i - m]);
	for (int i = 0; i < 10 - m; i++)
		printf("%d ", b[i]);
	return 0;
}
踏上星辰 4年前 回复TA
@葡萄 #include <stdio.h> int main(void) { 	int n; 	int b[1024] = { 0 }; 	int a=0; 	int m=0; 	scanf_s("%d", &n); 	for (int i = 0; i < n; i++) 	{	 		scanf_s("%d", &a); 		b[i] = a; 	} 	scanf_s("%d",& m); 	for (int i = 0; i < m; i++) 		printf("%d ", b[n + i - m]); 	for (int i = 0; i < 10 - m; i++) 		printf("%d ", b[i]); 	return 0; }
葡萄 4年前 回复TA
@葡萄 没写函数,不过思路是这样的
葡萄 4年前 回复TA
#include <stdio.h>

int main()
{
	int i, n, m;
	scanf("%d", &n);
	int a[n];
	for (i = 0; i < n; i++)
	{
		scanf("%d",&a[i]);
	}
	scanf("%d", &m);
	for (i = n - m; i < n; i++)
	{
		printf("%d ", a[i]);
	}
	for (i = 0; i < n - m; i++)
	{
		printf("%d ", a[i]);
	}
	return 0;
}
这样也可以吧?
机器不学习 4年前 回复TA
这个方法不错
李一鸣 4年前 回复TA
#include<iostream>
using namespace std;
int main()
{
    int a[100],b[100];
    int m,n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    cin>>m;
    for(int i=1;i<=m;i--){
        b[i]=a[n-m+1];
        n++;
    }
    for(int i=n;i>=m;i--){
        a[i]=a[i-m];
    }
    for(int i=1;i<=m;i++){
        a[i]=b[i];
    }
    for(int i=1;i<=n;i++){
        cout<<a[i]<<" ";
    }
    return 0;
}为什么多了两位
谋刘 5年前 回复TA
@qweuihqqi 不一定是10个数
杨少 5年前 回复TA
为啥我编译运行是错的呀
月下萤火 5年前 回复TA
#include<stdio.h>
#include<string.h>
#include<math.h>

int main() {

	int n,a[n],m,t;
	scanf("%d",&n);
	
	for(int i=0; i<n; i++) {
		scanf("%d",&a[i]);
	}

	scanf("%d",&m);

	for(int i=0; i<m; i++) {
		t=a[n-1];
		for(int j=n-1; j>0; j--) {
			a[j]=a[j-1];
		}
		a[0]=t;
	}

	for(int i=0; i<n; i++) {
		printf("%d ",a[i]);
	}

	return 0;
}
编译器编译没问题但提交就运行错误,有没有大佬看下哪里数组越界还是什么原因