📜  门| GATE-CS-2017(Set 1)|第53章

📅  最后修改于: 2021-06-28 23:53:13             🧑  作者: Mango

请考虑以下语法:

stmt  -> if expr then else expr; stmt | ε
expr -> term relop term | term
term -> id | number
id ->  a | b | c
number -> [0-9]

其中relop是关系运算(例如<>,…。),ε表示空语句,如果
然后是否则就是终端。

考虑遵循上述语法的包含十个if端子的程序P。数字
P中的控制流路径为____________。

例如程序

if e1 then e2 else e3 

有2个控制流路,e 1- > e 2和e 1- > e 3

(A) 20
(B) 1024
(C) 2048
(D) 10答案: (B)
说明: 10个终端(如果有)的控制流路数

  1. 如果然后别的; stmt
  2. 如果然后别的;如果然后别的; stmt
  3. …………..

10次。

观察每个if结构后面都有一个分号。

由于,每个if结构都有2个控制流。
因此,第一个终端有2个控制流,
第二终端有2个控制流,
第三终端有2个控制流,
…………..
第9终端有2条控制流,
第10个终端有2个控制流。

利用计数的乘法定律,我们得到
= 2 * 2 * 2 * 2 * 2……10次= 2 ^ 10 = 1024(如果有端子)的控制流路数。

1024是正确答案。

这个问题的测验