C语言数组题目描述:输入n个数,要求程序按照输入时的逆序把这n个数打印出来,已知整数不超过100个。 样例输入: 5 1 3 9 2 4 样例输出: 4 2 9 3 1
时间: 2024-12-28 12:35:02 浏览: 10
C语言中,你可以通过使用一个临时变量和两个指针,一个指向数组的开头,另一个指向结尾,然后交换这两个位置上的元素,逐步向中间移动,直到两个指针相遇。这种方法被称为双指针法,也叫归并排序的思想,但是这里是简单的逆转操作,不需要复杂的排序算法。
下面是一个简单的示例代码来解决这个问题:
```c
#include <stdio.h>
void reverse_array(int arr[], int n) {
int start = 0;
int end = n - 1;
while (start < end) {
// 交换 start 和 end 位置的元素
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
// 移动指针
start++;
end--;
}
// 打印反转后的数组
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
}
int main() {
int n, *arr;
printf("Enter the number of elements: ");
scanf("%d", &n);
arr = (int*)malloc(n * sizeof(int)); // 动态分配内存
if (arr == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
printf("Enter %d numbers: ", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
reverse_array(arr, n);
free(arr); // 释放动态分配的内存
return 0;
}
```
运行此程序,样例输入 "5 1 3 9 2 4" 将得到预期的输出 "4 2 9 3 1"。别忘了在程序结束时释放动态分配的内存。
阅读全文