帮我用C写一个输入任意个整数并将这任意个整数由大到小输出
时间: 2024-11-18 16:18:42 浏览: 17
在C语言中,你可以使用循环和数组来实现这个功能。下面是一个简单的示例程序,它会提示用户输入任意数量的整数,并将它们存储在一个动态大小的数组里,最后按照从大到小的顺序打印出来:
```c
#include <stdio.h>
#include <stdlib.h> // 包含malloc函数
#define MAX_NUMS 100 // 可能输入的最大整数数量
int *nums = NULL; // 动态分配的数组
void input_numbers(int n) {
nums = (int*)realloc(nums, n * sizeof(int)); // 扩展数组
for (int i = 0; i < n; i++) {
int num;
printf("请输入第%d个整数:", i + 1);
scanf("%d", &num);
nums[i] = num;
}
}
void sort_descending() {
int length = (nums != NULL) ? strlen(nums) : 0;
if (length > 0) {
qsort(nums, length, sizeof(int), compare_descending); // 使用快速排序算法降序排列
}
}
int compare_descending(const void* a, const void* b) {
return (*(int*)b - *(int*)a); // 比较函数,返回值为正表示b大于a
}
void print_numbers() {
if (nums != NULL) {
printf("按照从大到小的顺序,这些数字是:\n");
for (int i = 0; i < strlen(nums); i++) {
printf("%d ", nums[i]);
}
free(nums); // 释放内存
} else {
printf("未输入任何数字。\n");
}
}
int main() {
int n;
printf("请输入你想输入的整数的数量:");
scanf("%d", &n);
input_numbers(n);
sort_descending();
print_numbers();
return 0;
}
```
阅读全文