更多“表达式Val("12")+val("2")的返回值是( )A.12B.14C.122bD.出错 ”相关问题
  • 第1题:

    下列程序的运行结果为【 】。

    A="1"

    B="2"

    A=Val(A) +Val(B)

    B=Val("12")

    If A<>B Then Print A-B Else Print B-A


    正确答案:~9
    ~9 解析:本题考查Val函数的用法。Val函数是返回字符串内的数字,因此 A=Val(A) +Val(B) =1+2=3,而B=Val("12")=12,A -B=-9,B-A=9,而A>B所以执行PrintA-B,正确答案为-9。

  • 第2题:

    有如下程序: #inClude<iostream> using namespaCe std; Class MyClass{ publiC: MyClass(int X):val(X){} void PrintConst}tout<<”Const:val=”<<val<<’\t’;} void Print{tout<<”val=”<<val<<’\t’;} private: int val; }; int main{ Const MyClass objl(10); MyClass obj2(20); objl.Print; obj2.Print; retum 0; } 执行这个程序的输出结果是( )。

    A.val=10 Const:val=20

    B.Const:val=10 Const:val=20

    C.Const:val=10 val=20

    D.val=10 val=20


    正确答案:C
    本题考查常对象、常成员函数及构造函数。常对象只能调用常成员函数,普通对象调用普通成员函数。所以本题中obj1为常对象,执行obj1.print后,会执行常构造函数,输出const:val=10;而obj2为普通对象,执行obj2.print时,会执行默认构造函数,输出va1=20。放答案为C。

  • 第3题:

    采用语法制导翻译思想,表达式E 的“值”的描述如下: 产生式 语义动作 S′→E {print E.VAL} E→E1+E2 {E.VAL∶=E1.VAL+E2.VAL} E→E1*E2 {E.VAL∶=E1.VAL*E2.VAL} E→(E1) {E.VAL∶=E1.VAL} E→n {E.VAL∶=n.LEXVAL} 请采用LR 分析方法,给出表达式(5*4+8)*2 的语法树并在各结点注明语义值VAL。


    语法 和语义

  • 第4题:

    表达式STR(VAL("12/16/98",2)的结果为______。

    A.12/16/98

    B.2

    C.12

    D.12


    正确答案:C

  • 第5题:

    采用语法制导翻译思想,表达式E 的“值”的描述如下: 产生式 语义动作 S′→E {print E.VAL} E→E1+E2 {E.VAL∶=E1.VAL+E2.VAL} E→E1*E2 {E.VAL∶=E1.VAL*E2.VAL} E→(E1) {E.VAL∶=E1.VAL} E→n {E.VAL∶=n.LEXVAL} 如采用LR 分析方法,给出表达式(5*4+8)*2 的语法树并在各结点注明语义值VAL。


    所谓语法制导翻译,是为语言的文法规则配上相应的语义子程序,在语法分析过程中,当某条规则被用来扩展一个文法非终结符(自上而下的分析),或者被用来归约可归约串(自下而上的语法分析)时,执行相应的语义子程序,完成属性的计算和中间代码的生成。