为什么这段代码显示的是1的无限循环而不是100到500之间的Armstrong数?

时间:2016-07-02 19:28:02

标签: c++ infinite-loop

此代码显示1的无限循环,但我不希望它!下面的代码有什么问题?

#include<iostream>
using namespace std;
int main()
{
     int i,num1=0,num2=0,num3=0;   // declares four variables
     for(i=100;i<=500;i++){       // for loop initiated from 100
           int j=i;               // since value of i gets changed afterwards hence store its current value in a variable
           num1=i%10;
           i=i/10;
           num2=i%10;
           num3=j/100;

          if(num1*num1*num1 + num2*num2*num2 + num3*num3*num3 == j)
                 cout<<j<<endl;           
                // displays the number for above condition matched
     }
     return 0;
}

2 个答案:

答案 0 :(得分:5)

你划分&#34;我&#34;每次循环,所以它永远不会超过500。

答案 1 :(得分:0)

删除i = i / 10,因为它使循环无限......

  

i = 100然后i = 10在最后

     

i++; i = 11

     

i = 11然后i = 1.1在最后

     

i++; i = 2.1

     

i = 2.1然后i = 0.21在最后

     

i++; i = 1.21

     

i = 1.21然后i = 0.121在最后

     

依旧......