从键盘输入若干个整数,仅将其中的负数按降序排列输出,其余的数按原来的顺序输出。
时间: 2024-02-13 19:05:02 浏览: 30
可以使用数组来存储输入的整数,然后遍历数组,将负数存入一个新数组中,并对该数组进行排序,最后再遍历原数组,将非负数按原顺序输出,将负数按降序输出。下面是具体的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b) {
return *(int *)b - *(int *)a;
}
int main() {
int n, i, j, cnt = 0;
printf("请输入整数个数:");
scanf("%d", &n);
int arr[n], neg_cnt = 0, neg_arr[n];
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
if (arr[i] < 0) {
neg_arr[neg_cnt++] = arr[i];
}
}
qsort(neg_arr, neg_cnt, sizeof(int), cmp);
for (i = 0, j = 0; i < n; i++) {
if (arr[i] < 0) {
arr[i] = neg_arr[j++];
} else {
printf("%d ", arr[i]);
}
}
for (i = 0; i < neg_cnt; i++) {
printf("%d ", neg_arr[i]);
}
printf("\n");
return 0;
}
```
其中,`cmp` 函数是用于 `qsort` 排序的比较函数,按降序排列。`neg_arr` 数组用于存储负数,`neg_cnt` 记录负数的个数。遍历原数组时,如果当前元素为负数,则将其替换为负数数组 `neg_arr` 中的元素,否则直接输出该元素。最后,再遍历 `neg_arr` 数组,按降序输出其中的元素。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)