用C语言写一个程序,为输入正整数n从大到小,从小到大排列
时间: 2025-06-26 14:01:25 浏览: 6
要用C语言编写一个程序,完成对输入正整数`n`以及其对应数组元素的排序功能(包括从大到小和从小到大的排列),可以按照下面的方式实现:
首先,您需要明确的是如何接收用户的数据、存储数据,并且选择合适的算法来进行排序。这里我们采用简单的冒泡排序作为示例。
### 示例代码
```c
#include <stdio.h>
// 冒泡排序函数(升序)
void sortAscending(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) { // 如果前一项大于后一项,则交换它们的位置
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 将升序转换成降序
void sortDescending(int arr[], int n){
for(int i=0;i<n/2;i++){
int temp = arr[i];
arr[i] = arr[n-i-1];
arr[n-i-1]=temp;
}
}
int main() {
int n;
printf("请输入数字个数n:");
scanf("%d", &n);
int numbers[n];
printf("请依次输入%d个正整数:\n", n);
for (int i = 0; i < n; ++i) {
scanf("%d", &numbers[i]);
}
// 打印原数组
printf("原始顺序: ");
for (int i = 0; i < n; ++i) {
printf("%d ", numbers[i]);
}
printf("\n");
// 升序排序并打印结果
sortAscending(numbers, n);
printf("从小到大排序后的序列: ");
for (int i = 0; i < n; ++i) {
printf("%d ", numbers[i]);
}
printf("\n");
// 转换为降序再打印结果
sortDescending(numbers,n);
printf("从大到小排序后的序列: ");
for (int i = 0; i < n; ++i) {
printf("%d ", numbers[i]);
}
printf("\n");
return 0;
}
```
此段代码先让用户输入一系列正整数存入数组之中,然后通过两次调用不同的排序过程分别展示出从小至大及由高往低两个方向的结果。
### 解释:
1. **sortAscending** 函数实现了基本的冒泡排序用于生成递增顺序列表。
2. **sortDescending** 则简单地反转了已经排好序的列表得到递减版本。
3. 用户交互部分负责获取必要的输入信息并且显示最终结果。
#### 注意事项:
- 确保所有输入都是有效的正整数值。
- 对于较大的集合考虑更高效的排序技术如快速排序等替代当前使用的较为基础的冒泡法。
阅读全文
相关推荐


















