【发布时间】:2022-02-28 02:39:14
【问题描述】:
它是一个在所需范围内查找阿姆斯壮数的程序 假设我想在 100 到 1000 之间找到 amstrong 然后它显示输出为 370 371 407 但不是 153 找不到问题所在
#include<stdio.h>
#include<math.h>
int main()
{
int num,start,end,n,rem,res;
printf("Enter the range :");
scanf("%d %d",&start,&end);
printf("Amstrong number between %d and %d are : ",start,end);
for(int i=start;i<=end;i++)
{
//int i=153;
num=i;
n=0;
while(num)
{
num/=10;
++n;
}
num=i;
res=0;
while(num)
{
rem=num%10;
res=res+pow(rem,n);
num/=10;
}
if(res==i)
printf("%d\t",i);
}
return 0;
}
【问题讨论】:
-
我认为
pow()函数有问题。我在代码中编写了另一个power()函数,它运行良好,所以pow()函数出了什么问题 -
pow函数接受doubles 并返回double。您可能会遇到舍入错误,并且if (res==i)不正确。 -
我在 linux 18.04 和 gcc 下运行了 OPs 代码。结果是正确的 4 个输出。我怀疑你的问题是使用
pow()函数
标签: c