为什么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;i cout如果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进行比较。