单选题
下面程序的运行结果( )。
s=0
i =1
DO WHILE i<5
j=l
DO WHILE j<=i
IFj*j>i+3
EXIT
ENDIF
s=s+j
j=j+1
ENDDO
s=s+i
i =i+l
ENDDO
?s
【正确答案】
B
【答案解析】解析:本题考查二重DO WHILE -ENDDO循环结构执行过程,程序执行过程如下所示:当i=l时,外层循环语句DO WHILE i<5条件成立,执行j=l,内层DO WHILE j<=i循环条件成立,Ifj*j >i+3条件不成立,执行s=s+j语句,s的值为l,执行j =j+l语句,j的值为2。内层DOWHILE j<=i循环条件不成立。继续执行外层循环语句s=s+i,s=2,执行i=i+l,i的值为2。当i=2时,外层循环语句DO WHILE i<5条件成立,执行j=l,内层DO WHILE j<=i循环条件成立,Ifj*j >i+3条件不成立,执行s=s+j语句,s的值为3,执行j =j+1语句,j的值为2。内层DOWHILE j<=i循环条件成立,判断IF j*j >i+3条件不成立,执行s=s+j语句,s的值为5,执行j=j+1语句,j的值为3。内层DO WHII.E j<=i循环条件不成立,内层循环结束继续执行外层循环语句s=s+i,s的值为7,执行i=i+l,i的值为3。当i=3时,外层循环语句DO WHILE i<5条件成立,执行j=l,内层DO WHILE j<=i循环条件成立,Ifj*j >i+3条件不成立,执行s=s+j语句,s的值为8,执行j =j+l语句,j的值为2。内层DOWHILE j<=i循环条件成立,判断IF j*j >i+3条件不成立,执行s=s+j语句,s的值为10,执行j=j+1语句,j的值为3。内层DO WHILE j<=i循环条件成立,判断IFj*j >i+3条件成立,执行EXIT语句,提前结束内层DO WHILE - ENDDO循环,继续执行外层循环语句s=s+i,s的值为13,执行I=I+1,i的值为4。当i=4时,外层循环语句DO WHILE i<5条件成立,执行j=l,内层DO WHILE j<=i循环条件成立,Ifj*j >i+3条件不成立,执行s=s+j语句,s的值为14,执行j=j+1语句,j的值为2。内层DOWHILE j<=i循环条件成立,判断IFj*j >i+3条件不成立,执行s=s+j语句,s的值为16,执行j=j+l语句,j的值为3。内层DO WHILE j<=i循环条件成立,判断IFj*j >i+3条件成立,执行EXIT语句,提前结束内层DO WHILE - ENDDO循环,继续执行外层循环语句s=s+i,s的值为20,执行i=I+l,i的值为5。当i=5时,外层循环结束,所以最终s的值为20。故B选项正确。