JILAU_WHO_AM_I_Q234
JILAU_WHO_AM_I_Q234
采纳率84.6%
2019-06-20 12:30 阅读 178

C语言循环求值问题求解

先上代码

#include <stdio.h>
int main(void)
{
    long lLimit;
    float fSum1 = 0.0,fSum2 = 0.0;
    printf("请输入一个数值\n");
    scanf("%ld",&lLimit);
    for(int i = 1; i <= lLimit; i ++)
        fSum1 += (1/i);
        for(int i = 1; i <= lLimit; i ++)
        {
            int a = 1;
            for(int j = 1;j < i; j++)
            a *= -1;
            fSum2 += a*(1/i);
        }
        printf("1 + 1/2 + 1/3 +....前%ld项和为 %f\n",lLimit,fSum1);
        printf("1 - 1/2 + 1/3 - 1/4 + 1/5....前%ld项和为%f \n",lLimit,fSum2);
        printf("两个数列总和为 %f \n",fSum1+fSum2);
        return 0;
}

程序的目的看最后的两个printf
下面是运行结果
图片说明
不论我输入什么数字都是这个结果。
求大神指出问题。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    xb1667 xb1667 2019-06-20 13:13

    fSum1 += (1/i); 修改为 fSum1 += (1.0/i);
    fSum2 += a*(1/i); 修改为 fSum2 += a*(1.0/i);

    点赞 评论 复制链接分享
  • weixin_43845820 Betrüger - bande 2019-06-20 13:00

    问题处在 **1/i **上面

    点赞 评论 复制链接分享
  • qq_23584949 qq_23584949 2019-06-20 13:03

    可能是i不是浮点数所以得出的结果取整数?

    点赞 评论 复制链接分享