快疯了。。。为啥这个代码运行不正常??跪拜求助!!!
高手帮忙看一下!第23行 printf("%d",isdigit(xt));
运行时发现如果输入的x位数为4位以下的话,isdigit(xt)的值总是打印为0,也就是说,只有输入四位数或更大的数才不为0。。。难道3位数就不是数字了吗?我输入9、99、999都不行!为啥啊谁能告诉我!!!
拜托了!4月就考三级了啊啊啊啊啊
#include <stdio.h>
#include <ctype.h>
int op;
float x,y,res;
int error_detect(int x);
main()
{
int xt=0;
puts("This is a calculator program.");
puts("Tip: To do subtration or division work, the first \
number \nwill be used as minuend or dividend, and \nthe second \
number as subtrahend or divisor.");
do
{
puts("Enter the first number:");
scanf("%f",&x);
xt=(long)x;
printf("%d",xt);
printf("%d",isdigit(xt));
if(error_detect(xt)==0)
continue;
puts("Enter an operation please:");
puts("1. Add\n2. Minus\n3. multiply\n4. Divide\n5. Quit");
scanf("%d",&op);
if(error_detect(op)==0)
continue;
puts("Enter the second number:");
scanf("%f",&y);
if(error_detect(y)==0)
continue;
switch(op)
{
case 1:
{
res=x+y;
break;
}
case 2:
{
res=x-y;
break;
}
case 3:
{
res=x*y;
break;
}
case 4:
{
if(y!=0.00)
{
res=x/y;
}else{
puts("Error. Please input a divisor other than zero.");
};
break;
}
case 5:
{
exit(0);
break;
}
default:
{
puts("Input Error.");
break;
}
}
printf("The result is %f",res);
}while(1);
}
int error_detect(int temp)
{
int err=0;
if(isdigit(temp))
{
err=1;
}else{
puts("Input Error. Please input numbers.");
err=0;
};
return err;
}
第23行 printf("%d",isdigit(xt));
运行时发现如果输入的x位数为4位以下的话,isdigit(xt)的值总是打印为0,也就是说,只有输入四位数或更大的数才不为0。。。为啥啊谁能告诉我!!!
拜托了!4月就考三级了啊啊啊啊啊
[[it] 本帖最后由 duanjingyu 于 2008-3-22 21:04 编辑 [/it]]