解题思路:
令i从1到N;

把所有 1/i 的商加起来;

输出和,保留六位小数;

注意事项:
把变量范围定义得大一些,避免出错;

参考代码:

#include <stdio.h>
int main()
{
    int        N;
    long double    sum = 0;
    scanf( "%d", &N );
    for ( long double i = 1; i <= N; i++ )
        sum += (1 / i);

    printf( "%.6LF", sum );
    return(0);
}

别忘点赞哦-.-

点赞(16)
 

0.0分

23 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 12 条评论

时间之尘 1年前 回复TA
@cxt 似乎是要把float改成double,不然精度不够
H2330819076 1年前 回复TA
@cxt 为什么呀?我的也是这样。
cxt 1年前 回复TA
@归元 把t前面的float换成double 我的70就是这样
cxt 1年前 回复TA
@归元 把t前面的float换成double 我的70就是这样
cxt 1年前 回复TA
@cxt 找到了
cxt 1年前 回复TA
#include<stdio.h>
int main()
{
	int n,i=1;
	float t=0;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		t=t+1.0/i;
	}
	printf("%0.6f",t);
}
这个只有70  看不出来哪里错了 希望大佬解答一下。谢谢
归元 1年前 回复TA
#include <stdio.h>
int main()
{
    int n;
    int a = 1;
    float t;
    scanf("%d", &n);
    t = 0.000000;
    while (a <= n )
    {
        t = t + 1.0 / a;
        a++;
    }
    printf("%.6f", t);
    return 0; 
}
这个只有70分,不知道哪里出错了
好好玩下去 2年前 回复TA
n=int(input())
t=0
for i in range(1,n+1):
    tem=float(1/i)
##    print(tem)
    t=t+tem
print('%.6f'%t)
居然错了
KK 2年前 回复TA
@飞越的心 一个整形除以一个浮点型结果为浮点型,保证数据的精度不丢失
新城已无旧少年 3年前 回复TA
@飞越的心 用int的话你就写1.0/i也行