1.随机输入几个数,可选择从小到大或从大到小排序方法进行输出 要求: (1)可输入负数,小数且可正常排序 (2)输入 0 或 1选择排序方式 示例: 输入:5 1.1 -4 -1.2 0 排序(0为从小到大,1为从大到小):0 输出:-4 -1.2 0 1.1 5
时间: 2024-09-29 10:05:48 浏览: 35
python练习题 :用户任意输入10个整数到列表中,然后由大到小排列并输出。
要实现这个功能,你可以使用C语言的`stdio.h`库来进行输入和输出,以及`stdlib.h`库中的`qsort()`函数进行快速排序。首先,我们需要读取用户的输入,然后根据他们的选择调用不同的排序函数。以下是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// 用于比较浮点数的辅助函数
int compare_float(const void* a, const void* b) {
float fa = *(const float*)a;
float fb = *(const float*)b;
return (fa < fb) ? -1 : ((fa == fb) ? 0 : 1);
}
void sort_descending(float arr[], int n) {
qsort(arr, n, sizeof(float), compare_float);
}
void sort_ascending(float arr[], int n) {
// 默认排序为升序,除非用户选择了降序
if (n > 1 && arr[0] > arr[1]) {
sort_descending(arr, n);
}
}
int main() {
int choice;
printf("请输入数字的数量和排序方式(0为升序,1为降序),用空格分隔:");
scanf("%d %d", &choice, &choice); // 注意这里只读一个数字,因为第二个是排序方式
float numbers[100];
int num_elements;
printf("请输入数字(按逗号分隔):");
char input[100];
fgets(input, sizeof(input), stdin);
input[strlen(input)-1] = '\0'; // 去除换行符
// 将字符串转换成浮点数组
sscanf(input, "%f,", numbers, &num_elements);
if (choice == 1) { // 如果选择了降序
sort_descending(numbers, num_elements);
} else { // 其他情况默认为升序
sort_ascending(numbers, num_elements);
}
printf("排序后的结果:\n");
for (int i = 0; i < num_elements; i++) {
printf("%.2f ", numbers[i]);
}
printf("\n");
return 0;
}
```
运行这段代码后,按照指示输入数字和排序方式,程序将会对数字进行排序并输出。
阅读全文