IF语句的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 20:00:11
9、下列IF语句中,ENDIF表示相应的IF的结束:

Y=0

IF X<0

THEN Y=5

ELSE IF X<10

THEN Y=10

IF X<100

THEN Y=100

ENDIF

ELSE Y=200

ENDIF

ENDIF

试指出X=80时,运行的结果为( ) ,X=5时结果为( )

A、Y=9 B、Y=5 C、Y=10 D、Y=100 E、Y=200

请稍微解释一下
自然是C语言
他那个嵌套的怎么很别扭...
为什么有个Y=0呢
答案是E\D

所以我就很纳闷了
事实上这是NOIP的一道题....

题目不清.

上面只是语句的描述,并非C语言,也不完全像fortran语言.
(C语言关键字应小写,无then,endif. 很像fortran,但fortran关系运算符用.LT. .EQ. .GT.)

"IF语句中,ENDIF表示相应的IF的结束" 这是一条原则.

很明显,"IF X<100 THEN Y=100 ENDIF" 是最内层的独立运算块,它的结果不影响外层块的运算结果.我们把它抽去.剩下的IF与ENDIF的配对就明显了:

IF (X<0) {THEN Y=5;}
ELSE

{ IF (X<10) {THEN Y=10,,"IF X<100 THEN Y=100 ENDIF"} ELSE Y=200 ENDIF } // 这是块

ENDIF // 与 x<0 的 IF 配对

X=80,进X<10那块的ELSE,所以得Y=200
x=5,也进X<10那块,但进THEN Y=10,和平行与Y=10的最内层条件语句:
"IF X<100 THEN Y=100 ENDIF",x=5也满足条件X<100,所以最终Y=100 .

答案200 和 100.

Y=0 是条件语句未含盖时的默认值.

结果应该是200 100
Y=0只是在开始初始化
只要认清这个IF语句的结构,这个问题也就简单了

在这个语句中可以分为三部分
第一部分是:
IF X<0

THEN Y=5

第二部分是:
ELSE IF X<10

THEN Y=10

IF X<100

THEN Y=100

第三部分是:
ELSE Y=200

当X=80时,前两