题解 | #实现简单计算器功能#

实现简单计算器功能

http://www.nowcoder.com/practice/e7c08272a4b7497fb990ce7abb1ee952

题意整理。

  • 键盘输入一个字符串,包括一个运算方式以及两个数,以空格隔开。
  • 解析字符串中的内容,并做相应的运算。

方法一(字符串分割)

1.解题思路

  • 将原字符串按空格分割,用op存储运算符,num1存储第一个数,num2存储第二个数。
  • 然后根据op的类型,进行相应的处理。如果是加法,则将num1与num2相加,如果是减法,则将num1与num2相减,如果是乘法,则将num1与num2相乘,如果是除法,则将num1与num2相除。

图解展示: alt

2.代码实现

#include <iostream>
#include <cstring>
using namespace std;

int main() {

    char str[100] = { 0 };
    cin.getline(str, sizeof(str));

    char* msg[30]={str,nullptr};
    int i=0;
    //将原字符串按空格分割
    while((msg[i]=strtok(msg[i]," "))&&++i);
    //存储运算符
    char* op=msg[0];
    //存储整数1,利用atoi将字符串类型转为整型
    int num1=atoi(msg[1]);
    //存储整数2,利用atoi将字符串类型转为整型
    int num2=atoi(msg[2]);
    
    //如果是加法,则将num1与num2相加
    if(strcasecmp(op, "add")==0){
        cout<<num1+num2<<endl;
    }
    //如果是减法,则将num1与num2相减
    else if(strcasecmp(op, "sub")==0){
        cout<<num1-num2<<endl;
    }
    //如果是乘法,则将num1与num2相乘
    else if(strcasecmp(op, "mul")==0){
        cout<<num1*num2<<endl;
    }
    //如果是除法,则将num1与num2相除
    else if(strcasecmp(op, "div")==0){
        //除数为0,输出"Error"
        if(num2==0){
            cout<<"Error"<<endl;
        }
        else{
            cout<<num1/num2<<endl;
        }
    }

    return 0;
}

3.复杂度分析

  • 时间复杂度:只需分割三个字符串,所以时间复杂度为O(1)O(1)
  • 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)O(1)
xqxls的题解 文章被收录于专栏

牛客题解

全部评论

相关推荐

01-30 22:03
门头沟学院 Java
用微笑面对困难:我滴妈,【俩月】【实习】【主管】仨debuff吃满了,独立设计开发的项目写了绝大占比的运营板块,你独立开发,那维护、问题复盘、日志更新、bug、策划书全是自己整的? 不建议写那么大,可以从小出发更容易
点赞 评论 收藏
分享
03-03 23:42
复旦大学 Java
tongx_:闹呢,这找不到其他人还活不活
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
3498次浏览 43人参与
# HR最不可信的一句话是__ #
1044次浏览 32人参与
# 巨人网络春招 #
11509次浏览 224人参与
# 春招至今,你的战绩如何? #
15286次浏览 141人参与
# AI面会问哪些问题? #
916次浏览 22人参与
# 你的实习产出是真实的还是包装的? #
2907次浏览 52人参与
# 米连集团26产品管培生项目 #
7200次浏览 225人参与
# 沪漂/北漂你觉得哪个更苦? #
1401次浏览 40人参与
# 你做过最难的笔试是哪家公司 #
1181次浏览 21人参与
# AI时代,哪个岗位还有“活路” #
2751次浏览 50人参与
# XX请雇我工作 #
51153次浏览 171人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7987次浏览 43人参与
# 简历第一个项目做什么 #
32109次浏览 359人参与
# 简历中的项目经历要怎么写? #
310971次浏览 4261人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152861次浏览 889人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187569次浏览 1123人参与
# AI时代,哪些岗位最容易被淘汰 #
64610次浏览 870人参与
# 如果重来一次你还会读研吗 #
229995次浏览 2011人参与
# 投格力的你,拿到offer了吗? #
178289次浏览 891人参与
# 你怎么看待AI面试 #
180721次浏览 1301人参与
# 正在春招的你,也参与了去年秋招吗? #
364274次浏览 2641人参与
# 腾讯音乐求职进展汇总 #
160837次浏览 1114人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务