lun1ght 2024-03-31 15:09 采纳率: 75%
浏览 13

为什么i在for语句循环一次后自加2和在else语句中自加2的输出结果差的很多


#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
    double sum=0,num=1,i=1.0,k=1.0;
    int count=0;
    for(;;i+=2)
    {
        if(fabs(num)<pow(10,-6))
            break;
        else
        {
            sum+=num;
            k=-k;
            /*i+=2;*/
            num=k/i;
            count++;
        }
    }
    sum*=4;
    printf("%lf %d",sum,count);

    return 0;
}

当i在for后的表达式中时的输出为

img

当i在else语句中时的输出为

img

通过查看sum的值,发现i在for后的表达式时,sum一直在重复2个数字

img


这是为什么?

  • 写回答

4条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-03-31 15:14
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题分析: 代码中使用了无限循环for(;;),其中i+2在循环中每次增加2,num为其它一些变量计算所得。而整个循环的终止条件为fabs(num)= pow(10, -6)){ sum += num; k = -k; i += 2; num = k / i; count++; } sum *= 4; printf("%lf %d", sum, count); return 0; } ```
    评论

报告相同问题?

问题事件

  • 创建了问题 3月31日