gpt4 book ai didi

在 C 中计算给定范围内的 3 的幂

转载 作者:行者123 更新时间:2023-12-02 08:15:38 25 4
gpt4 key购买 nike

我必须编写一个接受两个正整数的程序,startend,其中 (1 <start <结束)。然后程序会在这个范围 [start, end] 内查找并计算 3 的幂数。

因此,例如,如果 start 为 2,end 为 10,则输出将为 2。(因为 3 和 9 是 3 的幂)。

下面是我的代码:

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

int main(void) {

int start, end, i, count = 0;

printf("Enter start and end: ");
scanf("%d %d", &start, &end);

for (i = start; i <= end; i++) {
if ((log(i) / log(3)) == floor((log(i) / log(3)))) {
printf("%d\n", i);
count++;
}
}
printf("Answer = %d\n", count);

return 0;
}

但是,当我尝试运行其中一个测试用例 [3, 1000] 时,输出是 5,而它应该是 6。

3
9
27
81
729
Answer = 5

数字 243 丢失了。我的代码有问题吗?

最佳答案

问题是您使用的是 float 的精确比较。具体来说,这里:

if ((log(i)/log(3)) == floor((log(i)/log(3))))

由于 log()floor() 返回 double,您可以毫无容差地比较两个无法以这种方式比较的值.

How should I do floating point comparison?

关于在 C 中计算给定范围内的 3 的幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42323540/

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