输入判断的问题,希望高手给与帮助。
#include "stdio.h" #include "conio.h"
long shulu1(long i)
{
printf("请输入第一个整数:");
scanf("%d",&i);
return(i);
}
long shulu2(long i)
{
printf("请输入第二个整数:");
scanf("%d",&i);
return(i);
}
void main()
{
long m,n,i,a,t,b;
printf("请输入两个证整数,求其最大公约数和最小公倍数,回车键结束输入。\n");
loo1:
m=shulu1(m);
if(m>0)
{
loo2:
n=shulu2(n);
if(n<0)
{
printf("错误!请重新输入。\n");
goto loo2;
}
}
else
{
printf("错误!请重新输入。\n");
goto loo1;
}
a=m;
i=n;
while(i!=0)
{
t=a%i;
a=i;
i=t;
}
printf("最大公约数:%d\n",a);
printf("最小公倍数:%d\n",m*n/2);
b=getch();
}
我现在能实现整数和负数的判断,如果输入的不是数字而是字符,现在这个输入判断就会变成死循环,我尝试过把输入的类型改称字符类型,但是有限制了输入的数字范围只能是0到9之间的数字。
希望能有高手指点一下。需要怎么做才能做到,输入字符或者其他符号,能从新输入数值而不是出现死循环。