40.The following SAS program is submitted:
data WORK.PRODUCTS;
Prod=1;
do while(Prod LE 6);
Prod + 1;
end;
run;
What is the value of the variable Prod in the output data set?
A. 6
B. 7
C. 8
D. . (missing numeric)
这道题考察的是DO WHILE语句中循环执行条件的判断时点。
到底是先判断再执行还是先执行在判断?
DO WHILE是先判断然后执行,也就是说PROD=1,先判断 PROD LE 6是否为TRUE,然后决定是否执行循环语句。
循环每次执行完,PROD自动加1,也就是当PROD LE 6的为TRUE时,PROD最大值就是6,超过6就不执行循环内的语句,就是PROD加1了,但是PROD等于6的时候,依然要执行循环,LE就是小与等于的意思。所以最终PROD=7。
如果改成:
data WORK.PRODUCTS;
Prod=1;
do until(Prod LE 6);
Prod + 1;
end;
run;
那么PROD=2,为什么等于2?
因为DO UNTIL是执行后再判断,PROD执行一次之后变成2,2 LE 6是true,所以终止执行!。UNTIL里面的表达式是循环终止的判断条件,如果UNTIL里面为真,那么就终止执行DO LOOP;而WHILE的表达式是循环继续的判断条件,为真继续执行DO LOOP
crackman给解释是2
可是两个机经po主认为Ans还是7求问到底是哪个