第 3 章循环结构程序设计3.1 典型考试题剖析3.1.1 选择题【例 1】若有如下程序段,其中 S、a、b、c 均已定义为整型变量,且 a、c均已赋值(c 大于 0)s=a;for(b=1;b<=c;b++)S=S+1;则与上述程序段功能等价的赋值语句是。A) S=a+b;B)S=a+c;C)S=S+c;D)S=b+c;◊考点:本例考查 for 循环。◊分析:初始赋值时 s=a,那么 s 的值一定与 a 有关,C、D 答案中不含 a所以排除掉。只用清楚 for 循环的次数,不管 b 以前的值为多少,第一次循环时 b=1,当 b>c 时循环结束,那么显然 s 要加 c 次 1。所以 s 的值为 a 与 c 的和。◊答案:B【例 2】设 x 和 y 均为 int 型变量,则执行下面的循环后,y 值为。for(y=1,x=1;y<=50;y++){if(x>=10)break;if(x%2==1){x+=5;continue;}x-=3;}A)2B)4C)6D)8◊考点:本例考查 for 循环中 break 和 continue 的用法,以及区别。i++;◊答案:D【例 5】设 j 为 int 型变量,则下面 for 循环语句的执行结果是。for(j=10;j>3;j—){if(j%3)j--;--j;--j;printf("%d",j);}A)63B)74C)62D)73◊考点:本例考查 for 循环的用法。◊分析:本题的难点可能是几个“j—;”、“一 j;”容易让人混淆第一次循环 j=10,j%3 后 j 连续减三次 1,得到 7,继续第二次循环;第二次循环 j%3 后 j 连续减三次 1,得到 4,结束循环。◊答案:B【例 6】在下列选项中,没有构成死循环的程序段是。A)inti=100B) for(;;);inti=100;while(1)i=i%100+1;if(i>100)break;}C)intk=1000;D) ints=36;do{++k;while(s);--s;}while(k>=1000);◊考点:本例考查死循环。◊分析:A)要退出循环必须满足 i>100,但是执行语句“i=i%100+l;”后,i不可能超过 100;B)没有循环条件,显然为死循环;C)经过“k++”后,k的值一定是大于 1000 的,所以也为死循环;D)中的循环控制为 s,s 每循环一次则递减,s<0 时,退出循环,所以 D 不是死循环。◊答案:D【例 7】运行以下程序后,如果从键盘上输入 china#<回车>,则输出结果为。#includemain(){intv1=0,v2=0;charch;while((ch=getchar())!='#')switch(ch){i++;case'a':case'h':case'o':v2++;default:v1++;}printf("%d,%d\n",v1,v2);}A)2,0B)5,0C)5,5D)5,2◊考点:本例考查 switch 的用法。◊分析:本题的程序是为了检查输入字符中 a、h、o 的个数。◊答案:D【例 8】以下程序的输出结果是。main(){inta=0,i;for(i=1;i<5;i++){s...