1057:简单计算器

本文介绍了一个简单的计算器程序的实现,支持加、减、乘、除四种运算。程序通过判断输入的操作符来执行相应的计算。当遇到除数为0时,程序会输出'Dividedbyzero!';如果操作符无效,程序则输出'Invalidoperator!'。文章提供了C++和C语言的参考代码,并强调了输出结果中感叹号的必要性。
摘要由CSDN通过智能技术生成

1057:简单计算器

时间限制: 1000 ms    内存限制: 65536 KB

【题目描述】

一个最简单的计算器,支持+, -, *, / 四种运算。仅需考虑输入输出为整数的情况,数据和运算结果不会超过int表示的范围。然而:

  1. 如果出现除数为0的情况,则输出:Divided by zero!

  2. 如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!

【输入】

输入只有一行,共有三个参数,其中第1、2个参数为整数,第3个参数为操作符(+,-,*,/)。

【输出】

输出只有一行,一个整数,为运算结果。然而:

 1.如果出现除数为0的情况,则输出:Divided by zero!

   2.如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!

【输入样例】

1 2 +

【输出样例】

3

思路分析:

本题主要对输入符号的判断。

如果符号是加号'+',则输出x+y。

否则,如果符号的是减号'-',则输出x-y。

否则,如果符号是乘号'*',则输出x*y。

否则,如果符号是除号'/'和y=0,则输出"Divided by zero!"。

否则,如果符号是除号'/',则输出x/y。

否则,符号不正确,输出"Invalid operator!"。

数据类型:题目已保证输入和输出的皆是整数,所以可选择int类型。

易错点:

题目中提示输出Divided by zero!和Invalid operator!,但没有用双引号,给人误以为只输出英文,而不输出最后的感叹号。而且样例中也没有提示。而实际上,该感叹号也是要输出的。

求解过程:

声明2个int类型变量x和y。

声明1个char类型变量c。

输入2个整数和1个字符分别给变量x、y和c。

如果变量c等于加号'+',则输出x+y。

否则,如果变量c等于减号'-',则输出x-y。

否则,如果变量c等于乘号'*',则输出x*y。

否则,如果变量c等于除号'/'和y等于0,则输出"Divided by zero!"。

否则,如果变量c等于除号'/',则输出x/y。

否则,变量c是其他字符,输出"Invalid operator!"。

参考代码 - C++:

// 方法1(switch方法 + return 0结束)

#include <iostream>
using namespace std;
int main()
{
    int x, y;
    char c;
    cin >> x >> y >> c;
    switch (c)
    {
        case '+': cout << x + y; break;
        case '-': cout << x - y; break;
        case '*': cout << x * y; break;
        case '/':
            switch (y)
            {
                case 0: cout << "Divided by zero!"; return 0;
                default:cout << x / y; return 0;
            }
        default: cout << "Invalid operator!"; break;
    }
    return 0;
}
// 方法2(switch方法 + break结束)
#include <iostream>
using namespace std;
int main()
{
    int x, y;
    char c;
    cin >> x >> y >> c;
    switch (c)
    {
        case '+': cout << x + y; break;
        case '-': cout << x - y; break;
        case '*': cout << x * y; break;
        case '/':
            switch (y)
            {
                case 0: cout << "Divided by zero!"; break;
                default:cout << x / y;
            }
            break;
        default: cout << "Invalid operator!"; break;
    }
    return 0;
}
// 方法3(if方法)
#include <iostream>
using namespace std;
int main()
{
    int x, y;
    char c;
    cin >> x >> y >> c;
    if (c == '+') cout << x + y;
    else if (c == '-') cout << x - y;
    else if (c == '*') cout << x * y;
    else if (c == '/' && y == 0) cout << "Divided by zero!";
    else if (c == '/') cout << x / y;
    else cout << "Invalid operator!";
    return 0;
}
// 方法4(if+switch方法)
#include <iostream>
using namespace std;
int main()
{
    int x, y;
    char c;
    cin >> x >> y >> c;
    if (c == '+' || c == '-' || c == '*' || c == '/')
        switch (c)
        {
            case '+':cout << x + y;break;
            case '-':cout << x - y;break;
            case '*':cout << x * y;break;
            case '/':
                if (y == 0)
                    cout << "Divided by zero!";
                else
                    cout << x / y;
        }
    else
        cout << "Invalid operator!";
    return 0;
}

参考代码 - C语言:

#include <stdio.h>
int main()
{
    int x, y;
    char c;
    scanf("%d %d %c", &x, &y, &c);
    if (c == '+') printf("%d", x + y);
    else if (c == '-') printf("%d", x - y);
    else if (c == '*') printf("%d", x * y);
    else if (c == '/' && y == 0) printf("Divided by zero!");
    else if (c == '/') printf("%d", x / y);
    else printf("Invalid operator!");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值