我被困在这里。这个程序在给出1和2个强数字后停止,之后没有做任何事情output
#include <iostream>
using namespace std;
void main()
{
int fac=1,rem=0,strong_num=0,store=0,loop=1;
cout<<"The strong numbers in the range 1 - 500 are give below\n";
while(1<=loop<=500)
{
store=loop;
while(loop>0)
{
rem=loop%10;
while(rem>0)
{
fac=fac*rem;
rem--;
}
strong_num=strong_num+fac;
loop=loop/10;
}
loop=store;
if(strong_num==loop)
{
cout<<loop<<endl;
}
strong_num=0;
loop++;
fac=1;
}
}
我知道我犯了一个大错但不知道如何解决它? 请帮帮我?
答案 0 :(得分:0)
更改您的第一个while循环。
while(1<=loop<=500)
要
while(1<=loop && loop<=500)
更改第二个while循环。
while(loop>0)
{
fac=1; // Add this line here and remove from the end.
rem=loop%10;
while(rem>0)
{
fac=fac*rem;
rem--;
}
strong_num=strong_num+fac;
loop=loop/10;
}
因为我们需要分别找到每个数字的阶乘。例如,对于数字145,我们需要找到因子1,4和5.首先得到5的阶乘后,你需要将fac
变量重置为1.你没有做的事情并且遇到问题。
更改后我得到了这个输出。
1
2
145