我一直在编写Fibonacci序列的代码(迭代地)。它扫描一个数字n,它输出F(n)直到我输入-1。问题是首先,我需要检查数字是否不是整数。如果它不是整数,则应输出“error”。
#include<stdio.h>
#include<ctype.h>
int main(){
float n=0;
int x=0,ver=0,Fn=0,last1=0,last2=0;
scanf("%f",&n);
ver=n;
while(n!=-1){
if(n-ver!=0 || !isdigit(ver)){
printf("Error\n");
}
else if(n==1 || n==2){
printf("1\n");
} else{
last1=1;
last2=1;
for(x=3;x<=n;x++){
Fn=last1+last2;
last1=last2;
last2=Fn;
}
printf("%d\n",Fn);
}
getchar();
scanf("%f",&n);
ver=n;
}
return 0;
}
我尝试过使用isdigit和!isdigit,但我仍然输出错误的输出。当我输入.11 $,1.-,1.23,KDhf等信息时,它应输出错误。
答案 0 :(得分:0)
要查找斐波那契数字,您不需要n
为float
类型。您可以使用任何整数类型。
要查找号码是否已成功扫描,请检查scanf()
的返回值。
int n = 0;
if (scanf("%df",&n) != 1) {
printf("Error\n");
exit(EXIT_FAILURE);
}
删除此部分:
if(n-ver!=0 || !isdigit(ver)){
printf("Error\n");
}
isdigit()
只能处理一位数字。