【问题标题】:Why does this C++ code not work for negative integers? [closed]为什么此 C++ 代码不适用于负整数? [关闭]
【发布时间】:2013-12-17 09:19:59
【问题描述】:
#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;
}

它似乎对正整数工作得很好,但对负整数却不行,我不明白为什么。有人可以解释吗?它必须计算位数......

【问题讨论】:

  • 请定义'工作正常'。显示输入和预期输出。
  • 答案就在调试器的眼睛里。
  • (z=z/10) 请删除(),这很烦人。
  • 这个程序应该做什么?你能告诉我们预期的输出吗?
  • 您习惯什么语言?您的来源的格式看起来很奇怪且不合逻辑。

标签: c++ integer


【解决方案1】:

它对负整数“不起作用”可能是因为z 的符号在您的while (z&lt;0) 循环中的每次迭代中都会翻转。因此循环将在第一次迭代后停止,y 为 1。

【讨论】:

    【解决方案2】:

    使用这个

    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;
    

    【讨论】:

      猜你喜欢
      • 2015-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多