| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2713 人关注过本帖
标题:1-1/2-1/3-1/4...-1/n这道题怎么算??
只看楼主 加入收藏
预备大佬
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2018-11-8
结帖率:81.82%
收藏
已结贴  问题点数:19 回复次数:7 
1-1/2-1/3-1/4...-1/n这道题怎么算??
#include<stdio.h>
int main()
{
    int i,n;
    float y = 0;
    scanf("%d",&n);
    y = 1/2;
    for(i = 3;i <= n;i++)
    {
            y = y - 1/i;
    }
    printf("%.2f",y);
    return 0;
}
无计可施。。。。
搜索更多相关主题的帖子: int for i++ printf return 
2018-11-28 09:08
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
需要注意
1/2 是2个int 结果为 0
后面的
1/i 也是如此 结果int 小数部分截断

https://zh.
2018-11-28 09:37
预备大佬
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2018-11-8
收藏
得分:0 
回复 2楼 lin5161678
我改成1.0/i他也是错的
2018-11-28 09:39
夜已黑
Rank: 1
等 级:新手上路
帖 子:18
专家分:9
注 册:2018-7-2
收藏
得分:9 
#include <stdio.h>

main()
{
    int a, i;
    float b = 1.0, k;
    scanf ("%d", &a);
    for(i = 2;i <= a;i++)
    {
        k = 1.0/i;
        b = b - k;
    }
    printf("%.2f", b);
}

难难难
2018-11-28 10:04
夜已黑
Rank: 1
等 级:新手上路
帖 子:18
专家分:9
注 册:2018-7-2
收藏
得分:0 
#include <stdio.h>

main()
{
    int a, i;
    float b = 1.0, k;
    scanf ("%d", &a);
    for(i = 2;i <= a;i++)
    {
        k = 1.0/i;
        b = b - k;
    }
    printf("%.2f", b);
}

难难难
2018-11-28 10:04
夜已黑
Rank: 1
等 级:新手上路
帖 子:18
专家分:9
注 册:2018-7-2
收藏
得分:0 
你写的里面有 1/i和1/2,需要改成1.0/i和1.0/2,不过1.0/2这一步可以结合在for循环里面,这样看起来比较不错

难难难
2018-11-28 10:11
kenodi
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2018-11-28
收藏
得分:0 
#include<iostream>
using namespace std;
int main()
{
    double a=1,n;
    cin>>n;
    for(int i=2;i<=n;i++)
    {
        a-=1.0/i;
    }
    cout<<a<<endl;
    return 0;
}
2018-11-28 13:00
wlxy_wang
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:77
专家分:303
注 册:2018-11-2
收藏
得分:10 
源程序改一下,这样就正确了。
程序代码:
#include<stdio.h>
int main()
{
    int i,n;
    float y = 0;
    scanf("%d",&n);
     y = 1.0/2; //注意C语言中整数的除法是整数,所以原来这里的y值为0.
    for(i = 3;i <= n;i++)
    {
            y = y - 1.0/i;//同业要注意整数的除法问题
    }
    printf("%.2f",y);
    return 0;
}

原来的思路本身是没错的,错的是你没有考虑整数的除法结果为整数。同样这个程序如果你最初定义i为float类型,也不会出错。
程序代码:
]#include<stdio.h>
int main()
{
    int n;
    float i, y = 0;
    scanf("%d",&n);
     y = 1.0/2; //注意C语言中整数的除法是整数,所以原来这里的y值为0.
    for(i = 3;i <= n;i++)
    {
            y = y - 1/i;
    }
    printf("%.2f",y);
    return 0;
}


[此贴子已经被作者于2018-11-28 15:31编辑过]

2018-11-28 15:27
快速回复:1-1/2-1/3-1/4...-1/n这道题怎么算??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.059740 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved