HM007 起名与取用

HM007 起名与取用

HM007 起名与取用

来源: 第 7 集 标识符命名规则

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

给变量或常量起的名字叫标识符,必须同时满足四点:

  1. 不能是关键字(本题关键字集合见说明)。
  2. 只能由字母、数字、下划线组成,中间不能有空格或其他符号。
  3. 第一个字符必须是字母或下划线,**不能是数字**。因此 abc_ac_123abc 合法,123abc 非法。
  4. 字母区分大小写:已经定义了小写 aaa,再用大写 AAA 去取会失败(未定义标识符)。

另外建议做到见名知意,例如用 number1number2sum 表示两个加数与它们的和,比 abc 更易读。这只是建议,不影响合法性判断。

处理三类操作:

  • OK name:判断 name 是不是合法标识符,输出 YesNo
  • 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 这种见名知意的名字只要规则满足就是合法标识符。aaaAAA 是两个名字。

信息

ID
1006
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者