按升序排列阵列

arranging an array in ascending order

本文关键字:阵列 排列 升序      更新时间:2024-05-23

我在学校的任务是创建一个按升序排列数组值的程序。它几乎就在那里,但每当我输入"44 55 66 22 33 11 77 99 88 66">或它输出的任何数字

-885993460,11,2,3,44,55,66,66,77,88,或开始时的负数

第一个数字到底怎么了?我缺了什么吗?

我对c++很陌生,我不太理解这里的问题。如果有什么建议我可以使用,请告诉他们。

int num [10] = {};
int z;
cout << "please enter 10 numbers you want to sort: ";
cin >> num[0]>>num[1]>>num[2]>>num[3]>>num[4]>>num[5]>>num[6]>>num[7]>>num[8]>>num[9];
for (int l = 0; l < 10;l++)
for (int a = 0; a < 10; a++) {
if (num[a] > num[a + 1]) {
z = num[a];
num[a] = num[a + 1];
num[a + 1] = z;
}
}
cout << "your number in ascending order is: ";
for (int a = 0; a < 10; a++) {
cout << num[a] << ",";
}

system("pause");
return 0;

}

这里有一个错误:

for (int a = 0; a < 10; a++) {

a = 9时,num[a + 1]将超出范围。

线路应为:

for (int a = 0; a < 9; a++) {

以升序排列数字的更好、更简单的程序

#include<iostream>
using namespace std;
int main()
{
int n;
cout << "How many numbers you want to enter:n";
cin >> n;

int array[n];
//Introduce a loop which takes input from user multiple times 
for (int i = 0; i < n; i++)
{
cout<<"Please enter number "<<i+1<<" : ";
cin >> array[i];
}
//Create a new array. It will store numbers in ascending order
int newArray[n];

for (int i = 0; i < n; i++)
{
//Initialize "a" to 0 in the first loop before the second loop starts.
int a = 0;
for (int j = 0; j < n; j++)
{
if (array[i] > array[j] || (array[i] == array[j] && i > j))
{
a = a + 1;
}
}
newArray[a] = array[i];
}
for (int i = 0; i < n; i++)
{
cout << newArray[i] << " ";
}
return 0;
}