为什么每次循环 S1 的值不变啊?请高手 帮忙看看

来源:百度知道 编辑:UC知道 时间:2024/05/26 11:42:05
int main()
{
float m,n,s1,s,k;
clrscr();
s=2,m=1,n=2;
for(k=1;k<=20;k++)
{
m=n;
n=n+m;
s1=n/m;
printf("%f ",s1);
s=s+s1;
printf("s is %f\n",s);
}
return 0;
}

第一次:
m=1,n=2
m=n,则m=2,n=m+n则n=4,n/m=2;
第二次
m=2,n=4
m=n,则m=4,n=m+n则n=8,所以n/m=2

这样改一下你的程序
int main()
{
float m,n,s1,s,k;
clrscr();
s=2,m=1,n=2;
for(k=1;k<=20;k++)
{
int temp=m;
m=n;
n=n+temp;
s1=n/m;
printf("%f ",s1);
s=s+s1;
printf("s is %f\n",s);
}
return 0;
}
再运行一下

m=n;
n=n+m;
s1=n/m;

这三句逻辑好像错了 不管你的m n值为多少
第一句执行后m=n
第二句执行后n=n+m=n+n=2n
所以s1=n/m=2n/n=2
所以不便

程序帮你改过来了你自己好好看下吧
#include<stdio.h>
int main()
{
float m=1,n=2,s1,s=2,k;\\这里这初始化就行了

for(k=1;k<=20;k++)
{
m=n;
n=n+m;
s1=n/m;
}\\括号里是一个循环体
printf("%f",s1);
s=s+s1;
printf("s is %f\n",s);

re