解题思路:在向后移动的过程中,1到n-m为一个整体,可以直接向后移动m,且n-m正好移动到末尾(原来的n处);而从n-m+1开始到n,则会移动到开头(n-m+1为第一个数),举个例子
输入:
10
1 2 3 4 5 6 7 8 9 10
2
此时有n=10个整数,向后移动的位置m=2;1后移2到3的位置,2后移2到4的位置......8后移2到了10的位置(正好到末尾);
而从9(n-m+1)到10(n)会移动到开头第一位、第二位......;
所以调整后的顺序应当从9(n-m+1)到10(n)重新编号为1、2,然后从1到8(1到n-m)继续编号为3、4、5......10;即从9到10(n-m+1到n)开始输出,再回到开头从1输出到8(n-m)即可
参考代码:
#include
int main()
{
int m,n,a[100];//用数组a来储存n个整数,便于顺序输出
scanf("%d", &n);
for (int i = 1;i <= n;i++)
{
scanf("%d", &a[i]);//从下标为1开始储存
}
scanf("%d", &m);
for (int i = n-m + 1;i <= n;i++)从n-m+1到n输出
{
printf("%d ", a[i]);
}
for (int i = 1;i <= n - m;i++)从1到n-m输出
{
printf("%d ", a[i]);
}
return 0;
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复