dotcpp-小鸟


私信TA

用户名:xiaoniao

访问量:38405

签 名:

等  级
排  名 232
经  验 6188
参赛次数 0
文章发表 28
年  龄 0
在职情况 学生
学  校 社会
专  业

  自我简介:

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


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


代码如下:


#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;
}


 

0.0分

0 人评分

  评论区

万一大于100呢。。。。
2019-12-01 15:37:06
大佬nb   此代码很适合小白  可以看得懂而且学得会!赞!!!
2019-10-17 22:51:28
您的函数呢,题目说明了,替换不能在主函数中运行。
2019-02-02 14:00:44
我觉得这样写比较简单,修改了下你的代码。
#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; 
}
2018-02-28 23:16:12
写得好!!!
2017-08-04 15:04:06
  • «
  • 1
  • »