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;
}试试~
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;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯