#include<iostream>
using namespace std;
int x;
int y;
int z;
int main ()
{
cout << "x=";
cin >> x;
z = x;
y = 0;
while(z > 0)
{
(z = z / 10);
(y = y + 1);
}
while(z < 0)
{
(z =- z);
(z = z / 10);
(y = y + 1);
}
cout << "cifre=" << y;
}
对于正整数似乎工作得很好,但对于负整数似乎不行,我不明白为什么。谁能解释一下?它必须计算位数......
答案 0 :(得分:7)
对于负整数,它不起作用,因为在z
循环的每次迭代中都会翻转while (z<0)
的符号。因此,循环将在第一次迭代后停止,y
为1。
答案 1 :(得分:1)
使用此
cout <<"x=";
cin >>x;
z=x;
y=0;
if(z<0)
z=-z;
while(z>0)
{
z=z/10;
y=y+1;
}
cout <<"cifre=" <<y;