华为软件类笔试-嵌入式软件开发 9-20

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

《软件开发笔试汇总》https://blog.nowcoder.net/zhuanlan/0oDWVm

3、简易计算器

题目描述

设计一款计算器软件,支持以下功能:

1)支持let关键字

2)支持通过let赋值表达式定义变量并初始化例如:

let var1 = 123

let var = 123

3)变量需要先定义再引用,在表达式中引用未定义的变量,则表达式的结果也是未定义的

例如:

let var1 = 1

let var2 = var1+1// var1是定义的

let var3 = var4 +1// var4是未定义的

let var4 = 1

4)支持整数类型数据,整数数据的输入格式只需要支持十进制,支持负整数,整数取值范围-2147483648<=x<=2147483647

例如:

let var3 = 10

let var3 = -10

5)支持整数的加(+)、减(-)、乘(*)、除(/)四则运算,四则运算符之间没有优先级,运算数遵循左结合律,用例不考虑括号

例如:

let var4 = 1+2*var3

上述表达式的计算顺序是,先计算1+2结果为3,再将3乘以var3得到表达式的结果。

6)支持通过out函数打印变量的值,函数参数只接受1个变量,不需要支持表达式例如:

let var4 =12

out(var4)//将会输出12

7)表达式中如果引用了未定义的变量,则表达式的结果是未定义的

8)如果计算结果溢出,则表达式结果是溢出

9)变量命名符合通用语言变量规范,必须是以下划线_或者字母开头,遇到标点符号或者空格符时结束

例如:

let_ = 1//变量名_是合法的

let _abc =1//合法

let abc = 1//合法

let Abc_1 =1/1/合法

let abc.x=1//非法

let abc,x=1//非法

let 12abc=1//非法

let abc x= 1//非法

输入

输入描述

1)每一行只有一个表达式

2)最多支持24行输入

3)每个用例输入至少有一个out输出表达式,可以有多个out输出表达书

4)每个变量只会赋值1次

例如:

let var1 = 1

let var2 = 3

let var3 = var1 + var2

out(var3)

输出

输出描述

1)每遇到1个out输出表达式,则打印输出变量的值

2)对于out行,只会输出一个out表达式的值

3)如果out输出的变量未定义,则打印<undefined>

4)如果表达式结果发生了整数上溢或者下溢,则对该变量的out输出表达式输出<underflow>或者<overflow>

5)如果表达式非法,则打印<syntax-error>

例如:

给定输入

let var1 = 1

let var2 = 3

let var3 = var1 + var2

out(var3)

out(var2)

out(var)

let var4 = -2147483649

let var5 = 2147483648

out(var4)

out(var5)

let x.y =1

输出为

4

3

<undefined>

<underflow>

<overflow>

<syntax-error>

样例1

输入:

let var1 = 1

out(var1)

输出:

1

样例2

输入:

out(var)

输出:

<undefined>

解释:输出的变是var未定义

1、丢失报文的位置

某通信系统持续向外发送报文,使用数组nums保存n个最近发送的报文,用于在报文未达到对端的情况下重发。报文使用序号sn表示,序号sn按照报文发送顺序从小到大排序,相邻报文sn不完全连续且有可能相同。报文使用循环覆盖的方式保存,即nums数组填满后,从头开始保存新的报文。假设需要重发序号为sn的报文。请找出序号为sn的报文在数组中的开始位置和结束位置。

输入

第一行输入:数组nums的大小n,取值范围[0,10000]

第二行输入:数组中的所有报文的序号sn, sn取值范围[0,100000]。

第三行输入:需要重发的报文序号sn,取值范围[0,100000]

输出

start end

说明:start和end代表需要重发的报文序号sn在数组中的起始下标和结束下标

样例1

输入:

7

0 0 1 2 2 5 6

1

输出:

2 2

解释:

nums数组大小为7

保存了7个报文,sn分别是0 0 1 2 2 5 6

sn为1的报文在数组中仅有1个,下标是2,因此输出2 2

样例2

输入:

7

0 0 1 2 2 5 6

2

输出:

3 4

解释:

nums数组大小为7

保存了7个报文,sn分别是0 0 1 2 2 5 6

sn为2的报文在数组中有2个,下标分别是3,4,因

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

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
牛客737698141号:他们可以看到在线简历的。。。估计不合适直接就拒了
点赞 评论 收藏
分享
2 14 评论
分享
牛客网
牛客企业服务