荣耀软件开发工程师笔试-嵌入式 9-5

《嵌入式软件开发笔试与面试手册》https://blog.nowcoder.net/zhuanlan/jvN8gj

《嵌入式软件笔试-2023年真题汇总》https://blog.nowcoder.net/zhuanlan/0oDWVm

算式求解

要开发一款教育类App,帮助幼儿在识数阶段做一百以内自然数[0.99]的加减法。

屏慕上会显示“1”“2”“3”“4””“5”“6”“7”“8”“9”“0”“+”“-”“=”这些按钮,用户在按了若工按钮之后,如果按了“=”,则会把按“=”之前的字符串作为一个算式,计算结果。

中间结果或最后结果可以为负数。

输入描述

输入为一个字符串,形如“23+86-6+37+24-8-13”

输入字符串中保证:

1.不会包含除“1”“2”“3”“4”“5”“6”“7"8”“9"“0”“+"“="之外的字符

2.长度不为0

3.不以“+”“-”开始,不以“+"“-”结束

4.不会出现连续两个或两个以上"+"

5.不会出现连续两个或两个以上"-"

6."+""-"不会相邻

7.操作数为范围为[099]

8.一定包含运算符 (“+”“-”)

输出描述

算式结果,一个整数。

示例1

输入

1+2+99-10-10

输出

82

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int calculate(const string& s) {
    int result = 0;
    int num = 0;
    char op = '+';
    stringstream ss(s);

    while (ss >> num) {
        if (op == '+') {
            result += num;
        } else if (op == '-') {
            result -= num;
        }
        ss >> op;
    }

    return result;
}

int main() {
    string s;
    cin >> s;
    cout << calculate(s) << endl;
    return 0;
}

 

找出升序数组中和为给定值的两个数字

输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。

如果有多对数字的和等于输入的数字,输出找到的第一对即可。

输入描述

第一行输入一个按升续排序过的整数数组,数组元素不可重复,数组最大不超过1000个元素,起始和结束用中括号。

第二行输入一个整数,表示要在第一行数组中要查找的两个数字的和。

输出描述

输出一行三个整数,第一个表示结果是否正常(0表示异常或未找到,1表示正常),第二个对应找到的数组索引小的数字,第三个对应找到的数组索引大的数字。

三个整数用单个空格隔开。

如果结果异常或未找到,后两个数字返回均为0

示例1

输入

1 2 4 7 11 15

6

输出

1 2 4

#include <iostream>
#include <vector>

using namespace std;

vector<int> twoSum(vector<int>& numbers, int target) {
    int left = 0, right = numbers.size() - 1;
    while (left < right) {
       

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏主要发布嵌入式软件开发相关岗位2023年(2024届)的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。

全部评论

相关推荐

9 28 评论
分享
牛客网
牛客企业服务