问题
单项选择题
有以下程序:
main()
int s=0,a=1,n;
scanf("%d",&n);
do
s+=1; a=a-2;
while (a!=n);
printf("%d\n",s);
若要使程序的输出值为2,则应该从键盘给n输入的值是( )。
A) -1
B) -3
C) -5
D) 0
答案
参考答案:B
解析: 根据题目要求,最后要使输出的s值为2,在程序中改变s的值的语句只有循环体中的s+=1;语句,而初始s的值为0,显然要使s的值变为2,该语句必须执行两次,即do-while循环中的循环体要执行两次,而在do-while中,首先不执行条件而执行 do后面的循环体语句,然后再判断while循环条件。所以不管循环判断条件是否为真s+=1;语句至少执行一次,根据分析,只需要 while后面括号的循环判断表达式的值为真成立一次且只能为真一次,将4个选项中的内容依次代入该程序中不难得到只有n=-3刚好使循环判断条件a!=n为真一次。故4个选项中选项B符合题意。