2014-03-05 36 views
0

我想生成阿姆斯特朗數到第n個數字。所以,我已經寫了一個代碼,但它不工作。每當我輸入數字如999或10000,它僅返回0 ....誰能幫我找出什麼是錯,此代碼:生成阿姆斯特朗數到第n個數字在C不工作

#include <stdio.h> 
#include <math.h> 
int main() 
{ 
    double remainder,n=0; 
    int number,sum = 0,q,x,count; 

    printf("Enter an integer upto which you want to find armstrong numbers:"); 
    scanf("%d",&number); 
    printf("\nFollowing armstrong numbers are found from 1 to %d\n",number); 

    for(count = 1 ; count <= number ; count++) 
    { 
     q = count; 
     x = count; 
     for(;x != 0;) 
     { 
      x =x/10; 
      n = n + 1; 
     } 
     while(q != 0) 
     { 
      remainder = q % 10; 
      sum = sum +(pow(remainder,n)); 
      q = q/10; 
     } 
     if (count == sum){ 
     printf("%d\n", count); 
     } 
     sum = 0; 
     } 

    return 0; 
} 

回答

0

你必須初始化n零環路內的count。並通過例如將0.5添加到pow來妥善舍入結果。

+0

我這樣做了,現在它正在工作並將第一個數字返回到第三個數字,但它沒有返回153作爲阿姆斯特朗數。爲什麼? –

+0

奇怪。我確實得到了153.你正在使用'pow',所以當把結果截斷爲'int'時可能會有一些舍入錯誤。嘗試在'pow'的結果中添加'0.5'。 –

+0

是的,加了0.5工作......謝謝 –

相關問題