C语言s=2/1+3/2+5/3+8/5+....前20项的和
1.#include<stdio.h>voidmain(){inta,c,n;floatt,sum,b;//注意这里的b和下面的b的位置sum=0;a=1;b=2;for...
1.#include<stdio.h>
void main()
{
int a,c,n;
float t,sum,b;//注意这里的b和下面的b的位置
sum=0;
a=1;
b=2;
for (n=1;n<21;n++)
{
t=b/a;
c=a+b;
sum=sum+t;
a=b;
b=c;
}
printf("%f\n",sum);
}
2.#include<stdio.h>
void main()
{
int a,b,c,n;//把b放在这里为什么不正确?为什么要把b放在float哪里?求解析!!!
float t,sum;
sum=0;
a=1;
b=2;
for (n=1;n<21;n++)
{
t=b/a;
c=a+b;
sum=sum+t;
a=b;
b=c;
}
printf("%f\n",sum);
} 展开
void main()
{
int a,c,n;
float t,sum,b;//注意这里的b和下面的b的位置
sum=0;
a=1;
b=2;
for (n=1;n<21;n++)
{
t=b/a;
c=a+b;
sum=sum+t;
a=b;
b=c;
}
printf("%f\n",sum);
}
2.#include<stdio.h>
void main()
{
int a,b,c,n;//把b放在这里为什么不正确?为什么要把b放在float哪里?求解析!!!
float t,sum;
sum=0;
a=1;
b=2;
for (n=1;n<21;n++)
{
t=b/a;
c=a+b;
sum=sum+t;
a=b;
b=c;
}
printf("%f\n",sum);
} 展开
11个回答
展开全部
因为t是浮点型数据,如果b和a都是整形数据,结果下取整,t得不到小数,
你可以把b定义成int ,但是t = b*1.0/a;
归根结底、保证 t 是小数才行呦亲~
你可以把b定义成int ,但是t = b*1.0/a;
归根结底、保证 t 是小数才行呦亲~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
丢失精度啊 int的a b b/a 跟 float 的结果不一样
第一个程序b/a由于b是float 所以会隐式转换结果为float
而 第二个 b/a还是int 举个例子 5/2 =2 没有小数部分 丢失了
第一个的话就会是2.5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
void main(void){
int a,b,i;
double sum,c;
for(a=b=1,sum=i=0;i<20;i++){
c=a+b;
a=b;
b=c;
sum+=c/a;
}
printf("%f\n",sum);
}
#include "stdio.h"
void main(void){
int a,b,i;
double sum,c;
for(a=b=1,sum=i=0;i<20;i++){
c=a+b;
a=b;
b=c;
sum+=c/a;
}
printf("%f\n",sum);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
int main()
{
int f1[21]={0,1,2};
int f2[21]={0,2,3};
int i;
for(i=3;i<21;i++)
{
f1[i]=f1[i-1]+f1[i-2];
f2[i]=f2[i-1]+f2[i-2];
}
double sum;//用double精确一些的
sum = 0;
for (k = 1; k <=20; k++)//循环前二十项加起来
{
sum += ((float)f1[i])/((float)f2[i]);//这里多加括号保险一些的
}
printf("sum = %.2lf\n", sum);
return 0;
}
int main()
{
int f1[21]={0,1,2};
int f2[21]={0,2,3};
int i;
for(i=3;i<21;i++)
{
f1[i]=f1[i-1]+f1[i-2];
f2[i]=f2[i-1]+f2[i-2];
}
double sum;//用double精确一些的
sum = 0;
for (k = 1; k <=20; k++)//循环前二十项加起来
{
sum += ((float)f1[i])/((float)f2[i]);//这里多加括号保险一些的
}
printf("sum = %.2lf\n", sum);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
main()
{
int a,b,i,t;
double sum,x;
a = 1;
b = 1;
sum = 1.0;
for(i = 1;i < 20;i++){
x = b /(double)(a + b);
sum += x;
t = b;
b = a + b;
a = t;
}
printf("Total:%f",sum);
getch();
}
稍微做了修改
{
int a,b,i,t;
double sum,x;
a = 1;
b = 1;
sum = 1.0;
for(i = 1;i < 20;i++){
x = b /(double)(a + b);
sum += x;
t = b;
b = a + b;
a = t;
}
printf("Total:%f",sum);
getch();
}
稍微做了修改
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询