气泡排序循环,将一个数字更改为 0
Bubble sort loop, changes one number to 0
我对编程很陌生。正如标题所说,我编写了简单的气泡排序代码。有 3 个函数,一个从用户那里获取数字,第二个打印它们,第三个函数,气泡对数字进行排序。我强迫它至少对数字进行排序,但它仍然将一个数字变成 0,我没有任何想法。
#include <iostream>
using namespace std;
void acquire_num();
void print_num();
void sort_bubble();
int numbers[5];
int main()
{
acquire_num();
print_num();
sort_bubble();
print_num();
}
void acquire_num()
{
for (int i = 0; i < 5; i++)
{
cout << "Write " << i+1 << " number: ";
cin >> numbers[i];
}
}
void print_num()
{
cout << "Your numbers are:";
for(int i = 0; i < 5; i++)
{
cout << " " << numbers[i];
}
cout << endl;
}
void sort_bubble()
{
int indicator;
int store;
do
{
indicator = 0;
for (int i = 0; i < 5; i++)
{
if(numbers[i] > numbers[i+1])
{
indicator = indicator+1;
store = numbers[i];
numbers[i] = numbers[i+1];
numbers[i+1] = store;
}
}
}
while(indicator != 0);
}
在 sort_bubble
内部的循环中,i
从 0
到 4
,你使用 numbers[i+1]
最后将是 numbers[5]
这是数组的无效数字。改为使循环for (int i = 0; i < 4; i++)
。
你的数组有 5 个元素。
将当前元素与下一个元素进行比较,排序循环需要从 0 运行到 3,因为使用 4 时,访问下一个元素将是未定义的行为,因为它在数组之外。
相关文章:
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何获取一个数字的前3位
- 我想做一个彼此不同但重复出现的数字
- 如何检查一个c++字符串中有多少相同的字符/数字
- 为什么有时我输入一个整数,程序将第一个输入的数字打印成十进制数?
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- CIN 仅在输入非数字值时跳过下一个 CIN
- 以C++输出一个数字三角形
- 形成一个斐波那契三角形,使得每个数字是上面左对角线或右对角线上两个数字的总和
- 为什么当我输入一个被接受的数字时,我的 do-while 循环没有中断?
- 一个C++程序,用于在输入位数时输出具有特定位数的 .txt 文件中的所有数字
- 在C++中编程,将 3 个数字发送到一个函数,然后计算这 3 个数字的平均函数
- 在使用堆栈为下一个最大数字编写代码时面临 SIGSEGV(分段错误)
- 找到 x^n 的所有组合,并检查它们的总和是否等于一个不包括相同数字的数字
- 是否有一个 std::set 函数来确定不超过数字 x 的最大元素?
- 将数字提高到一个巨大的指数
- 反转一个数字程序不起作用,为什么?
- 使用带有一个参数函数的递归找到数字的平方
- 为什么当我输入一个大数字时,输出会一遍又一遍地重复?
- 为什么断点显示数组的第二个值是一个大数字?额外学分工作