永发信息网

级数求和 C语言程序

答案:6  悬赏:0  手机版
解决时间 2021-05-10 15:24
  • 提问者网友:做自己de王妃
  • 2021-05-09 15:25

已知: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;
}

帮忙看看哪里错了~

最佳答案
  • 五星知识达人网友:思契十里
  • 2021-05-09 15:35

#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;
}


全部回答
  • 1楼网友:舍身薄凉客
  • 2021-05-09 19:43

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

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

  • 2楼网友:玩世
  • 2021-05-09 19:31
饭客网络。 专业的编程团队 VIP教程免费试看!!!
  • 3楼网友:低音帝王
  • 2021-05-09 19:12

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

  • 4楼网友:几近狂妄
  • 2021-05-09 18:10

没限制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; }

帮忙看看哪里错了~

  • 5楼网友:鱼芗
  • 2021-05-09 17:04
printf("%f\n",s);//你要输出n干吗?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯