用C语言编写程序:随机产生10个数,输入1-10之间的正整数m,使数组元素右移m位,移出的元素再从左移入。例如,假设原来的数组元素依次为:1 2 3 4 5 6 7 8 9 10,假设m为2,则右移2位后的数组元素一次为:9 10 1 2 3 4 5 6 7 8
时间: 2024-10-18 17:11:30 浏览: 39
C语言 从键盘上输入的一组正整数(以输入0为结束),统计并计算出最小值数字的数 量在这组数字中的占比,显示最终结果
在C语言中,你可以通过以下步骤来实现这个功能:
1. 首先,你需要定义一个动态大小的数组,并生成10个随机数存入其中。
2. 接着,获取用户输入的正整数`m`。
3. 使用数组下标运算和循环结构实现数组的右移。这通常涉及到将数组最后一个元素移动到第一个位置,其余元素依次向后移动一位。
4. 最后,为了保持数组长度不变,如果`m`大于数组长度,只移动实际需要的位置即可。
以下是一个简单的示例程序,使用了C语言标准库的`srand`和`rand`函数来生成随机数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ARRAY_SIZE 10
void right_shift(int arr[], int m) {
if (m >= ARRAY_SIZE)
m = ARRAY_SIZE - 1;
int temp = arr[ARRAY_SIZE - 1; i > m; i--) {
arr[i] = arr[i - 1];
}
arr[m] = temp; // 将保存的值放回原位置
}
int main() {
srand(time(0)); // 初始化随机数种子
int arr[ARRAY_SIZE];
for (int i = 0; i < ARRAY_SIZE; i++) {
arr[i] = rand() % 11 + 1; // 生成1到10的随机数
printf("%d ", arr[i]);
}
printf("\n");
int m;
printf("请输入1-10之间的正整数m: ");
scanf("%d", &m);
right_shift(arr, m);
printf("右移%d位后的数组: \n", m);
for (int i = 0; i < ARRAY_SIZE; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
当你运行这个程序,会首先打印出初始的10个随机数,然后询问用户输入`m`,最后显示经过右移操作后的数组。
阅读全文