mooc习题7-34 求分数序列前N项和
我的代码(较大N时编译不通过):
#include <stdio.h>
int main()
{
int i=1;
double sum=0;
int n;
double a;
int b,c;
b=2;
c=1;
double temp;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
a=(double)b/c;
temp=b;
b=b+c;
c= temp;
sum=sum+a;
}
printf("%.2lf",sum);
}
我修改后的代码:
#include <stdio.h>
int main()
{
int i=1;
double sum=0;
int n;
double a;
double b,c;
b=2;
c=1;
double temp;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
a=b/c;
temp=b;
b=b+c;
c= temp;
sum=sum+a;
}
printf("%.2lf",sum);
}
将a,b转换为double类型后,输入较大的N也能编译通过了。而强制类型转换却不能做到这一点,之后写程序我要注意到强制类型转换的局限性,还是多用浮点数吧。