1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #include <stdio.h>
- #include <stdlib.h> // 为了使用 qsort 函数
- #include <math.h> // 为了使用 fabs 函数
- // 比较函数:按照绝对值从大到小排序
- int compare(const void *a, const void *b) {
- float abs_a = fabs(*(const float *)a);
- float abs_b = fabs(*(const float *)b);
- if (abs_a < abs_b) return 1; // 注意这里是从大到小排序
- if (abs_a > abs_b) return -1;
- return 0;
- }
- int main() {
- float *nums;
- int n = 10; // 输入的数目为 10
- // 动态分配内存来存储输入的浮点数
- nums = (float *)malloc(n * sizeof(float));
- if (nums == NULL) {
- fprintf(stderr, "Memory allocation failed.\n");
- return 1;
- }
- // 输入10个浮点数
- int i;
- for (i = 0; i < n; ++i) {
- scanf("%f", &nums[i]);
- }
- // 使用 qsort 函数对数组进行排序,使用绝对值从大到小排序
- qsort(nums, n, sizeof(float), compare);
- // 输出排序后的结果,每个数保留小数点后两位有效数字
- for (i = 0; i < n; ++i) {
- printf("%.2f", nums[i]);
- if (i < n - 1) {
- printf(",");
- }
- }
- printf("\n");
- // 释放动态分配的内存
- free(nums);
- return 0;
- }
|