2 回答
TA贡献1853条经验 获得超18个赞
f( (isdigit(number_1)) || (isdigit(number_2)))
这里有几个错。
isdigit() 参数必须是整型,不能用于 double.
逻辑或 用得不对,要 逻辑 与 才 说得过去,你需要 number_1 和 number_2 都是数字才可以。
|| 运算,一个是数字就满足 if.
isdigit() 只能判断1个字符。
如果 输入 .2 + .3 就不能通过。
======
正确方法:
int k;
k=scanf("%lf %c %lf",&number_1,&operition,&number_2);
if (k == 3){
输入数据格式正确,进入 switch() 等 判断和计算
}
TA贡献1788条经验 获得超4个赞
你的问题还不是“scanf()把回车作为输入值的问题”,scanf()认为回车是输入的结束。
程序不能得出正确的结果,原因在于:
scanf("%lf %c %lf",&number_1,&operition,&number_2);
这时,如果你输入的第一个参数和第三个参数,如果不是数字型的就会出错。
if( (isdigit(number_1)) || (isdigit(number_2)))
也有问题,首先 isdigit()用错。函数原型为int isdigit(char c),要求参数为字符类型而不是f型。
其次(isdigit(number_1)) || (isdigit(number_2))应该是&&而不是||。
另外程序本身还存在一些问题,比如,两个实型数求余怎么求?
- 2 回答
- 0 关注
- 75 浏览
添加回答
举报