gpt4 book ai didi

c - 执行程序时的一些错误

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

我想写一个程序,看看一个整数是否是另一个整数的幂(真返回 1,假返回 0)。代码如下:

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

int cal_base_power(int);

int main()
{
int x,r;
printf("Please input an integer\n");
scanf("%d\n",&x);
r=cal_base_power(x);
printf("result is %d\n",r);
}

int cal_base_power(int input)
{
int i=2;
double a=pow(input,(double)1/i);
while (a>=2)
{
if ((double)a==(int)a)

return 1;

i++;
a=pow(input,(double)1/i);

}

return 0;


}

对于 4,8,125 这样的一些情况是可以的。但是在输入216和343时失败了。而且它不会自动输出0和1。我必须在结果0或1出来之前输入一些随机特征。谁能帮我?我知道这很容易。但我真的需要你的帮助

最佳答案

您不能对 float 进行相等比较。

(double)a==(int)a

由于舍入误差,a可能不完全是一个整数,即使它应该是。

编辑:

有两种方法:

  1. 允许比较容差:fabs(a - (int)a) < 0.0001 (或类似的东西,您需要调整阈值。)
  2. 回合 a到最接近的整数并将其重新启动(仅使用整数)以查看它是否与输入匹配。

关于c - 执行程序时的一些错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7396713/

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