用c++程序写以下程序:给定五个数字组成的序列 a,1∼5 在这五个数字中均恰好出现一次。现在请按照如下操作对序列进行排序。 若 a 1 >a 2 ,则交换 a 1 和a 2 。 若 a 2 >a 3 ,则交换 a 2 和 a 3 。 若 a 3 >a 4 ,则交换a 3 和 a 4 。 若 a 4 >a 5 ,则交换a 4 和 a 5 。 如果序列没有变成 { 1 , 2 , 3 , 4 , 5 } {1,2,3,4,5},则回到第一步,继续排序。 请在每次交换后输出当前序列。 输入格式 输入只有一行五个数,表示序列 a。 输出格式 输出若干行,每行输出五个用空格隔开的整数,表示一次交换后的序列。
时间: 2024-03-21 08:42:04 浏览: 35
以下是用 C++ 编写的程序,实现了题目要求的功能:
```cpp
#include <iostream>
using namespace std;
int main()
{
int a[5];
for (int i = 0; i < 5; i++)
{
cin >> a[i];
}
bool sorted = false;
while (!sorted)
{
sorted = true;
for (int i = 0; i < 4; i++)
{
if (a[i] > a[i + 1])
{
swap(a[i], a[i + 1]);
sorted = false;
for (int j = 0; j < 5; j++)
{
cout << a[j] << " ";
}
cout << endl;
}
}
}
return 0;
}
```
输入格式为一行五个数,使用 `for` 循环遍历数组 `a`,将输入的五个数存储在数组中。
接下来使用 `while` 循环进行排序。在每次循环中,使用一个布尔变量 `sorted` 来记录当前序列是否已经为升序。如果是升序,就不需要再进行交换操作,直接退出循环。如果不是升序,就进行交换操作,并将 `sorted` 设为 `false`。
交换操作使用 `swap` 函数实现,并在每次交换后输出当前序列。输出使用嵌套的 `for` 循环遍历数组 `a` 实现,每次输出一个数后加上一个空格,输出完一行后换行。
最后返回 0,结束程序。
阅读全文