问题在标题中。 如果可能的话,请给我解释我做错了什么以及正确解决方案正确的原因。
我尝试解决这个问题的方式是在下面的代码中……应该让我获得所有3位数字,然后从每个数字中分别提取digit1
,digit2
和digit3
它应该显示尊重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;
}
答案 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;
}
}