C++ 为什么气泡排序程序在使用“垃圾”时显示垃圾值;“中断”;在循环中?
此代码将从用户处获取数组元素,然后对其进行排序。用户输入限制为20。如果(a[I]==0)中断,我有一个特定行的问题,它是C++ 为什么气泡排序程序在使用“垃圾”时显示垃圾值;“中断”;在循环中?,c++,arrays,for-loop,break,C++,Arrays,For Loop,Break,此代码将从用户处获取数组元素,然后对其进行排序。用户输入限制为20。如果(a[I]==0)中断,我有一个特定行的问题,它是如果我在这里使用break,结果将显示垃圾值。否则,它可以正常工作,但我希望用户能够用20个或更少的数字运行程序。我的意思是,只要他们觉得完成了,就可以简单地输入0,这样循环就中断了。我给出下面的代码。请尝试给出简单的解决方案,不要装腔作势。多谢各位 //Sorting with user input array elements void print(float a[],
代码>如果我在这里使用break,结果将显示垃圾值。否则,它可以正常工作,但我希望用户能够用20个或更少的数字运行程序。我的意思是,只要他们觉得完成了,就可以简单地输入0,这样循环就中断了。我给出下面的代码。请尝试给出简单的解决方案,不要装腔作势。多谢各位
//Sorting with user input array elements
void print(float a[], int n)
{
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
}
void sort(float a[], int n)
{
for (int i = 1; i < n; i++) {
for (int j = 0; j < n - i; j++) {
if (a[j] > a[j + 1]) {
swap(a[j], a[j + 1]);
}
}
}
}
int main()
{
float a[20];
int size;
court << "Enter Floats and terminate with 0 (Highest limit is 20)" << endl;
for (int i = 0; i <= 20; i++) {
cout << "a[" << i << "] : ";
cin >> a[i];
if (a[i] == 0)
break;
}
size = sizeof(a) / sizeof(int);
cout << "\nGiven Values :: ";
print(a, size);
cout << endl;
sort(a, size);
cout << "Sorted Result :: ";
print(a, size);
}
//使用用户输入数组元素进行排序
无效打印(浮点a[],整数n)
{
对于(int i=0;i cout数组大小为20。用户设置值直到输入0。这意味着其他元素未初始化。这些是垃圾值。您可以通过保存输入的元素数来修复它
//Sorting with user input array elements
void print(float a[], int n)
{
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
}
void sort(float a[], int n)
{
for (int i = 1; i < n; i++) {
for (int j = 0; j < n - i; j++) {
if (a[j] > a[j + 1]) {
swap(a[j], a[j + 1]);
}
}
}
}
int main()
{
float a[20];
int size{0};
court << "Enter Floats and terminate with 0 (Highest limit is 20)" << endl;
for (int i = 0; i < 20; i++) {
cout << "a[" << i << "] : ";
cin >> a[i];
if (a[i] == 0)
break;
++size;
}
cout << "\nGiven Values :: ";
print(a, size);
cout << endl;
sort(a, size);
cout << "Sorted Result :: ";
print(a, size);
}
//使用用户输入数组元素进行排序
无效打印(浮点a[],整数n)
{
对于(int i=0;i cout数组的大小为20。用户在输入0之前设置值。这意味着其他元素未初始化。这些是垃圾值。您可以通过保存输入的元素数来修复它。如何保存输入的元素数?我的意思是我已经使用了“大小”在用户输入后确定大小。循环一直持续到i==20
。这意味着(除非用户在此之前输入一个零值),一个值将从数组末尾读取。结果是未定义的行为。数组的大小是固定的。它不会更改。sizeof(a)/sizeof(int)
将始终返回20
“请,…不要有毒和傲慢”-请,不要写这篇文章,它不属于这个问题,对绝大多数读者来说是不礼貌的。