如何解决使用pow面对特定输入的问题
my_receiver:
class: App\BackgroundTasks\Receiver
tags:
- { name: bernard.receiver,message: 'HelloWorld' }
我正在尝试制作一个检查号码是否为Armstrong号码的程序。我正以“ 153”作为输入专门面对这个问题。该程序可以很好地处理各种输入,但是编译器在添加153时显示异常行为。我还将在输出中附加不同的输入,以明确显示'sum'变量中数字的加法。
输出:
#include<stdio.h>
#include<math.h>
int main()
{
int n,num,sum=0,count=0,a,remain=0;
printf("Enter a number : ");
scanf("%d",&num);
a=num;
n=num;
while(a!=0)
{
a=a/10;
count++;
}
while(n!=0)
{
remain=n%10;
sum=sum+pow(remain,count);
printf("%d\n",sum);
n=n/10;
}
if(sum==num)
printf("Armstrong Number");
else
printf("Not an Armstrong Number");
return 0;
}
解决方法
pow
返回一个double
,这意味着您可能会遇到奇怪的舍入问题。您可能需要考虑实现自己的integer exponentiation function。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。