当前位置: 代码迷 >> C语言 >> [求助]输入类型
  详细解决方案

[求助]输入类型

热度:329   发布时间:2007-05-28 08:01:46.0
[求助]输入类型

本人新入门菜鸟一只,前来求助,
作业要求计算Fibonacci number,
如果input是数字,正常计算,
如果input是字母,或其他非数字符号,则反馈wrong input,并且重新运行程序,
我想问下,C里面里,是如何分辨是不是数字的??

问题可能比较菜,大家包含。。。

搜索更多相关的解决方案: 类型  输入  

----------------解决方案--------------------------------------------------------

大家帮帮忙阿~~~~~


----------------解决方案--------------------------------------------------------
main()
{long f1,f2;
int i,n;
f1=1;f2=1;
scanf("%d",&n);
printf("you input number is:\n");
for(i=0;i<=n;i++)
{printf("%ld %ld",f1,f2);
if(i%2==0)printf("\n");
f1=f1+f2;
f2=f1+f2;}
}


----------------解决方案--------------------------------------------------------
楼上的好象不是吧
Fibonacci数列好象是说如果f(0)==0;f(1)==1;当n>1时,f(n)=f(n-1)+f(n-2);下面是我的一个程序,作用是求出f(n);
要想打印出f(0)到f(n)的所有数,可以用一个循环反复调用f(n);
#include <ctype.h>
#include <stdio.h>
#include <conio.h>
int f(int n)
{
int result;
if(0==n)
result= 0;
else if(1==n)
result= 1;
else if(n>1)
{
result=f(n-1)+f(n-2);
n--;
}
return result;
}
/*我用下面的函数来判断用户的输入是不是数字*/
int isint(char *n)
{
int m=-1,i=0;
for(;n[i]!='\0';i++)
{
if(!isxdigit(n[i])) return -1;
else m=m*10+n[i]-'0';
}
return m;
}

void main()
{
int result=0;
char n[10];
int m=0;
IFERROR: printf("input an integer:");
gets(n);
m=isint(n);
if(m!=-1)
{
result=f(m);
printf("\nthe result is :%d\n",result);
}
else
{
printf("error input\n ");
goto IFERROR;
}
getch();
}

[此贴子已经被作者于2007-5-28 18:48:34编辑过]


----------------解决方案--------------------------------------------------------
#include<stdio.h>
int main()
{
int a,b;
while(1)
{ b=scanf("%d",&a);
if(b==1)
{printf("%d\n",a);
break;}
else
{fflush(stdin);
printf("return\n");}
}
return 0;
}
----------------解决方案--------------------------------------------------------
以下是引用无玩过界在2007-5-28 18:30:33的发言:
fflush(stdin);

能解释下什么意思吗?


----------------解决方案--------------------------------------------------------
  相关解决方案