c语言简单问题!求帮助。。。。。

下面是正确的代码,我想把中间变量t省略,不用中间变量!!#include"stdio.h"voidmain(){floats=0,f1=2,f2=1,sign=1,t,n... 下面是正确的代码,我想把中间变量t省略,不用中间变量!!
#include "stdio.h"
void main(){
float s=0,f1=2,f2=1,sign=1,t,n; /*累加器赋初值*/
for(n=1;n<=10;n++){ /*循环10次*/
s=s+sign*f1/f2; /*累加器当前值=累加器原来的值+新的要加的数据*/
sign *=(-1);
t=f2;
f2=f1;
f1=f1+t; /*为求下一个要加的数据做准备*/
}
printf("s=%f\n",s);
}

后面为我打的省略中间变量的代码!为什么结果不正确呢?求帮助

# include "stdio.h"
void main()
{
int t1=2,t2=1,i,k=1;
float sum=0;
for(i=1;i<=10;i++)
{
sum = sum + k*t1/t2;
t1 = t1 + t2;
t2 = t1 - t2;
k *= (-1);

}
printf("%f",sum);
}
展开
 我来答
vigoss19
2011-08-04 · TA获得超过154个赞
知道答主
回答量:75
采纳率:0%
帮助的人:64万
展开全部
前面那段代码就你写出来的部分来看,真心不敢恭维是正确的。
第二段的问题出在【sum = sum + k*t1/t2;】k*t1/t2计算后得到的结果值是整数,不会出来浮点数,该语句执行后得到的是小数点后为零的浮点数。只需要把k定义成浮点数类型(k=1.0)就解决了。
百度网友da134f4
2011-08-04 · TA获得超过183个赞
知道小有建树答主
回答量:214
采纳率:60%
帮助的人:126万
展开全部
sum = sum + k*t1/t2;——》sum = sum + k*1.0*t1/t2;
整型与浮点运算得浮点数、整型与整型运算还得整型、k*1.0就变成浮点了、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
keys_1210
2011-08-04
知道答主
回答量:15
采纳率:0%
帮助的人:17.2万
展开全部
把K,t1,t2换成float变量应该就可以了
整型数的除法和浮点数的除法结果是不一样的!
(int )3/2==1
((float)3/2>1.49999999999)&&((float)3/2<1.500000000000001)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ac1ff0c
2011-08-04 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:122
采纳率:0%
帮助的人:74.5万
展开全部
看看你的程序!!t1和t2!!是int类型!当然不对!!t1和t2是int类型相除的话...= = !如果相除的话,得到的也是int类型,是不会有小数的。原来的程序中想实现的应该是0+2+3/2+4/3.....有小数的!!当然会出错!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式