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;
}
我這樣做了,現在它正在工作並將第一個數字返回到第三個數字,但它沒有返回153作爲阿姆斯特朗數。爲什麼? –
奇怪。我確實得到了153.你正在使用'pow',所以當把結果截斷爲'int'時可能會有一些舍入錯誤。嘗試在'pow'的結果中添加'0.5'。 –
是的,加了0.5工作......謝謝 –