C语言作业运行不出来,求指导

如图的作业,为啥运行的结果出不来,就一光标。... 如图的作业,为啥运行的结果出不来,就一光标。 展开
 我来答
penguinarbiter
2020-11-29 · TA获得超过186个赞
知道小有建树答主
回答量:183
采纳率:100%
帮助的人:52.5万
展开全部

没有运行结果的原因是代码中存在死循环。

进入 while 循环体前,变量 t 的值为 1。循环过程中 t 的值没有改变,而循环条件是 t >= 0.0001,这个条件一直满足,所以程序不会跳出循环。程序一直卡在循环里面,自然不会执行到下面的 printf 函数。

卡循环是没有运行结果的原因。实际上代码还存在其他问题,无法计算出正确的结果:

[1] 变量 s 的类型应该是 double:格雷戈里公式中的每一项都是小数,使用整型数类型保存结果会将小数部分截断;

[2] 第 10 和 11 行的 if 语句块是不必要的:前面的代码保证变量 t 的值为 1,因此无需负数到正数的转换;

[3] 变量 t 没有迭代:代码中变量 t 的作用是每次循环自增,用以提供分母的值,而实际上在循环中没有更新 t 的值;

[4] 变量 t 和变量 s 混淆了:代码用变量 s 来表示格雷戈里公式中的每一项的值,而循环条件的判断却用了变量 t,这也是死循环的原因。同时原题中要求用 t 表示格雷戈里公式中的每一项,代码中使用了变量 s 来表示;

下面提供能输出正确结果的代码并附上说明:

#include <stdio.h>

#define ABS(X) (X >= 0 ? X : -X)

int main()

{

    double pi = 0, t = 1;

    int flag = 1, de = 1;

    while (ABS(t) >= 0.0001)

    {

        t = (double)flag / de;

        pi += t;

        flag = -flag;

        de += 2;

    }

    pi *= 4;

    printf("pi=%.4f\n", pi);

    return 0;

}

代码说明:

[1] 第 2 行 ABS 宏定义:用来取绝对值,正数返回自身值,负数返回相反数,因为公式中的每一项是正负交替的,而判断精度只看绝对值;

[2] 变量 t:代表格雷戈里公式中的每一项的值,初始化值为 1 的原因是,while 循环体的循环条件是 "t >= 0.0001",初始化为 0 不能进入循环;

[3] 变量 de:代表每一项的分母的值,每循环一次自身值加 2;

[4] "t = (double)flag / de;":变量 flag 和 变量 de 的类型都是 int,被除数和除数都是整型数的除法,结果是舍去余数的整数商,因此需要将变量 flag 强制转换成浮点数类型,这样才能得到小数结果,另外,这个表达式省去了每一项的分子 1,实际上是 "(double)flag * 1 / de;"

[5] "+=" 和 "*=":表示变量自增的加数或自乘的因数,"pi += t;" 等同 "pi = pi + t;" ,"pi *= 4;" 等同 "pi = pi * 4;"

程序运行结果

更多追问追答
追问
厉害
不过宏定义我们还没学
答题lyc
2020-11-29 · 超过253用户采纳过TA的回答
知道小有建树答主
回答量:2647
采纳率:24%
帮助的人:128万
展开全部
C语言运作的,这你应该找找这个C语言的一些运营方面的一些解释啥的,多了解这个情况。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huyangying1
2020-11-29 · TA获得超过100个赞
知道小有建树答主
回答量:1224
采纳率:95%
帮助的人:66.3万
展开全部
C,语言作业运行不出来,c,语言作业运行不出来,说明你的程序里面编辑的时候出现了错误,所以导致没有整法正常运行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销

2020-11-29 · TA获得超过8240个赞
知道大有可为答主
回答量:6.5万
采纳率:23%
帮助的人:2246万
展开全部
C语言作业运行不出来,有可能是带运行的当中啊数据没有导出来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
说学逗化石bv
2020-11-29 · TA获得超过758个赞
知道小有建树答主
回答量:1793
采纳率:58%
帮助的人:281万
展开全部
你把代码贴出来啊,你不贴出来我们怎么看哪里出问题呀?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式