永发信息网

级数求和 C语言程序

答案:6  悬赏:0  手机版
解决时间 2021-05-10 15:24

已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。
现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int k,n=1;
    float s;
    s=0.0;
    scanf("%d",&k);
    while(s<=k)
    {
    s=s+(float)1/n;
    n++;
    }
    printf("%d\n",n-1);
    fflush(stdin);

    getchar();
    return 0;
}

帮忙看看哪里错了~

最佳答案

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int k,n=1;
    float s;
    s=0.0;
    scanf("%d",&k);
    while(s<=k)
    {
    s=s+(float)1/n;
    n++;
    }
    printf("%f\n",s);//你写的没错,加这个验证下吧
    printf("%d\n",n-1);
    fflush(stdin);


    getchar();
    return 0;
}


全部回答

单纯讲逻辑是对的,可是……int是有范围的,最大的int也不够你这么算的,n加着加着就成负的了,再加下去就变0直接悲剧了。

你可以在while加条件当n小于0的时候输出个什么看看。

饭客网络。 专业的编程团队 VIP教程免费试看!!!

可以执行啊,也没什么问题,有点就是fflush(stdin);  这句不是标准的,一致性不好,不过在VC6.0下可以正常执行的

没限制k的范围

#include<stdio.h> #include<stdlib.h> int main() {     int k,n=1;     float s;     s=0.0;     scanf("%d",&k);     while(s<=k)     {

if(k<1||k>15)printf("请输入适合范围的k值");break;     s=s+(float)1/n;     n++;     }     printf("%d\n",n-1);     fflush(stdin);

    getchar();     return 0; }

帮忙看看哪里错了~

printf("%f\n",s);//你要输出n干吗?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
男同学送女同学什么生日礼物比较新颖
急!!!!!河源五月天歌友会五月天会来吗
美服穿越火线登陆问题
making love out of nothing at all六线谱
酒精能去油吗,为什么酒精可以去油污
有哪位好心人帮我找一下有关人民币升值的外文
cs2 激活码
小孩放了一个暑假不肯上学该怎么办呢?
IBM内存512MB的,硬盘还都可以用多大的?
QQ炫舞购物卷放在哪里用?
帮我做个戒指图片捏?
吃橘子多了会上火吗?
怎样看好一支股票?
有伤字的网名
QQSG得陇望蜀中魔瓶
推荐资讯
word一级标题段前距 改完之后 没效果 怎么解
下面是四点的那个字怎么念?
iris是什么?
中石化中石油是怎么亏损的?
我的提问为什么不能删除
怎样才能创建家族?
我QQ怎么升级还有40多天的
告诉我下驱魔的比较好的装备是什么
怎么化解代沟呢?
谁能在QQ校友抢滩大战里送我一辆宝马啊?
烽火战国除了做任务提高声望之外 还可以做什
﹏繁花似锦丶问道帮派图标谁帮我设计个霸气点
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?