C语言程序2/1,3/2,5/3,8/5,13/8,21/13求这个数列前20项之和
答案:5 悬赏:60
解决时间 2021-11-07 12:47
- 提问者网友:单纯说谎家
- 2021-11-07 04:55
我第一次编程,不知道这么写对不对,请大家帮我看看
#include
void main()
{
int a=2,b=1,s=0,n=1,c;
while(n<=20)
{
s=s+a/b;
c=a;
a=a+b;
b=c;
n++;
}
printf("前20项之和为:%d\n",s);
}
如果n++换成++n结果是什么?
最佳答案
- 二级知识专家网友:瘾与深巷
- 2021-11-07 05:49
当定义为int形的变量的时候,a/b所得到的值是取整的,也就是说题目中的3/2被计算机取值为2了,为了防止这一机器错误,应该将a,b,c,s都定义为float形变量。
运行++n过后++n的值等于原来的n+1,n的值等于原来的n+1,运行n++过后,n++等于原来的n,n等于原来的n+1,具体到这里,是不会影响这个程序的运算结果的。
最后,语句中的s=s+a/b可以简写为s+=a/b,虽然在这道题里面用处不大,但是楼主以后会发现第二个语句的优势的。
全部回答
- 1楼网友:星痕之殇
- 2021-11-07 10:02
我把程序给你改了一点:
#include
void main()
{
float a=2,b=1,s=0,c;
int n=1;
while(n<=20)
{
s=s+a/b;
c=a;
a=a+b;
b=c;
n++;
}
printf("前20项之和为:%f\n",s);
}
n++事先执行语句再执行自增运算,++n是先执行自增运算再执行语句,在本程序中两者没有区别。
- 2楼网友:情战辞言
- 2021-11-07 09:05
这个我看,是对的
如果换成 ++n ;也是一样的
补充;
n++;是一个表达式,
如果开始n=1;
那么运行以后这个表达式等于1,n=2
++n;也是一个表达式,
如果开始n=1;
那么运行以后这个表达式等于2,n=2
- 3楼网友:duile
- 2021-11-07 07:42
#include
int main()
{
float a,b,c,s=0;
int i=20;
a=1;
b=2;
while(i--)
{
s+=b/a;
c=a;
a=b;
b=b+c;
}
printf("%.2f",s);
return 0;
}
- 4楼网友:woshuo
- 2021-11-07 06:42
在本程序中,两者结果一样!
n++是先处理n再加1,而++n则是n先加1再参与运算
以上是针对n++,++n与其他算术运算或逻辑运算混合使用时的,两者单独作为一条语句时,都是给n加1
我要举报
大家都在看
推荐资讯