第1关:排序问题 100 学习内容 记录 评论1428 任务描述 相关知识(略) 编程要求 测试说明 任务描述 本关任务:将十个数进行从大到小的顺序进行排列。 相关知识(略) 编程要求 根据提示,在右侧编辑器Begin-End处补充代码。 输入 输入十个整数。 输出 以从大到小的顺序输出这个十个数。 测试说明 样例输入: 1 2 3 4 5 6 7 8 9 10 样例输出: 10 9 8 7 6 5 4 3 2 1 开始你的任务吧,祝你成功!
时间: 2025-06-26 16:11:58 浏览: 10
### 实现十个整数按降序排列的代码
以下是通过 **选择排序算法** 和 **冒泡排序算法** 来实现对十个整数按降序排列的两种方法:
#### 方法一:选择排序
```c
#include<stdio.h>
#define N 10
int main() {
int a[N], i, j, k;
// 输入十个整数
printf("请输入十个整数:");
for (i = 0; i < N; i++) {
scanf("%d", &a[i]);
}
// 使用选择排序进行降序排列
for (i = 0; i < N - 1; i++) {
for (j = i + 1; j < N; j++) {
if (a[i] < a[j]) { // 如果前一个数小于后一个数,则交换位置
k = a[i];
a[i] = a[j];
a[j] = k;
}
}
}
// 输出排序后的结果
printf("排序后的结果(从大到小):");
for (i = 0; i < N; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
此代码实现了输入十个整数并将它们按照降序排列的功能。它基于选择排序的思想,在每次迭代中找到当前未排序部分的最大值并与首位元素交换[^3]。
---
#### 方法二:冒泡排序
```c
#include<stdio.h>
#define N 10
int main() {
int a[N], i, j, temp;
// 输入十个整数
printf("请输入十个整数:");
for (i = 0; i < N; i++) {
scanf("%d", &a[i]);
}
// 使用冒泡排序进行降序排列
for (i = 0; i < N - 1; i++) {
for (j = 0; j < N - 1 - i; j++) {
if (a[j] < a[j + 1]) { // 如果前面的数小于后面的数,则交换位置
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
// 输出排序后的结果
printf("排序后的结果(从大到小):");
for (i = 0; i < N; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
这段代码同样完成了将十个整数按降序排列的任务,采用的是经典的冒泡排序逻辑。在每一趟遍历中,较大的数值逐渐向数组前端移动[^2]。
---
### 排序原理说明
- **选择排序** 的核心在于多次扫描剩余序列中的最大值,并将其放置于合适的位置上。
- **冒泡排序** 则是通过两两比较相邻元素大小的方式逐步调整顺序,最终使得整个列表呈现指定的升降趋势。
这两种方法均能有效完成题目所提出的“将十个数从大到小排序”的需求。
阅读全文
相关推荐

















