C语言练习题-C语言练习题实例68
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。
程序分析:可以通过循环和临时变量来实现数组元素的滚动操作。
实例
#include <stdio.h>
void printArray(int array[], int n) {
int i;
for (i = 0; i < n; i++) {
printf("%d ", array[i]);
}
printf("\n");
}
void move(int array[], int n, int offset) {
int i;
for (i = 0; i < offset; i++) {
int temp = array[n - 1];
int j;
for (j = n - 1; j > 0; j--) {
array[j] = array[j - 1];
}
array[0] = temp;
}
}
int main() {
int arr[20];
int n, m;
int i;
printf("Total numbers: ");
scanf("%d", &n);
printf("Input %d numbers:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("Move offset: ");
scanf("%d", &m);
printf("Original array: ");
printArray(arr, n);
move(arr, n, m);
printf("After moving: ");
printArray(arr, n);
return 0;
}
以上代码执行输出结果为:
Total numbers: 6
Input 6 numbers:
1 2 3 4 5 6
Move offset: 2
Original array: 1 2 3 4 5 6
After moving: 5 6 1 2 3 4
在上述代码中,我们定义了两个函数,printArray
用于打印数组,move
用于实现数组元素的滚动操作。
在move
函数中,我们使用一个临时变量temp
来保存最后一个元素的值,然后通过循环将数组中的元素向右移动一位,最后将临时变量的值赋给第一个元素,实现了数组元素的滚动。
在main
函数中,我们输入了数组的大小和元素的值,然后输入滚动的偏移量,最后调用move
函数进行滚动操作,并打印滚动后的数组。
请注意,输入的偏移量必须小于等于数组的大小,否则结果可能会不正确。