解题思路:在向后移动的过程中,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.0分

1 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论