鱼C论坛

 找回密码
 立即注册
查看: 914|回复: 2

循环

[复制链接]
发表于 2023-11-12 14:54:37 | 显示全部楼层 |阅读模式

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

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

x

#include<stdio.h>
int main()
{
        int i = 1.0;
        float s = 0;
        while (i <= 5)
        {
                s = s + 1 / i;
                i += 2;
        }
        printf("s=%.2f\n", s);
        return 0;
}
为什么运行出来是1.00
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-12 14:54:44 | 显示全部楼层
问题出在这一行代码上:
int i = 1.0;

在C语言中,将浮点数直接赋值给整型变量会导致浮点数部分被截断,因此i的值实际上是1而不是1.0。这会导致循环条件始终为真,因为i的值永远不会大于5。

为了解决这个问题,应该将i的初始值设为1,而不是1.0:
int i = 1;

这样就可以正确地执行循环,得到期望的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-12 15:06:28 | 显示全部楼层
        这一句
                s = s + 1 / i;
        改为
                s = s + 1.0 / i;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-5 11:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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