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

我第一次编程,不知道这么写对不对,请大家帮我看看
#include <stdio.h>
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结果是什么?

这个我看,是对的
如果换成 ++n ;也是一样的
补充;
n++;是一个表达式,
如果开始n=1;
那么运行以后这个表达式等于1,n=2

++n;也是一个表达式,
如果开始n=1;
那么运行以后这个表达式等于2,n=2
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-05
在本程序中,两者结果一样!
n++是先处理n再加1,而++n则是n先加1再参与运算
以上是针对n++,++n与其他算术运算或逻辑运算混合使用时的,两者单独作为一条语句时,都是给n加1
第2个回答  2011-04-05
应该对的。在这个例子中n++ 和 ++n 的效果相同
第3个回答  2011-04-05
我把程序给你改了一点:
#include <stdio.h>
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是先执行自增运算再执行语句,在本程序中两者没有区别。
第4个回答  2011-04-05
当定义为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,虽然在这道题里面用处不大,但是楼主以后会发现第二个语句的优势的。追问

大哥,我举了个简单的例子,
n=1 n=1
s=n s=n
++n n++ 这里有区别么?

追答

没有区别,s等于1,n等于2,有区别的是这样的:
下面两个语句:
int n=1;
if(++n)>=2
printf("a");

int n=1;
if(n++)>=2
printf("a");

第一个就可以输出a,第二个不能输出a.

本回答被提问者采纳
相似回答