中易网

C语言程序2/1,3/2,5/3,8/5,13/8,21/13求这个数列前20项之和

答案:5  悬赏:60  
解决时间 2021-11-07 12:47
我第一次编程,不知道这么写对不对,请大家帮我看看
#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结果是什么?
最佳答案
当定义为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,虽然在这道题里面用处不大,但是楼主以后会发现第二个语句的优势的。
全部回答
我把程序给你改了一点: #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是先执行自增运算再执行语句,在本程序中两者没有区别。
这个我看,是对的 如果换成 ++n ;也是一样的 补充; n++;是一个表达式, 如果开始n=1; 那么运行以后这个表达式等于1,n=2 ++n;也是一个表达式, 如果开始n=1; 那么运行以后这个表达式等于2,n=2
#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; }
在本程序中,两者结果一样! n++是先处理n再加1,而++n则是n先加1再参与运算 以上是针对n++,++n与其他算术运算或逻辑运算混合使用时的,两者单独作为一条语句时,都是给n加1
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
在网上同样品牌的轮滑鞋价格怎么相差近百元?
不同多功能涂料品牌产品价格
自己在家软化头发,软化前要洗头吗
加油站(070乡道)地址在什么地方,想过去办事
阳朔世外桃源景区在哪里?
天津名小吃有哪些?
皇亭体育馆网球场地址在哪,我要去那里办事
2015年国家扶持力度最大的小微型企业项目有哪
初夜找不到地方怎么办
最好的茶叶品牌,什么茶叶最好?
洗牙疼不疼?
拥有的排毒养颜秘诀是什么呢?
基督教追思会是否可以不挂逝者照片
宝宝口里白白的,一粒粒的是什么
用甲醇做燃料可行吗?
推荐资讯
把EXCEL里面的文件怎么导入到WORD里面?如果在
程咬金做了几天皇帝
老年人脚肿是怎么了,有什么预兆
都有谁懂电饭煲鸡蛋糕的做法
素鱼馅饺子的做法谁有?
集成吊顶十大著名品牌有哪些?
中年人用什么牌子眼霜好
美芬美时minmis面膜的功效如何啊?
贵阳评估公司评估车价怎么收费
元旦三天假去京郊哪里玩好?
养尊处优的尊是什么意思
天才小熊猫,为什么你一直背向大家,难道是因
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?