输入n(n<=100)个整数,按照绝对值从大到小排序后输出 输入格式: 输入数据的第一个数字为n,接着是n个整数。 输出格式: 按照绝对值从大到小排序后输出n个整数,两数之间空格隔开,最后一个数后面无空格。 输入样例: 3 3 -4 2 输出样例: -4 3 2 c语言
时间: 2023-06-09 10:08:23 浏览: 99
我们第一行包括两个整数n,k(1<=n<=100,k<=6e5),表示有n个数字,目标和为k 第二行输入n个整数(c1 c2
我理解了你的要求,以下是代码实现:
```c
#include<stdio.h>
#include<stdlib.h>
#define MAX 110
int cmp(const void *a, const void *b)
{
return abs(*(const int *)b) - abs(*(const int *)a);
}
int main()
{
int n, arr[MAX], i;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
qsort(arr, n, sizeof(int), cmp);
for (i = 0; i < n; i++)
{
printf("%d", arr[i]);
if (i != n - 1)
printf(" ");
}
return 0;
}
```
解释:
首先,我们首先定义了一个 `MAX` 常量,表示最多能输入的元素个数,这里定义为 110,是比输入的 n 的取值范围大一点的。
接着,我们定义了一个比较函数 `cmp`,该函数用于 `qsort` 排序,根据元素绝对值从大到小排序。
main 函数中,首先输入元素个数 `n`,接着输入 n 个整数,然后用 `qsort` 函数来排序,最后输出排好序的数组,注意最后一个数字后面不要有空格。
注意这里使用了 `const` 关键字,表示该变量是只读的,不能在函数中修改其值。
阅读全文