描述 对输入的n个整数序列按从大到小的顺序输出。 输入 在第一行中输入一个整数n(0<n≤100);在第二行中输入n个整数,整数之间用空格隔开。 输出 在一行中输出从大到小的有序数列,整数之间用空格隔开。这个用c语言怎么做
时间: 2024-11-27 20:07:59 浏览: 0
设有n个正整数,将他们连接成一排,组成一个最大的多位整数
在C语言中,你可以通过以下步骤实现这个功能:
1. **读取输入**:
使用`scanf`函数读取用户输入的整数n和n个整数。例如:
```c
int n;
scanf("%d", &n);
int numbers[n];
for (int i = 0; i < n; i++) {
scanf("%d", &numbers[i]);
}
```
2. **排序数组**:
由于题目要求降序排列,可以使用“选择排序”或者“直接倒序”的简单方法,遍历数组并不断找到最大值放到末尾。这里是一个基本的冒泡排序示例(从大到小):
```c
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (numbers[j] < numbers[j + 1]) { // 交换元素位置
int temp = numbers[j];
numbers[j] = numbers[j + 1];
numbers[j + 1] = temp;
}
}
}
```
3. **输出结果**:
最后,使用`printf`函数将排序后的数组打印出来:
```c
printf("%d ", numbers[0]); // 输出第一个元素
for (int i = 1; i < n; i++) {
printf("%d ", numbers[i]);
}
printf("\n"); // 结束行
```
完整代码如下:
```c
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int numbers[n];
for (int i = 0; i < n; i++) {
scanf("%d", &numbers[i]);
}
// 冒泡排序,从大到小
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (numbers[j] < numbers[j + 1]) {
int temp = numbers[j];
numbers[j] = numbers[j + 1];
numbers[j + 1] = temp;
}
}
}
// 输出排序后的数组
printf("%d ", numbers[0]);
for (int i = 1; i < n; i++) {
printf("%d ", numbers[i]);
}
printf("\n");
return 0;
}
```
阅读全文