生成所有具有3位数字的自然数,其中第3位-第1位=第2位

时间:2019-05-27 19:02:19

标签: c++

问题在标题中。 如果可能的话,请给我解释我做错了什么以及正确解决方案正确的原因。

我尝试解决这个问题的方式是在下面的代码中……应该让我获得所有3位数字,然后从每个数字中分别提取digit1digit2digit3它应该显示尊重digit3-digit1==digit2的数字。 该程序运行时没有错误,但同时却没有任何作用。

#include <iostream>

using namespace std;

int main()
{
    int Number,digit1,digit2,digit3,h;
    for (Number=100; Number<=999; Number++)
    {
        h=Number;
    }
    digit1=h/100;
    digit2=(h/10)%10;
    digit3=h%10;
    if (digit3-digit1==digit2)
        cout<<digit1<<digit2<<digit3;
    return 0;
}

1 个答案:

答案 0 :(得分:0)

循环之后的代码(return 0除外)必须进入循环内部。如果它在循环之外,则只能在值999上使用,因为这是h设置为循环退出前的最后一个值。要打印新行,您必须执行cout << endl或仅将<< endl放在分号前面的print语句的末尾。

可以在此处进行一些优化。您无需遍历所有899个数字。给定约束,第三位数字必须大于或等于第一位数字,因此您可以为第一位数字运行一个循环,并为从第一位数字开始的第三位运行嵌套循环。

for (int a = 1; a < 10; a++) {
  for (int c = a; c < 10; c++) {
    int b = c - a;
    cout << a << b << c << endl;
  }
}