原题链接:[编程入门]自定义函数之数字后移
解题思路:通过两个数组来完成,原数组输入原数字,并将要移动的数字装入另一个数组中,原数组中的剩下的数字后移,然后将另一个数组中的数字赋给原数组即可。
涉及知识点:数组中下标的使用;
代码如下:
#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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
我觉得这样写比较简单,修改了下你的代码。 #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; }