【程序设计】 ---------------------------------------------------------------------- 题目:输入10个实数存入数组(float n[10];)中,按从小到大顺序排序后输出。 输出格式如样张所示。 要求:输入数据使用"%f"格式。 ---------------------------------------------------------------------*/ #include <stdio.h> void main() { float n[10],t; int i,j; printf("Input 10 numbers:\n"); /**********Program**********/ /********** End **********/ printf("The sorted numbers:\n"); for(i=0;i<10;i++) printf("%5.2f ",n[i]); printf("\n"); }
时间: 2023-06-29 13:07:27 浏览: 220
【程序设计】
```c
#include <stdio.h>
void main() {
float n[10], t;
int i, j;
printf("Input 10 numbers:\n");
for (i = 0; i < 10; i++)
scanf("%f", &n[i]);
for (i = 0; i < 9; i++) {
for (j = i + 1; j < 10; j++) {
if (n[i] > n[j]) {
t = n[i];
n[i] = n[j];
n[j] = t;
}
}
}
printf("The sorted numbers:\n");
for (i = 0; i < 10; i++)
printf("%5.2f ", n[i]);
printf("\n");
}
```
本题的核心是排序算法,这里采用的是冒泡排序。具体思路是从第一个元素开始,依次与后面的元素进行比较,如果前面的元素大于后面的元素,就交换它们的位置。这样一轮下来,最大的元素就会被排到了最后面,接下来再从第一个元素开始进行同样的操作,直至所有元素都排好序。
代码中的双重循环即为冒泡排序的实现。值得注意的是,在内层循环中,j 的起始值为 i+1,这是因为前面的 i 个元素已经排好序了,不需要再次比较。此外,为了实现从小到大的排序,当 n[i] 大于 n[j] 时,需要交换它们的位置。
最后,输出排好序的数组即可。注意,输出格式中每个数占据 5 个字符的位置,并且保留 2 位小数。
阅读全文