正文

[024] 简单计算器2006-02-21 14:44:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/wentao/10332.html

分享到:

目的: 练习switch语句

题目: 设计一个简单的计算器, 完成两个数的加减乘除

--------------------------------------

#include <stdio.h>
int main()
{
    float x, y, result;
    char op;
    scanf("%f%c%f", &x, &op, &y);    /* 输入不能有空格 */
    switch (op)
    {
    case '+' : result = x + y; break;
    case '-' : result = x - y; break;
    case '*' : result = x * y; break;
    case '/' : 
        if(y == 0.0) op = '#';  /*除数不为0*/
        else result = x / y;
        break;
    default  : op = '#';           /*op不为+ - * / 时做个标记,以便最后结果的输出*/
    }
    if (op != '#')
        printf("%.2f%c%.2f=%.2f\n", x, op, y, result);
    else printf("error!\n");
    return 0;
}

运行结果:
=================================
1.25*4↙
1.25*4.00=5.00
=================================

--------------------------------------

在判断除数不为0时用到了 y == 0 ,好像听人说过, 实数之间是不能比较的, 我想可能是因为如果小数位数超过机器所能表示的长度时会进行舍去,这样机器中所存储的值会有所偏差,导致比较的结果不准。但用本程序试验了几次,好像如果进行简单的除运算没什么问题,是不是因为这时所比较的数是一个特例(即0.0)的原因呢?
    有待解决……

阅读(4249) | 评论(3)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册