在c中生成armstrong数到第N个数不起作用
我正在尝试将阿姆斯特朗号码生成为第n个号码。因此,我为此编写了一个代码,但它不起作用。每次我输入999或10000之类的号码时,它只返回0…有人能帮我找出此代码的错误吗:在c中生成armstrong数到第N个数不起作用,c,math,C,Math,我正在尝试将阿姆斯特朗号码生成为第n个号码。因此,我为此编写了一个代码,但它不起作用。每次我输入999或10000之类的号码时,它只返回0…有人能帮我找出此代码的错误吗: #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 y
#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;
}
#包括
#包括
int main()
{
双余数,n=0;
整数,和=0,q,x,计数;
printf(“输入一个整数,最多可找到阿姆斯特朗数:”;
scanf(“%d”和编号);
printf(“\n在1到%d之间找到以下阿姆斯特朗编号”,编号);
对于(count=1;count您必须在count
的循环内将n
初始化为零。并注意对pow
的结果进行适当的舍入,例如向其添加0.5
。我这样做了,现在它正在工作并将阿姆斯特朗数返回到第n位,但它没有将153作为阿姆斯特朗数返回。为什么?奇怪。我确实得到了153。您使用的是pow
,因此在将其结果截断为int
时可能会有一些舍入错误。尝试将0.5
添加到pow
的结果中,而不是添加0.5,统一的方法是使用round()
,如sum=sum+round(pow(余数,n));