输入一个整数n,表示n个数字(1<=n<=1e4),第二行输入n个整数a[i](-1e8<a[i]<1e8),第三行输入一个整数f(保证只输入0或1)0表示从小到大排序输出,1表示从大到小排序输出。
时间: 2024-10-20 22:08:55 浏览: 23
Computer-Architecture-LB2:Web Worker(HTML5)发现第一个素数大于自然数集
这是一个简单的题目,需要编写一个程序来读取用户输入的整数数组,然后按照指定的升序或降序对其进行排序。这里我们可以利用 C 语言的 `scanf` 函数来获取输入,`qsort` 函数来进行快速排序,最后再打印排序后的数组。下面是基本的解决方案:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义比较函数,用于 qsort 中
int compare(const void* a, const void* b) {
int ia = *(const int*)a, ib = *(const int*)b;
if (f == 0) return ia - ib; // 升序排序
else return ib - ia; // 降序排序
}
int main() {
int n, *arr, f;
scanf("%d", &n); // 获取数字的数量
arr = (int*)malloc(n * sizeof(int)); // 动态分配内存
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]); // 读取每个数字
}
scanf("%d", &f); // 读取排序方式(0 or 1)
// 对数组进行排序
qsort(arr, n, sizeof(int), compare);
// 输出排序后的数组
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
free(arr); // 释放动态分配的内存
return 0;
}
```
在这个程序中,我们首先读取数组的大小,然后分配足够的空间存储数组元素。接着,按顺序读取每个元素并存储。读取排序方式之后,调用 `qsort` 函数对数组进行排序,`compare` 函数根据 `f` 的值决定升序还是降序。最后,我们遍历并打印排序后的数组,别忘了释放动态分配的内存。
阅读全文