ZZULI1037: 四则运算

题目描述

给你一个简单的四则运算表达式,包含两个实数和一个运算符,请编程计算出结果

输入

表达式的格式为:s1 op s2, s1和s2是两个实数,op表示的是运算符(+,-,*,/),也可能是其他字符。注意运算符两侧各有一个空格。

输出

如果运算符合法,输出表达式的值;若运算符不合法或进行除法运算时除数是0,则输出"Wrong input!"。最后结果小数点后保留两位。

样例输入 Copy

1.0 + 1.0

样例输出 Copy

2.00

提示

除数是0,用|s2|<1e-10(即10的-10次方)判断

#include <stdio.h>  // 包含标准输入输出头文件
#include <stdlib.h> // 包含标准库头文件
#include <math.h>   // 包含数学库头文件,用于数学计算

int main() { // 主函数,程序入口
    double s1, s2, answer; // 声明两个双精度浮点数用于存储输入的数字以及计算结果
    char op;       // 声明字符变量用于存储运算符
    int result;    // 声明整型变量,用于判断输入是否合法

    // 从标准输入读取表达式,格式为 "数1 运算符 数2"
    result = scanf("%lf %c %lf", &s1, &op, &s2); // 读取两个实数和一个运算符

    // 检查输入是否有效,result 应该等于 3
    if (result != 3)
    {
        printf("Wrong input!\n"); // 如果读取不成功,输出错误信息
        return 0; // 结束程序
    }

    // 根据运算符进行不同的操作
    switch (op)
    {
    case '+': // 如果运算符是加法
        answer = s1 + s2; // 执行加法操作,并将结果赋值给 answer
        break; // 退出 switch 语句
    case '-': // 如果运算符是减法
        answer = s1 - s2; // 执行减法操作,并将结果赋值给 answer
        break; // 退出 switch 语句
    case '*': // 如果运算符是乘法
        answer = s1 * s2; // 执行乘法操作,并将结果赋值给 answer
        break; // 退出 switch 语句
    case '/': // 如果运算符是除法
        // 除法时检查除数是否接近零
        if (fabs(s2) < 1e-10) // 使用 fabs() 函数检查 s2 的绝对值是否小于 1e-10    ,1e-10是10 ^ (-10)即十的负十次方, 1e10是10 ^ 10即十的十次方
        {
            printf("Wrong input!\n"); // 如果是零,输出错误信息
            return 0; // 结束程序
        }
        answer = s1 / s2; // 执行除法操作,并将结果赋值给 answer
        break; // 退出 switch 语句
    default: // 如果运算符不是上述任何一种
        printf("Wrong input!\n"); // 输出错误信息
        return 0; // 结束程序
    }

    // 输出结果,保留两位小数
    printf("%.2lf\n", answer); // 使用 %.2lf 格式输出 answer,保留两位小数

    return 0; // 正常结束程序
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值