下面程序的运行结果是______。
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.onc
B.two
C.three
D.four
参考答案:C
解析: 在用双等号运算符(==)比较两个字符串时,只有当两个字符串完全相同(包括空格以及各字符的位置)时,运算结果才会是逻辑真.T.,否则为逻辑假.F.;在用单等号运算符(=)比较两个字符串时,运算结果与SET EXACTON|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。