华为软件类笔试-嵌入式软件开发 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++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。