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

admin2015-08-25  33

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

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

答案C

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

最新回复(0)