CodeRookie


私信TA

用户名:Shmily124

访问量:133451

签 名:

清风前烹茶对弈,明月下把酒言欢

等  级
排  名 14
经  验 22966
参赛次数 7
文章发表 39
年  龄 0
在职情况 学生
学  校 ZUA
专  业 计科

  自我简介:

悄悄地秃头,然后惊艳所有人?

解题思路:

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

输出时对下标进行移动,公式是:(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 人评分

  评论区

  • «
  • »