解题思路:
一个循环用于输入,一个循环用于输出
输出时对下标进行移动,公式是:(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 人评分