解题思路:
一个循环用于输入,一个循环用于输出
输出时对下标进行移动,公式是:(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 人评分
点我有惊喜!你懂得!浏览:1435 |
C语言训练-谁家孩子跑最慢* (C语言代码)浏览:1507 |
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:561 |
C语言训练-计算1~N之间所有奇数之和 (C语言代码)浏览:644 |
简单的a+b (C语言代码)浏览:335 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:691 |
三角形 (C语言代码)浏览:903 |
字符逆序 (C语言代码)浏览:455 |
蛇行矩阵 (C语言代码)浏览:498 |
C二级辅导-计负均正 (C语言代码)浏览:634 |