求助,C语言循环控制07讲里一道课后题
本帖最后由 every-day 于 2018-8-16 17:44 编辑关于斐波那契数列,输出制定位置的程序。程序无法运行。
希望前辈们可以帮忙看看问题所在
1
1 //第一组
2
3 //第二组
5
8 //……
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
#include <stdio.h>
void main()
{
long int f1,f2; //参考小甲鱼老师的原始程序
int i,x; //声明变量x用来表示指定位置。F(x)=?
printf("请输入大于2的一个数:"); //在这里我先剔除了初始值,F(1)=1,F(2)=1;
scanf("%d",&x);
f1=f2=1; //
if(x%2==1)
{
for(i=1;i<((x+1)/2);i++) //判断x在第几组(两个数为一组),是单数还是双数。在第一组就不满足条件跳过,第二组就循环一次。
{
f1=f1+f2;
f2=f2+f1;
}
printf("F(x)=F(%d) = %12lf\n",x,f1); //单数就输出f1,eg:x=3,满足循环条件,f1=1+1=2;
}
if(x%2==0)
{
for(i=1;i<(x/2);i++)
{
f1=f1+f2;
f2=f2+f1;
}
printf("F(x)=F(%d) = %12lf\n",x,f2);
}
}
{:10_266:} #include <stdio.h>
int main() //建议写 int
{
long int f1,f2;
int i,x;
printf("请输入大于2的数字:");
scanf("%d",&x);
f1 = f2 = 1;
if(x%2 == 1)
{
for(i = 1; i < ((x+1)/2); i++)
{
f1 = f1 + f2;
f2 = f2 + f1;
}
printf("F(x) = F(%d) = %ld\n", x, f1);
}
else //if(x%2 == 0) // 其实这样就可以了
{
for(i = 1; i < (x/2); i++)
{
f1 = f1 + f2;
f2 = f2 + f1;
}
printf("F(x) = F(%d) = %ld\n", x, f2);
}
return 0; //配合 return 0 对调试有帮助
}
记得加上适当的空格 claws0n 发表于 2018-8-16 18:36
#include
int main() //建议写 int
谢谢 谢谢帮忙,我自己又修改了一下程序{:10_266:}
#include <stdio.h>
void main()
{
long int f1,f2; //参考小甲鱼老师的原始程序中声明的f1,f2。
int i,x; //声明变量x
while(1) //while循环,一直执行程序,连续输入。
{
printf("请输入x的数值:"); //
scanf("%d",&x); //接受x的数值
f1=f2=1;
if(x==1){printf("F(x)=F(1) = 1\n");continue;}
if(x==2){printf("F(x)=F(2) = 1\n");continue;}
if(x%2==1)
{
for(i=1;i<((x+1)/2);i++) //判断x在第几组(两个数为一组),是单数还是双数。在第一组就不满足条件跳过,第二组就循环一次。
{
f1=f1+f2;
f2=f2+f1;
}
printf("F(x)=F(%d) = %ld\n",x,f1); //单数就输出f1,eg:x=3,满足循环条件,f1=1+1=2;
}else
{
for(i=1;i<(x/2);i++)
{
f1=f1+f2;
f2=f2+f1;
}
printf("F(x)=F(%d) = %ld\n",x,f2);
}
}
} every-day 发表于 2018-8-17 08:49
谢谢帮忙,我自己又修改了一下程序
#include
尝试修改并完善程序,不错不错
你是想一直可以输入吧?
printf("请输入x的数值:");
while( scanf("%d", &x) != EOF)
{....
......
printf("请输入x的数值:");
}
windows? 要退出,按( ctrl + z ) == EOF
页:
[1]