c语言编写程序,将一个数列实现循环右移 -位 例如: 输入数列的长度:6 输入原始数列:12345 循环右移一位后变为:6 12345 数列输入、数列输出、数列右移分别用三个子函数实现。(数列的个数由用 户从键盘输入)
时间: 2023-10-18 20:04:20 浏览: 43
好的,这是一个很好的问题。以下是 C 语言的程序实现,其中包含三个子函数分别用于数列输入、数列输出和数列右移。
```c
#include <stdio.h>
// num: 数列长度
void input(int num, int arr[]) {
printf("请输入 %d 个整数:\n", num);
for (int i = 0; i < num; i++) {
scanf("%d", &arr[i]);
}
}
// num: 数列长度
void output(int num, int arr[]) {
printf("输出数列:\n");
for (int i = 0; i < num; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
// num: 数列长度, n: 右移位数
void shift_right(int num, int arr[], int n) {
for (int i = 0; i < n; i++) { // 右移 n 次
int temp = arr[num-1]; // 取出最后一个元素
for (int j = num-1; j > 0; j--) { // 从后往前移动
arr[j] = arr[j-1];
}
arr[0] = temp; // 最后将取出的元素放到首位
}
}
int main() {
int num, n;
printf("请输入数列的长度:");
scanf("%d", &num);
int arr[num];
input(num, arr);
printf("请输入右移的位数:");
scanf("%d", &n);
shift_right(num, arr, n);
output(num, arr);
return 0;
}
```
以上是程序的实现,其中 `input` 函数用于输入数列,`output` 函数用于输出数列,`shift_right` 函数用于实现数列的右移,程序主函数中先输入数列和右移的位数,再调用 `shift_right` 函数实现数列的右移,最后输出右移后的数列。