【发布时间】:2020-12-23 02:14:27
【问题描述】:
我正在编写一个程序来识别用户输入的数字是否是斐波那契数。该程序运行良好,它完成了它需要做的事情,但我试图让程序说当用户输入一个不是一个数字时它不是一个斐波那契数,它不工作,我'我不确定我需要调整什么。
代码如下:
#include <stdio.h>
int main() {
int number;
int flag = 0;
int a = 0;
int b = 1;
int NextTerm;
printf("this is a program to determine if a number is a Fibonacci number\n");
printf("please enter your number\n");
printf("the number you entered is : ");
scanf("%d", &number);
while (true) {
NextTerm = a + b;
a = b;
b = NextTerm;
if (a == number) {
flag = 1;
break;
}
}
if (flag == 1) {
printf("The number you entered which is %d is a Fibonacci Number\n", number);
} else
if (flag == 0) {
printf("The number you entered which is %d is not a Fibonacci Number\n", number);
}
return 0;
}
【问题讨论】:
-
当
NextTerm大于用户输入的数字时,还需要break循环。 -
不工作是否意味着您陷入了无限循环?
-
你应该正确缩进你的代码以便它可读。可读的代码使您更容易在代码中找到错误。并正确命名您的变量。既然可以叫
isFibonacciNumber,为什么还要叫它flag? -
不,我的意思是卡住,因为当数字不是斐波那契数时,它不会打印,循环工作正常
-
@Jabberwocky 对不起,我还是个初级程序员