斐波那契数!如果一直都是假的

fud*_*din 1 c fibonacci

我做了一个程序来查找一个数字是否属于斐波那契系列,如果它确实是什么位置.当我输入一个数字时,如果条件出错了.

#include<stdio.h>
#include<conio.h>
#include<math.h>
void main(void)
{
    int i,x=1,y=1,z,num;
    clrscr();
    printf("Enter a number to find in fibonacci series:");
    scanf("%d",&num);
    /*to find if the number is a part of fibonacci series or not*/
    if((isdigit(sqrt(5*num*num+4)))||(isdigit(sqrt(5*num*num-4))))  //<-- this if!
    {//belongs to fibo!
        for(i=1;    ;i++)
        {
            if(x==num)
            break;
            z=x+y;
            x=y;
            y=z;
        }
        printf("%d is the %d term of fibonacci series.",num,i);
    }
    else
        printf("Dear user,The entered number is not a part of the fibonacci series.");

    getch();
}
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 7

你误解了这个isDigit功能.

isDigit 采用ASCII字符代码,如果它代表十进制数字,则返回true.

您想检查double返回的sqrt是否是整数.

  • 嗯,你错了.要检查数字是否为整数,可以编写一个函数将其强制转换为`(int)`并检查它是否等于原始值. (3认同)