永发信息网

c语言题目,pta里说n很大则不满足(见图)

答案:2  悬赏:0  手机版
解决时间 2021-03-06 23:54
  • 提问者网友:留有余香
  • 2021-03-06 04:55
c语言题目,pta里说n很大则不满足(见图)
最佳答案
  • 五星知识达人网友:北城痞子
  • 2021-03-06 06:30
#include 
int main()

    double s=0,a=2,b=1; 
    int t,i,n; 
    scanf ("%d",&n); 
    for (i=1;i<=n;i++) 
    { 
        s=s+a/b; //将各项累加 
        t=a; 
        a=a+b; //将前一项的分子与分母之和作为下一项的分子 
        b=t; //将前一项的分子作为下一项的分母 
    } 
    printf ("%.2lf
",s); 
    return 0;
}刚才尝试将t改为double后,发现n=3000时,a,b溢出。
将程序作如下更改:
#include 
int main()

    double s=0;
    int n = 0;
    scanf ("%d",&n);
    double tmp = 2 / 1;
    while (n--)
    {
        s += tmp;
        tmp = 1 / tmp + 1;
    }
    printf("%.2lf
", s);
    return 0;
}试试~
全部回答
  • 1楼网友:走死在岁月里
  • 2021-03-06 07:38

应该是你定义的变量类型比较混乱造成的。a、b是双精度,t是整型,将双精度a的值赋给整型t,又将整型t的值赋给双精度b,太乱了。a、b就是整型。#include 
int main()

int t,i,n,a=2,b=1; 
double s=0; 
scanf ("%d",&n); 
for (i=1;i<=n;i++) 

s=s+1.0*a/b; //前面加1.0*,就不是整型运算了
t=a; 
a=a+b; 
b=t; 

printf ("%.2lf ",s); 
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯