在C语言中,如何实现输入一个包含10个元素的一维数组,然后从第m个元素开始的所有元素逆序存储,并输出逆序后的整个数组?
时间: 2024-12-19 21:21:09 浏览: 6
C语言程序设计-一维数组的初始化.pptx
5星 · 资源好评率100%
在C语言中,你可以通过以下步骤实现这一功能:
1. 首先,声明并初始化一个长度为10的一维整型数组。
2. 接着,获取用户输入的起始位置m。
3. 然后,遍历数组,从起始位置m到数组结束,将元素复制到另一个临时数组,但复制的顺序相反。
4. 最后,将原始数组的前m-1个元素与逆序后的部分进行交换。
下面是一个简单的示例代码实现:
```c
#include <stdio.h>
#define ARRAY_SIZE 10
void reverse_array(int arr[], int m) {
int temp[ARRAY_SIZE]; // 用于存放倒序的部分
int i, j;
for (i = 0, j = m - 1; i < j; ++i, --j) {
temp[i] = arr[j];
temp[j] = arr[i];
}
// 将逆序部分复制回原数组
for (i = 0, j = m - 1; i < ARRAY_SIZE && j >= 0; ++i, --j) {
arr[i] = temp[i];
}
}
int main() {
int arr[ARRAY_SIZE], m;
printf("Enter the array elements:\n");
for (int i = 0; i < ARRAY_SIZE; ++i)
scanf("%d", &arr[i]);
printf("Enter the start position (m): ");
scanf("%d", &m);
if (m > 0 && m <= ARRAY_SIZE) { // 检查起始位置是否合法
reverse_array(arr, m);
printf("Reversed array from index %d to end: ", m);
for (int i = 0; i < ARRAY_SIZE; ++i)
printf("%d ", arr[i]);
printf("\n");
} else {
printf("Invalid start position!\n");
}
return 0;
}
```
阅读全文