首页 > 解决方案 > 按升序排列数组

问题描述

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

-858993460,11,22,33,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;

}

标签: c++

解决方案


这是一个错误

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

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

该行应该是:

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

推荐阅读