编写一个 C 程序,显示当前的日期和时间戳,要求本题程使用指针通过 scanf 给一个包含 5 个元素的一维数组赋值。然后按升序和降序排列该数组,并输出排序后的数组,
时间: 2024-12-18 19:37:03 浏览: 10
编写一个 C 程序,首先需要包含必要的头文件并声明一个包含 5 个整数的一维数组。这里假设我们叫它 `arr`。接着,我们将使用指针从用户输入读取数据。然后使用 `qsort` 函数对数组进行排序。以下是程序的基本步骤:
```c
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define ARRAY_SIZE 5
void sortArray(int arr[], int size, int order) {
// 升序排序
if (order == 0)
qsort(arr, size, sizeof(int), compare);
else { // 降序排序
qsort(arr, size, sizeof(int), compareDesc);
}
}
int compare(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
int compareDesc(const void* a, const void* b) {
return (*(int*)b - *(int*)a);
}
int main() {
int arr[ARRAY_SIZE];
int *ptr = arr; // 使用指针指向数组首元素
// 输入日期和时间戳
printf("请输入五个日期和时间戳(空格分隔):");
for (int i = 0; i < ARRAY_SIZE; i++) {
if (scanf("%d", ptr) != 1) { // 检查输入是否成功
perror("输入错误");
exit(1);
}
ptr++; // 指针向后移动一位
}
// 清理输入缓冲区
getchar();
// 排序并输出
sortArray(arr, ARRAY_SIZE, 0); // 升序
printf("\n升序排序结果:\n");
for (int i = 0; i < ARRAY_SIZE; i++) {
printf("%d ", arr[i]);
}
sortArray(arr, ARRAY_SIZE, 1); // 降序
printf("\n降序排序结果:\n");
for (int i = ARRAY_SIZE - 1; i >= 0; i--) {
printf("%d ", arr[i]);
}
return 0;
}
```
在这个程序中,`compare` 和 `compareDesc` 函数用于 `qsort` 对数组进行比较。用户输入的数据将按照指定的顺序(升序或降序)进行排列。
阅读全文