c语言编程计算器的问题

voidoperation(void){floatnumber,number2;charsymbol;printf("\n请输入第一个数字");scanf("%f",&n... void operation (void)
{
float number,number2 ;
char symbol;
printf("\n请输入第一个数字");
scanf("%f",&number);
if(isalnum(number)||isdigit(number))
{
printf("请输入符号");
scanf("%c",&symbol);
while(scanf("%c",&symbol)==1)
{
printf("请输入第二个数字");
scanf("%f",&number2);
if(isalnum(number)||isdigit(number2))
{
if(symbol=='-')
printf("结果是%f",number-number2);
if(symbol=='+')
printf("结果是%f",number+number2);
if(symbol=='*')
printf("结果是%f",number*number2);
if(symbol=='/')
printf("结果是%f",number/number2);
break;

}
else
{
printf("请输入正确的数字");

}
}

}
else
printf("请重新运行程序");
}

但有警告warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data
F:\MyProjects\aa\aaaaaa.cpp(33) : warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data
F:\MyProjects\aa\aaaaaa.cpp(41) : warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data
F:\MyProjects\aa\aaaaaa.cpp(41) : warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data
比如我输入小于50的数,提示我要重新输入这是为什么?
展开
 我来答
ling_demort
推荐于2016-07-21 · TA获得超过3224个赞
知道小有建树答主
回答量:1512
采纳率:100%
帮助的人:1424万
展开全部
isalnum isdigit函数是判断char型的,
char型单个字符 明白?
你用float型带入,它会将它转换成int数字,再按照ASCII 吗对照表转换成相对应的字符来判断,
你要检查输入的是否是数字就不应该用scanf("%f",&number);

如果是非数字,你程序直接就报错了,根本不会判断
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梁昌仔
2015-07-22 · TA获得超过272个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:224万
展开全部
isalnum

功能:判断字符变量c是否为字母或数字
说明:当c为数字0-9或字母a-z及A-Z时,返回非零值,否则返回零。

所以 if(isalnum(number)||isdigit(number))这句话不适用于float型

所以一直是else
追问
那为什么我输入100的时候可以呢?,还有个问题我想判断是否是数字怎么办
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式