HM007 起名与取用
HM007 起名与取用
来源: 第 7 集 标识符命名规则
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
给变量或常量起的名字叫标识符,必须同时满足四点:
- 不能是关键字(本题关键字集合见说明)。
- 只能由字母、数字、下划线组成,中间不能有空格或其他符号。
- 第一个字符必须是字母或下划线,**不能是数字**。因此
abc、_ac、_123abc合法,123abc非法。 - 字母区分大小写:已经定义了小写
aaa,再用大写AAA去取会失败(未定义标识符)。
另外建议做到见名知意,例如用 number1、number2、sum 表示两个加数与它们的和,比 a、b、c 更易读。这只是建议,不影响合法性判断。
处理三类操作:
OK name:判断name是不是合法标识符,输出Yes或No。DEF name x:若name合法,记下该名字对应的整数 \(x\)(同名则覆盖),并输出Saved;若非法,输出Invalid且不保存。GET name:按**完全相同**的名字取出整数;找不到则输出Undefined。
输入格式
第一行一个整数 \(q\)(\(1 \le q \le 100\))。
接下来 \(q\) 行,每行一个操作。name 是不含空白的字符串,长度 \(1 \sim 30\)。DEF 中的 \(x\) 满足 \(-10^9 \le x \le 10^9\)。
输出格式
对每个操作输出一行,格式见题目描述。
样例
输入 #1
9
OK abc
OK 123abc
OK _123abc
OK int
DEF aaa 100
GET aaa
GET AAA
DEF 123abc 40
GET 123abc
输出 #1
Yes
No
Yes
No
Saved
100
Undefined
Invalid
Undefined
输入 #2
6
OK number1
OK sum-1
OK While
DEF number1 10
DEF number2 20
GET number1
输出 #2
Yes
No
Yes
Saved
Saved
10
说明
关键字(须完全匹配,区分大小写):int if else while return class for do switch case break continue const void bool true false short long float double char unsigned signed sizeof struct。
sum-1 含减号,非法。While 与关键字 while 不同。number1 这种见名知意的名字只要规则满足就是合法标识符。aaa 与 AAA 是两个名字。
信息
- ID
- 1006
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者