鱼C论坛

 找回密码
 立即注册
查看: 1005|回复: 9

[已解决]代码没有问题,但是编译运行之后没有反应

[复制链接]
发表于 2024-1-20 16:54:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
以下是代码:

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

int main()
{
        float denom=1;
        float result=0;
        int i=1;
        
        while(fabs(1/denom)>=pow(10,-8))
        {
                result += i/denom;
                i = -i;
                denom += 2;
                
        }
        
        printf("π的近似值是%.7f\n",result*4);
        
        return 0;
}
最佳答案
2024-1-20 18:45:53
本帖最后由 jackz007 于 2024-1-20 18:48 编辑
顶聪明的芥子 发表于 2024-1-20 18:20
您好!能帮我看一下我的代码为什么不出结果吗,我已经把result改成你写的double类型了!!


         result 改不改不影响出结果,出结果的关键是 denom,你得把 denom 改成 double!因为,float 只有 7 位有效数字,pow(10 , -8) 的值已经超出了 一个 float 的有效数值范围,从而导致循环无终点。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-20 16:55:09 | 显示全部楼层
你好,根据你提供的代码,应该是缺少头文件的问题。

在 C 语言中使用 printf 函数和 fabs 函数需要包含对应的头文件。请在 `#include` 后面添加 `<stdio.h>` 和 `<math.h>` 头文件。修改后的代码如下:
#include <stdio.h>
#include <math.h>

int main()
{
    float denom=1;
    float result=0;
    int i=1;

    while(fabs(1/denom)>=pow(10,-8))
    {
        result += i/denom;
        i = -i;
        denom += 2;

    }

    printf("π的近似值是%.7f\n",result*4);

    return 0;
}

请尝试编译和运行修改后的代码,看看是否能够正常工作。如果还有其他问题,请随时向我提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-20 18:12:01 | 显示全部楼层
FishC 发表于 2024-1-20 16:55
你好,根据你提供的代码,应该是缺少头文件的问题。

在 C 语言中使用 printf 函数和 fabs 函数需要包含 ...

我包含了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-20 18:12:35 | 显示全部楼层


抱歉,可能是我之前的回答有误。在包含了正确的头文件之后,如果你编译运行代码仍然没有反应,可能有以下几个可能原因:

1. 编译器问题:请确保你使用的编译器能够正确地编译和运行 C 代码。可以尝试使用其他编译器或者更新你当前使用的编译器版本。

2. 代码逻辑错误:请检查你的代码是否存在逻辑错误导致程序无法正常运行。例如,循环条件不满足导致循环无法执行等。

3. 程序卡住了:有时候程序可能会因为某些原因而卡住,例如等待用户输入或者进入无限循环。你可以尝试给程序一些输入,或者检查你的代码是否存在死循环的情况。

如果以上方法都无法解决问题,请尝试添加调试语句来帮助你查找问题所在。例如,在关键位置添加打印语句或者断点来观察代码的执行情况。

如果还遇到了问题,请提供更多的细节,例如你使用的操作系统、编译器版本和具体的错误信息,以便我们更好地帮助你解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-20 18:13:57 | 显示全部楼层
FishC 发表于 2024-1-20 18:12
抱歉,可能是我之前的回答有误。在包含了正确的头文件之后,如果你编译运行代码仍然没有反应,可能有以 ...

我运行了好几次了,编译的时候也没有报错,那不可能每次运行都卡住鸭
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-20 18:14:29 | 显示全部楼层
顶聪明的芥子 发表于 2024-01-20 18:13
我运行了好几次了,编译的时候也没有报错,那不可能每 ...


非常抱歉,我之前的回答没有帮助到你。根据你提供的代码,我重新检查了一下,并没有发现明显的错误。在运行程序时出现没有反应的情况可能是由于以下几个原因导致的:

1. 编译器问题:请确保你使用的编译器能够正确地编译和运行 C 代码。不同的编译器对代码的解释和执行方式可能会有所不同。你可以尝试使用其他编译器或者更新你当前使用的编译器版本。

2. 系统环境问题:有时候,特定的系统环境可能会导致程序无法正常运行。你可以尝试在其他的计算机上运行代码,看看是否有同样的问题。

3. 其他代码问题:在你的代码中,逻辑上是没有明显的错误的。然而,有时候代码中可能存在隐蔽的问题,例如未初始化的变量、内存泄漏等。你可以尝试使用调试工具来分析代码的执行过程,以找出潜在的问题。

如果以上方法都无法解决问题,请提供更多的细节,例如你使用的操作系统、编译器版本和具体的错误信息,以便我们更好地帮助你解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-20 18:14:59 | 显示全部楼层
#include<stdio.h>

int main(void)
{
        double result = 0               ;
        int i = 1 , k = 1               ;
        while(i < 1e8)
        {
                result += 1.0 * k / i   ;
                i += 2                  ;
                k = -k                  ;               
        }
       
        printf("π的近似值是%.7f\n",result*4);
       
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-20 18:20:56 | 显示全部楼层

您好!能帮我看一下我的代码为什么不出结果吗,我已经把result改成你写的double类型了!!
#include<stdio.h>
#include<math.h>

int main()
{
        float denom=1;
        double result=0;
        int i=1;
        
        while((1/denom)>=pow(10,-8))
        {
                result += i/denom;
                i = -i;
                denom += 2;
                
        }
        
        printf("π的近似值是%.7f\n",result*4);
        
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-20 18:45:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2024-1-20 18:48 编辑
顶聪明的芥子 发表于 2024-1-20 18:20
您好!能帮我看一下我的代码为什么不出结果吗,我已经把result改成你写的double类型了!!


         result 改不改不影响出结果,出结果的关键是 denom,你得把 denom 改成 double!因为,float 只有 7 位有效数字,pow(10 , -8) 的值已经超出了 一个 float 的有效数值范围,从而导致循环无终点。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-20 18:48:04 | 显示全部楼层
jackz007 发表于 2024-1-20 18:45
result 改不改不影响出结果,出结果的关键是 denom,你得把 denom 改成 double!

谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 23:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表