下面程序的运行结果是( )。 SET EXACT ON s="ni"+SPACE(2) IF s=="ni" IF s="ni" ?"one" ELSE ?"two" ENDIF

admin2016-06-28  76

问题 下面程序的运行结果是(    )。
    SET EXACT ON
    s="ni"+SPACE(2)
    IF s=="ni"
    IF s="ni"
    ?"one"
    ELSE
    ?"two"
    ENDIF
    ELSE
    IF s="ni"
    ?"three"
    ELSE
    ?"four"
    ENDW
    ENDIF
    RETURN

选项 A、one
B、two
C、three
D、four

答案C

解析 在用双等号运算符(==)比较两个字符串时,只有当两个字符串完全相同(包括空格以及各字符的位置)时,运算结果才会是逻辑真.T.,否则为逻辑假.F.;在用单等号运算符(=)比较两个字符串时,运算结果与SET EXACTON|OFF的设置有关:当设置ON时,先在较短字符串的尾部加上若干个空格,使两个字符串的长度相等,然后再进行精确比较,当设置OFF时,只要右边字符串与左边字符串的前面部分内容相匹配,即可得到逻辑真.T.的结果,即字符串的比较因右面的字符串结束而终止。
    本题中,s="ni"+SPACE(2)="nit",第一层条件语句(IF s=="ni")为逻辑假.F.,则进入ELSE分支中。由于本题设置了SET ExACT ON,第二层条件语句(IF s="ni")中,等号右侧的长度小,所以会在右侧的字符串增加两个空格,使之和左侧的字符串长度相等,这与s("ni")的值相等,所以第二层条件语句为逻辑真.T.,程序将执行:?”three”语句,所以运行结果为:three。
转载请注明原文地址:https://kaotiyun.com/show/ksIp777K
0

最新回复(0)