#include
main()
{
float a[21]={0},b[21]={0},sum=0;
int i;
a[0]=2;
b[0]=1;
for(i=0;i<=19;i++)
{
sum+=a[i]/b[i];
a[i+1]=b[i]+a[i];
b[i+1]=a[i];
}
printf("sum=%f\n",sum);
}
#include
void main()
{
float a[21],b[20],a[0]=1,a[1]=2,sum;int i;
for(i=0;i<20;i++)
{
a[i]=a[i+2]-a[i+1];
b[i]=a[i+1]/a[i];
sum=sum+b[i];
}
printf("%d",sum);
}
当定义为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,虽然在这道题里面用处不大,但是楼主以后会发现第二个语句的优势的。