输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数,若最小的数有多个只交换最前面的那个。
时间: 2023-08-19 16:02:14 浏览: 289
### 回答1:
可以使用以下的算法来实现:
1. 输入n个数,存储在一个数组中。
2. 找出数组中最小的数,记录其下标。
3. 如果最小的数不在第一个位置,将其与第一个数交换。
4. 输出交换后的数组。
具体实现可以参考以下代码:
```
#include <stdio.h>
int main() {
int n, i, minIndex, temp;
int a[100];
// 输入n个数
printf("请输入n:");
scanf("%d", &n);
printf("请输入%d个数:", n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
// 找出最小的数
minIndex = 0;
for (i = 1; i < n; i++) {
if (a[i] < a[minIndex]) {
minIndex = i;
}
}
// 如果最小的数不在第一个位置,交换
if (minIndex != 0) {
temp = a[0];
a[0] = a[minIndex];
a[minIndex] = temp;
}
// 输出交换后的数组
printf("交换后的数组为:");
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
### 回答2:
设输入的n个数为a1, a2, ..., an。
首先,我们需要找到最小的数,并记录其位置。
假设最小的数为min,初始令min = a1,初始位置为pos = 1。
遍历剩下的数a2, a3, ..., an,若有数比min小,则将min更新为该数,同时更新pos为该数的位置。
找到最小的数和其位置后,将最小的数与第一个数a1交换位置。
输出交换后的数列,即a[pos], a1, a2, ..., an。
以下是具体的实现代码:
n = int(input("请输入数的个数:"))
nums = []
for i in range(n):
num = int(input("请输入第{}个数:".format(i+1)))
nums.append(num)
min_num = nums[0] # 假设最小的数为第一个数
min_pos = 0 # 记录最小数的位置
for i in range(1, n):
if nums[i] < min_num:
min_num = nums[i]
min_pos = i
# 最小数与第一个数交换位置
nums[min_pos], nums[0] = nums[0], nums[min_pos]
# 输出交换后的数列
for num in nums:
print(num, end=" ")
希望对你有帮助!
### 回答3:
首先,我们先创建一个能够接收n个数的数组arr,并将输入的n个数存入数组中。
接下来,我们需要找出最小的数以及它在数组中的索引位置。我们可以设置一个变量min来保存当前最小的数,初始值可以设置为数组中的第一个数arr[0]。然后,我们遍历数组中剩余的数,将每个数与min进行比较,如果找到更小的数就更新min的值,并保存其索引位置。
接着,我们将最小的数与数组中的第一个数进行交换。如果最小的数的索引位置不为0,我们利用一个临时变量temp来进行交换。将最小的数存入temp中,然后将arr[0]的值赋给arr[min的索引位置],最后将temp中的值赋给arr[0]。
最后,我们可以输出交换后的数组arr。
阅读全文