输入10个实数套入数组(float n[18];)中,按从小到大顺序排序后输出。 输出格式如样张所示。要求:输入数据使用“.%f”格式。
时间: 2023-09-12 15:05:48 浏览: 156
C语言程序设计-编写函数fun对主程序中用户输入的具有10个数据的数组a按由大到小排序,并在主程序中输出排序结果;
5星 · 资源好评率100%
### 回答1:
下面是一个使用冒泡排序对输入的浮点数进行从小到大排序的示例代码:
```c++
#include <stdio.h>
int main() {
float n[10];
int i, j;
float temp;
// 输入10个实数
printf("请输入10个实数:\n");
for (i = 0; i < 10; i++) {
scanf(".%f", &n[i]);
}
// 冒泡排序
for (i = 0; i < 9; i++) {
for (j = 0; j < 9 - i; j++) {
if (n[j] > n[j + 1]) {
temp = n[j];
n[j] = n[j + 1];
n[j + 1] = temp;
}
}
}
// 输出排序后的结果
printf("排序后的结果:\n");
for (i = 0; i < 10; i++) {
printf("%.2f ", n[i]);
}
printf("\n");
return 0;
}
```
注意,这里使用了 `scanf(".%f", &n[i])` 来输入浮点数,因为题目要求输入数据使用“.%f”格式。输出时使用了“%.2f”格式,保留两位小数。
### 回答2:
首先,我们先输入10个实数,并将其存入数组float n[18]中。然后,我们使用冒泡排序法对数组进行从小到大的排序。
冒泡排序法的基本思想是,从第一个元素开始,比较它与相邻元素的大小,如果按照从小到大的顺序排列则继续,否则将两个元素交换位置。这样一轮比较下来,最大的元素就会被移动到最后。然后,再对剩下的元素进行比较,如此循环直到所有元素都按照从小到大的顺序排序好。
在代码中,我们使用两个循环来完成冒泡排序。外层循环用于控制比较的轮数,内层循环用于控制每轮比较的次数,并进行元素交换。
最后,按照样张的输出格式,依次输出排序后的数组元素。
代码示例:
```
#include <stdio.h>
int main() {
float n[10];
int i, j;
// 输入10个实数
printf("请输入10个实数:\n");
for (i = 0; i < 10; i++) {
scanf("%f", &n[i]);
}
// 冒泡排序
for (i = 0; i < 9; i++) {
for (j = 0; j < 9 - i; j++) {
if (n[j] > n[j + 1]) {
float temp = n[j];
n[j] = n[j + 1];
n[j + 1] = temp;
}
}
}
// 输出排序后的数组
printf("排序后的数组为:\n");
for (i = 0; i < 10; i++) {
printf("%.2f ", n[i]);
}
return 0;
}
```
运行示例:
请输入10个实数:
5.67 8.91 3.45 2.01 6.78 1.23 4.56 9.87 0.98 7.65
排序后的数组为:
0.98 1.23 2.01 3.45 4.56 5.67 6.78 7.65 8.91 9.87
### 回答3:
首先,我们需要声明一个包含10个浮点数的数组n[10]。然后,我们通过使用循环来连续输入这10个实数,并将它们存储在数组中。
接下来,我们可以使用冒泡排序算法来对这些实数进行从小到大的顺序排序。冒泡排序是一种简单但有效的排序算法,其核心思想是不断地比较相邻的元素并交换它们的位置,直到整个数组按照顺序排列。具体的步骤如下:
1. 声明一个布尔变量swapped来标记是否进行了交换操作。
2. 使用双层循环,外层循环控制需要进行多少轮的比较和交换操作,内层循环用于每一轮的实际比较和交换。
3. 在每一轮的内层循环中,比较相邻两个元素的大小,如果前一个元素大于后一个元素,则交换它们的位置,并将swapped标记为true。
4. 如果在一轮比较和交换操作中没有发生交换,则意味着数组已经有序,可以提前结束排序。
5. 重复执行步骤2至4,直到所有元素都按照从小到大的顺序排序。
最后,我们按照题目要求的格式将排序后的数组输出。我们可以使用循环来逐个输出数组中的元素,然后使用“.%f”格式来控制输出浮点数的小数位数。
以下是代码实现的例子:
```python
#include <stdio.h>
void bubbleSort(float n[], int length) {
int i, j;
float temp;
int swapped;
for (i = 0; i < length-1; i++) {
swapped = 0;
for (j = 0; j < length-i-1; j++) {
if (n[j] > n[j+1]) {
temp = n[j];
n[j] = n[j+1];
n[j+1] = temp;
swapped = 1;
}
}
if (swapped == 0) {
break;
}
}
}
int main() {
float n[10];
int i;
printf("请输入10个实数:\n");
for (i = 0; i < 10; i++) {
scanf("%f", &n[i]);
}
bubbleSort(n, 10);
printf("排序后的数组为:\n");
for (i = 0; i < 10; i++) {
printf("%.2f ", n[i]);
}
return 0;
}
```
运行示例:
请输入10个实数:
9.8 5.6 7.2 2.3 4.5 1.1 6.7 8.9 3.4 0.6
排序后的数组为:
0.60 1.10 2.30 3.40 4.50 5.60 6.70 7.20 8.90 9.80
阅读全文