顶聪明的芥子 发表于 2024-1-20 16:54:45

代码没有问题,但是编译运行之后没有反应

以下是代码:


#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 发表于 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 小助理,如未能正确解答您的问题,请继续追问。

顶聪明的芥子 发表于 2024-1-20 18:12:01

FishC 发表于 2024-1-20 16:55
你好,根据你提供的代码,应该是缺少头文件的问题。

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

我包含了

FishC 发表于 2024-1-20 18:12:35

顶聪明的芥子 发表于 2024-01-20 18:12
我包含了

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

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

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

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

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

顶聪明的芥子 发表于 2024-1-20 18:13:57

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

我运行了好几次了,编译的时候也没有报错,那不可能每次运行都卡住鸭

FishC 发表于 2024-1-20 18:14:29

顶聪明的芥子 发表于 2024-01-20 18:13
我运行了好几次了,编译的时候也没有报错,那不可能每 ...

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

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

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

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 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;
}

顶聪明的芥子 发表于 2024-1-20 18:20:56

jackz007 发表于 2024-1-20 18:14


您好!能帮我看一下我的代码为什么不出结果吗,我已经把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;
}

jackz007 发表于 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 的有效数值范围,从而导致循环无终点。

顶聪明的芥子 发表于 2024-1-20 18:48:04

jackz007 发表于 2024-1-20 18:45
result 改不改不影响出结果,出结果的关键是 denom,你得把 denom 改成 double!

谢谢!
页: [1]
查看完整版本: 代码没有问题,但是编译运行之后没有反应