为什么c++; 所以我对C++是新的。我必须做一个程序,你输入一个数字,它显示最大可能的数字和最小的数字,与输入的数字相同。但当输入的数字为0时,它将更改为4310160

为什么c++; 所以我对C++是新的。我必须做一个程序,你输入一个数字,它显示最大可能的数字和最小的数字,与输入的数字相同。但当输入的数字为0时,它将更改为4310160,c++,C++,对不起我的英语;{ #include <iostream> #include <math.h> using namespace std; int main() { int m[10], i, l, x, c, ok, r; cout << "x= "; cin >> x; l = 0; while (x > 0) { c = x % 10; m[l] = c;

对不起我的英语;{

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    int m[10], i, l, x, c, ok, r;

    cout << "x= ";
    cin >> x;

    l = 0;
    while (x > 0) {
        c = x % 10;
        m[l] = c;
        l++;
        x = x / 10;
    }

    do {
        ok = 1;
        for (i = 0; i < l; i++)
            if (m[i] < m[i + 1]) {
                r = m[i];
                m[i] = m[i + 1];
                m[i + 1] = r;
                ok = 0;
            }
        for (i = 0; i < l; i++) {
            cout << m[i] << ", ";
        }
        cout << endl;
    } while (ok != 1);
    cout << "largest= ";
    for (i = 0; i < l; i++) {
        cout << m[i];
    }
    cout << endl;
    do {
        ok = 1;
        for (i = 0; i < l; i++)
            if (m[i] > m[i + 1]) {
                r = m[i];
                m[i] = m[i + 1];
                m[i + 1] = r;
                ok = 0;
            }
    } while (ok != 1);
    if (m[0] == 0) {
        r = m[0];
        m[0] = m[1];
        m[1] = r;
    }
    cout << "smallest= ";
    for (i = 0; i < l; i++) {
        cout << m[i];
    }

    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int m[10],i,l,x,c,ok,r;
cout>x;
l=0;
而(x>0){
c=x%10;
m[l]=c;
l++;
x=x/10;
}
做{
ok=1;
对于(i=0;icout如果
x==0
,您就可以

if (m[0] == 0) {
    r = m[0];
    m[0] = m[1];
    m[1] = r;
}

未初始化的
m
,导致未定义的行为。

main
中的
int m[10]
数组存储在堆栈中,其元素初始化为不确定值,如和中所述

因此,如果
x==0
,程序应该不打印任何内容,因为
l
0
,并且不会进入任何循环

如果因为正在调试而看到
4310160
,那是因为
m[10]
元素被初始化为不确定的值(通常是此时堆栈中的值)


您可能会看到本地非静态数据存储在堆栈中。

您是否尝试在调试器中运行程序?逐行检查代码,看看会发生什么。请阅读。我在ideone上尝试过,并保留输入0。它的输出是x=最大=最小=输出上没有打印任何内容。您正在通过输入的数字的结尾t.请更仔细地查看涉及m[i+1]的任何内容。如果输入0,则第一个循环不会为变量设置任何值。然后使用未初始化的内存在底部与
m[0]==0进行比较。