0x06:记录一次磕磕绊绊的完成作业之旅

要求:1-1/2+1/3-1/4+..+直到最后绝对值小于10-4为止。

 

#include <stdio.h>

#include <math.h>

int main(void)

{

    int n=1;

    float term=1.0,sign=1,sum=0;

    while(fabs(term)>=1e-4){

        term=sign/n;

        sum=sum+term;

        sign=-sign;

        n=n+1;







    }

    printf("sum=%f\n",sum);

    return 0;

}

 

然而在写在代码的时候发生了一些可怕的事情:

首先发现:10的-4次方忘记怎么表示了,用0.0001表示又很low,上网查询后得到结果

1e-4 表达见前面的日记。

然而在解决了这个问题后,永远只能运算两项:1-0.5;后来找到问题语句(头发掉了一把才想到的):

找到问题是靠直接让abs(term)>=0 发现程序正常运行,从而得知是条件出现问题

while(abs(term)>=1e-4){

 

…可是上课听到了abs表示绝对值,只能上网查询,发现fabs才是用来对小数进行取绝对值的。

改正后程序变成了这个样子:

#include <stdio.h>
#include <math.h>
int main(void)
{
    int n=1;
    float term=1.0,sign=1,sum=0;
    while(fabs(term)>=0){
        term=sign/n;
        sum=sum+term;
        sign=-sign;
        n=n+1;


    }
    printf("sum=%f\n",sum);
    return 0;
}

 

结果程序直接黑屏了…

你能发现又出现什么问题了吗?

经过短暂的查询,发现在前面的调试过程中把条件改成了>=0导致程序一直在运行,无法打印最终的结果,也就是死循环状态,程序结果一直不显示。

最后把这句话

while(fabs(term)>=1e-4){

 

成功运行出来。

程序员之路着实坎坷…

Tips:鼠标经过代码时会出现工具栏,工具栏上方有一键复制代码的功能哦~天云网络培训,专注于网络空间安全相关培训,并提供相关课程的在线培训 报名微信 tyedu1
天云网络培训 » 0x06:记录一次磕磕绊绊的完成作业之旅

提供专业、易懂、平民化教育。让每个热爱网络的人有个归宿

立即查看 了解详情