解题思路:通过两个数组来完成,原数组输入原数字,并将要移动的数字装入另一个数组中,原数组中的剩下的数字后移,然后将另一个数组中的数字赋给原数组即可。


涉及知识点:数组中下标的使用;


代码如下:


#include<stdio.h>
#define  z 100
int main()
{
	int a[z];
	int b[z];
	int i,m,n;
    
	scanf("%d",&n); //输入要输入的个数;
	for(i=0;i<n;i++)//通过数组,循环输入n个数;注意:n一定要小于z。z表示可以输入100个数字。
	{
		scanf("%d",&a[i]);
	}
	scanf("%d",&m);//输入要移动的个数;注意:(n-m)实际上就是数组中要移动到最前面的那个数字(也就是要移动到a[0]的那个数字)。

	for(i=0;i<m;i++)//用另一个数组先将原数组中要向前移动的m个数字装起来。
	{
		b[i]=a[n-m+i];//n-m是原数组中第一个要装入到另一个数组中的下标,加i的意思是要装入m个该数组中的数字和它的下标(i<m).
	}

	for(i=n-1;i>=m;i--)//将该数组中剩下的数字,向后移动位置。n-1,是最后一位数的下标。i>=m是后移多少位的意思。i--是后移。
	{
		a[i]=a[i-m];//比如输入了8个数,要移动3个数,那么i=8-1,等于7,a[7]=a[7-3],这样遍历个数后移。
	}

	for(i=0;i<m;i++)//将另一个数组中的数(要移动的m个数),放回原数组中。
	{
		a[i]=b[i];
	}


	for(i=0;i<n;i++)//遍历输出。
	{
		printf("%d ",a[i]);
	}printf("\n");

	return 0;
}


点赞(19)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 6 条评论

999999 5年前 回复TA
万一大于100呢。。。。
LilyGirl 5年前 回复TA
大佬nb   此代码很适合小白  可以看得懂而且学得会!赞!!!
柏木英理 5年前 回复TA
您的函数呢,题目说明了,替换不能在主函数中运行。
Bridge 6年前 回复TA
@Bridge 楼主写的也很好,很详细,受益了,抱拳了老铁。
Bridge 6年前 回复TA
我觉得这样写比较简单,修改了下你的代码。
#include <stdio.h>
int main()
{
	int n,a[100],b[100],i,m;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	scanf("%d",&m);
	for(i=0;i<m;i++)
	{
		b[i]=a[n-m+i];
		printf("%d ",b[i]);
	}
	for(i=0;i<n-m;i++)
	{
		printf("%d ",a[i]);
	}
	return 0; 
}
帝国时代 7年前 回复TA
写得好!!!