c回文症的问题

时间:2019-01-10 02:51:18

标签: c gcc

2 个答案:

答案 0 :(得分:2)

您使用的pow的实现返回不正确的值。对于10的整数次幂,它应该精确地返回1、10、100、1000等,但是它返回的值略有不同。此外,当它返回略小于整数的值并将该值从浮点转换为int时,它将被截断,因此int x = pow(10, 3)的结果可能是999,而不是1000。

请勿使用此pow求幂十。您可以编写pow的简单整数替换(当然也可以使用其他名称),也可以重写代码以避免依赖于十进制。 (以1、10、100、1000等进行迭代工作通常会更好—在每个步骤中只需乘以10,而不是进行幂运算即可。)

答案 1 :(得分:2)

pow函数正在正确返回错误的值。而不是在代码中使用pow乘以10与总和即可得到输出

remainder = n%10;
reversed = reversed*10 + remainder;
n /= 10;

使用pow函数获得准确结果的最佳方法是尽可能多地使用double。像大多数将整数用于大型浮点运算的函数一样,其结果往往不准确