分析下列程序段中带标号“#”语句的执行频度(n为正整数)。
第2题
A.变量a的地址
B.变量b的值
C.变量a的值
D.变量b的地址
第3题
写出下面算法中带标号语句的频度。 TYPE ar=ARRAY[-1…n]OF datatype; PROCEDURE perm (a:ar;k,n:integer); VAR x:datatype;i:integer; BEGIN (1)IF k=n THEN BEGIN (2)FOR i:=1 TO n DO (3)write (a[i]); writen; END ELSE BEGIN (4)FOR i:=k TO n DO (5)a[i]:=a[i]+i*i; (6)perm(a,k+1,n); END END 设k的初值等于1。
第6题
有下列C语言的源程序段
说明: ci、ei、si为C语言的合法语句,ci和ei的中间代码分别为:ci.code和ei.code,其语义值分别为Ci和Ei。Si的中间代码为Si.code。 Li是已设置好的在生成的中间代码中要用到的语句标号。 要求针对给出的程序代码设计合理的中间代码结构,写出该源程序段语义处理后的四元式形式的目标代码,并填人在下面给出的code区中。 注意: ①转移类四元式的转向目标统一写在四元式的result位置。 ②无条件转移操作符用“j”表示。例如,(j,,,Li)表示无条件转移到“Li”标识的四元式。 ③有条件转移操作符用“ji”表示。例如,(jT,Ei,,Li)表示当Ei值为真时,转移到“Lj”标识的四元式。有条件转移操作符用“jF”表示。例如,(jF,Ei,,Lj)表示当Ei值为假时,转移到“Li”标识的四元式。
第9题
A.50
B.45
C.40
D.36
第10题
有下列类C语言的语句 if(a>b)x=(x+y)↑2↑(y-1); else if(b>a)y=0; else y=x; (1)用逆波兰式表示该语句。 说明: ①“↑”表示乘幂运算,在逆波兰式中直接使用。 ②“+”、“-”、“>”、“=”运算符在逆波兰式中直接使用。 ③无条件转移操作符用“j”表示,条件成立转移的操作符用“jT”表示,条件不成立转移的操作符用“jF”表示;转移目标用逆波兰式的序号(自然数表示)。 (2)给出该语句语义处理的四元式形式的目标代码。 注意:给出的目标代码中语句标号的定义性出现用Li表示,其中i=1,2,…,n;语句标号的使用性出现用四元式序列的序号表示,序号用①,②,…表示。 操作符使用规定同(1)中的说明。 (3)给出该语句翻译后的标号表。标号表按以下示例内容填写:
第11题
在下面的程序段中,对x的赋值语句的频度为()。 for(i=1;i<=n;i++) for(j=1;j<=n;j++) x=x+1:
A.O(2n)
B.O(n)
C.O(n2)
D.O(logn)