数组逆序数排列c语言
时间: 2023-10-17 13:06:50 浏览: 127
可以使用以下的C语言代码来实现数组逆序排列:
```c
#include <stdio.h>
#define MAX_SIZE 20
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int arr[MAX_SIZE];
int num, i = 0;
// 读入一组整数并保存在数组中
while(scanf("%d", &num), num != 0) {
arr[i++] = num;
}
// 逆序排列数组
for(int j = 0; j < i/2; j++) {
swap(&arr[j], &arr[i-j-1]);
}
// 打印逆序排列后的数组
for(int k = 0; k < i; k++) {
printf("%d ", arr[k]);
}
return 0;
}
```
相关问题
用指针数组逆序排列c语言
使用指针数组逆序排列C语言可以通过以下步骤实现:
1. 声明一个指针数组,并初始化数组元素为需要逆序排列的数据。
2. 使用两个指针变量,一个指向数组的第一个元素,另一个指向数组的最后一个元素。
3. 使用循环交换指针所指向的元素,并将两个指针向中间移动,直到它们相遇为止。
4. 循环结束后,指针数组中的元素就被逆序排列了。
下面是一个示例代码:
```c
#include <stdio.h>
void reverseArray(int* arr[], int size) {
int* start = arr[0];
int* end = arr[size - 1];
while (start < end) {
int* temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
int num1 = 1, num2 = 2, num3 = 3;
int* arr[] = { &num1, &num2, &num3 };
int size = sizeof(arr) / sizeof(arr[0]);
printf("原始数组:");
for (int i = 0; i < size; i++) {
printf("%d ", *arr[i]);
}
reverseArray(arr, size);
printf("\n逆序排列后的数组:");
for (int i = 0; i < size; i++) {
printf("%d ", *arr[i]);
}
return 0;
}
```
运行以上代码,输出结果为:
```
原始数组:1 2 3
逆序排列后的数组:3 2 1
```
c语言将数组逆序排列
在C语言中,将数组逆序排列可以采用多种方法,最常见的是通过两层循环交换数组元素的位置。这里提供一种基本的线性时间复杂度O(n)的算法:
```c
#include <stdio.h>
// 函数用于数组逆序排列
void reverseArray(int arr[], int size) {
int start = 0;
int end = size - 1;
while (start < end) {
// 交换 start 和 end 位置的元素
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
// 移动指针到下一个元素
start++;
end--;
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
reverseArray(arr, size);
printf("\nReversed array: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
当你运行这个程序,它会先打印原始数组,然后逆序数组并再次打印。
阅读全文