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的数,提示我要重新输入这是为什么? 展开
{
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的数,提示我要重新输入这是为什么? 展开
2个回答
展开全部
isalnum isdigit函数是判断char型的,
char型单个字符 明白?
你用float型带入,它会将它转换成int数字,再按照ASCII 吗对照表转换成相对应的字符来判断,
你要检查输入的是否是数字就不应该用scanf("%f",&number);
如果是非数字,你程序直接就报错了,根本不会判断
char型单个字符 明白?
你用float型带入,它会将它转换成int数字,再按照ASCII 吗对照表转换成相对应的字符来判断,
你要检查输入的是否是数字就不应该用scanf("%f",&number);
如果是非数字,你程序直接就报错了,根本不会判断
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询