有以下程序 main() { int s=0, a=1, n; scanf ( "%d", &n); do { s+=l; a=a-2; } while

admin2009-01-15  30

问题 有以下程序    main()    {  int  s=0,  a=1,  n;        scanf ( "%d", &n);          do              {  s+=l;  a=a-2;  }         while  (a! =n);         print f ( "%d\n" , s );     若要使程序的输出值为2,则应该从键盘给n输入不敷出值是

选项 A、-1
B、-3
C、-5
D、0

答案2

解析 本题考核的知识点是do-while循环的简单应用。根据题目要求,最后要使输出的s值为2,在程序中改变s的值语句只有循环体中的s+=1;语句,而初始s的值为0,显然要使s的值变为2,该语句必须执行两次,即do-while循环中的循环体要执行两次,而在do-while中,首先不进行条件而执行do后面的循环体语句,然后在判断while循环条件。所以说不管循环判断条件是否为真s+=1;语句至少执行一次,根据分析,只需要while后面括号的循环判断表达式的值为真成立一次且只能为真一次,将四个选项中的内容依次代入该程序中不难得到只有n=-3刚好使循环判断条件a!=n为真一次.故4个选项中选项B符合题意。
转载请注明原文地址:https://jikaoti.com/ti/xOK0FFFM
0

最新回复(0)