gpt4 book ai didi

c - 反转 5 位数字是 prog。它给出了错误的输出

转载 作者:太空宇宙 更新时间:2023-11-04 06:54:19 25 4
gpt4 key购买 nike

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main()
{
int i,a,n,r;
n=12345;
r=0;
for(i=4;i>=0;i--)
{
a=n%10;
n=n/10;
r=r+a*pow(10,i);
}

printf("%d",r);



return 0;
}

当前输出 - 54320

预期输出 - 54321

请告知我可以在我的代码中更改哪些内容以反射(reflect)正确的输出。

最佳答案

pow 函数返回一个double 类型的值。因为这是一个浮点类型,它返回的结果并不总是准确的。

在这种情况下发生的事情是,在循环的最后一次迭代中,pow(10, 0) 返回一个 略微 小于 1 的值。这导致正确的r=r+a*pow(10,i); 的手边同样略微小于 54321。然后将此值分配给 rint 类型,它被截断了。

不要在这里使用 pow 函数,而是使用以下函数:

r=r*10+a;

这会将 r 中的当前数字移动 1,然后将最新的数字添加到末尾。此外,不要使用 for 循环,而是使用 while (n>0)。那么你有多少位数都没有关系。

 while (n>0)
{
a=n%10;
n=n/10;
r=r*10+a;
}

关于c - 反转 5 位数字是 prog。它给出了错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47023621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com