输入格式:
每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。
输出格式:
在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。
输入样例:
6 2
1 2 3 4 5 6
输出样例:
5 6 1 2 3 4
解题思路:
- 读入整数序列及偏移量
- 定义数组,填充整数序列
- 定义偏移函数,每次将数组向后移动一位,并将数组末位移动至数组头
- 根据偏移量,循环调用若干次偏移函数
代码:
#include <stdio.h>
#include <math.h>
void moveOneOffset(int number, int *zero);
int main(int argc, char *argv) {
int number, offset;
int i;
scanf("%d %d", &number, &offset);
int array[100];
for( i = 0; i < number; i++) {
scanf("%d", &array[i]);
}
for( i = 0; i < offset; i++) {
moveOneOffset(number, array);
}
for( i = 0; i < number; i++) {
printf("%d", array[i]);
if (i < number - 1) {
printf(" ");
}
}
return 0;
}
void moveOneOffset(int number, int *zero) {
int temporary = 0;
temporary = *(zero + number - 1);
int i = number - 1;
while (i > 0) {
*(zero + i) = *(zero + i - 1);
i--;
}
*zero = temporary;
}