解题思路:

一个循环用于输入,一个循环用于输出

输出时对下标进行移动,公式是:(i - m + n) % n

令原本的下标 i 减去 m ,可能会小于0,所以加上 n ,但别的下标可能会大于 n ,所以再对 n 取余

缺点就是并没有对原数据进行处理

我本想在输入时对下标移动,将数组储存到移动后的下标内

可是 m 是在最后才输入的,输入数字时并不知道要移动几位,只好在输出时下手,算是取巧吧


参考代码:

#include <stdio.h>

int main()
{
    int n, m;                           //定义m和n
    scanf("%d", &n);                    //输入n
    int a[n];
    for (int i = 0; i < n; i++)         //循环输入数字
    {
        scanf("%d", &a[i]);
    }
    scanf("%d", &m);                    //输入m
    for (int i = 0; i < n; i++)         //循环输出
    {
        printf("%d ", a[(i - m + n) % n]);      //输出的下标为(i-m+n)%n
    }
    return 0;
}


点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论