习题五 循环结构程序设计
1. 有以下程序
main()
{ int i, j;
for(i=1;i<4;i++)
{ for(j=i;j<4;j++) printf("%d*%d=%d ",i,j,i*j);
printf("\n");} }
程序运行后的输出结果是 。
A、1*1=1 1*2=2 1*3=3 B、1*1=1 1*2=2 1*3=3
2*1=2 2*2=4 2*2=4 2*3=6
3*1=3 3*3=9
C、1*1=1 D、1*1=1
1*2=2 2*2=4 2*1=2 2*2=4
1*3=3 2*3=6 3*3=9 3*1=3 3*2=6 3*3=9
解析:本题考查的是循环嵌套。在一个循环体内又完整地包含了另一个循环,称为循环嵌套。外循环i的值分别为1、2、3,当i=1,内循环j=1时,输出1*1=1;当内循环j=2时,输出1*2=2;当内循环j=3时,输出1*3=3;当i=2,内循环j=2时,输出2*2=4;当内循环j=3时,输出2*3=6;当i=3,内循环j=3时,输出3*3=9。故本题答案选B。
2. 有以下程序
main()
{ int k=5, n=0;
do
{switch(k)
{case 1: case 3: n+=1; k--; break;
default: n=0; k--;
case 2: case 4: n+=2; k--; break;}
printf("% d",n);
}while(k>0 && n<5);}
程序运行后的输出结果是______。
A、235 B、0235 C、02356 D、2356
解析:本题考查的是循环嵌套。do-while语句的特点是先执行循环体,然后判断循环条件是否成立,当循环条件的值为0时循环结束。执行switch语句,寻与5吻合的case 5分支,没有寻到,于是执行default后的语句,n=0,k的值变为4,继续执行switch语句,寻与4吻合的case 4分支,开始执行其后的各语句:n+=2=0+2=2,k的值变为3,遇到break语句跳出该switch语句体。执行printf语句输出2;此时n=2,k=3依旧满足do-while循
环条件,将用同样的方式再次执行switch语句,直到n=5时不再满足do-while循环条件退出所有循环。此时输出的结果为235。故本题答案选A。
3. 以下叙述中正确的是______。
A、break语句只能用于switch语句体中
B、continue语句的作用是:使程序的执行流程跳出包含它的所有循环
C、break语句只能用在循环体内和switch语句体中
D、在循环内使用break语句和continue语句的作用相同
解析:本题考查的是break与continue的特性。break语句的使用说明:(1)只能用在循环体内和switch语句体内使用break语句。(2)当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。当break出现在循环体中,但并不在switch语句体内时,则在执行break后,跳出本层循环体。故本题答案选C。
4.有以下程序
main()
{ int k=5;
while(--k) printf("%d",k-=3);
printf("\n");}
执行后的输出结果是______。
A、1 B、2 C、4 D、死循环
解析:本题考查的是while语句的应用。此题中首先给k赋初值5,执行while语句:中的表达式"--k",k先自行减1结果为4,满足while执行条件输出:k=k-3=4-3=1;此时输出结果为1。返回执行while语句,重复上面的操作,while后的表达式为0,退出循环,所以最后的输出结果为1。 故本题答案为A。
5. 有以下程序
main()
{ int i,j,x=0;
for(i=0;i<2;i++)
{ x++;
for(j=0;j<=3;j++)
{ if(j%2) continue;
x++; }
x++;}
printf("x=%d\n",x);}
程序执行后的输出结果是______。
A、x=4 B、x=8 C、x=6 D、x=12
解析:本题考查的是循环嵌套和continue语句的应用。当外层循环for(i=0;i<2;i++)满足条件的情况下执行循环体,循环体中包含了嵌套的内层循环for(j=0;j<=3,j++){……},在内层循环中,当if条件语句不成立时执行continue语句,其作用是跳过"x++;",继续执行内层循环的for语句,直到内层循环条件不满足,则执行跳出内层循环,执行外层循环的"x++;"语句,然后再对i进行判断,直到外层循环条件不满足,跳出外层循环,执行输出语句,结果为8。故本题答案为B。
6. 在以下给出的表达式中,与while(E)中的(E)不等价的表达式是______。
A、(!E==0) B、(E>0||E<0) C、(E==0) D、(E!=0)
解析:本题考查的是while条件表达式的判断。while(表达式)语句用来实现"当型"循环结构,当表达式为非0值时,执行while语句中的内嵌语句。选项A非零即为1,选项B与选项D的结果也为1,只有选项C为0。故本题答案为C。
7. 有以下程序
main()
{ int k=5,n=0;
while(k>0)
{switch(k)
{default : break;
case 1 : n+=k;
case 2 :
case 3 : n+=k;}
k--;}
printf("%d\n",n);}
程序运行后的输出结果是______。
A、4 B、5 C、6 D、7
解析:本题考查的是while语句。在本题中,当k=5和k=4的时候,case都没有与其匹配的值,所以执行了default语句;当k=3时,执行"case 3 : n+=k;"得n=3,然后执行default;当k=2时,执行"case 2 : case 3 : n+=k;"得n=5,然后执行default;当k=1时,执行"case 1 : n+=k; case 2 : case 3 : n+=k;"使得n加两次k,得到n=7。 故本题答案为D。
8. 有以下程序段
int n,t=1,s=0;
scanf("%d",&n);
do{ s=s+t; t=t-2; }while (t!=n);
为使此程序段不陷入死循环,从键盘输入的数据应该是______。
A、任意正奇数 B、任意负偶数 C、任意正偶数 D、任意负奇数
解析:本题考查的是while循环语句。要使得程序段不陷入死循环,则必须存在终止循环的条件"t=n",由于t的初始值为1,且每执行一次循环都会使得t的值减2,故执行本程序后t
有可能的最大值为-1,然后,依次减2,所以键盘输入的n的值必须是t的值之一,即为任意负奇数。 故本题答案为D。
9. 设变量已正确定义,则以下能正确计算f=n!的程序段是______。
A、f=0; for(i=1;i<=n;i++) f*=i; B、f=1; for(i=1;i<n;i++) f*=i;
C、f=1; for(i=n;i>1;i++) f*=i; D、f=1; for(i=n;i>=2;i--) f*=i;
解析:本题考查的是for语句。n!=n*(n-1)*……*2*1,由于选项A中f的初值为0,所以循环n次后,f值依然为0,故选项A错误;选项B中循环的终止条件是"i<n",即只执行i-1次循环,得到的f值为(n-1)*……*2*1的值,故选项B错误;选项C中,当n>1时,由于初值"i=n"是符合条件"i>1"的,且增量为+1,故循环中永远不会出现不满足条件"i>1"的值,所以出现死循环。故本题答案为D。
10. 有以下程序
main()
{ int a=1,b;
for(b=1;b<=10;b++)
{ if(a>=8) break;
if(a%2==1){a+=5;continue;}
a-=3; }
printf("%d\n",b); }
程序运行后的输出结果是______。
A、3 B、4 C、5 D、6
解析:本题考查的是break与continue的区别。本题具体执行过程如下:
a=1,b=1:a>=8不成立,判断a%2==1成立,a+=5则a=6,continue,执行下一次循环;
a=6,b=2:a>=8不成立,判断a%2==1continue语句执行过程不成立,a-=3则a=3,执行下一次循环;
a=3,b=3:a>=8不成立,判断a%2==1成立,a+=5则a=8,continue,执行下一次循环;
a=8,b=4:a>=8成立,break,结束整个循环,输出b的值4。
故本题答案为B。
11.有以下程序
main()
{ int i=0,s=0;
for (;;)
{if(i==3||i==5) continue;
if (i==6) break;
i++;s+=i;};
printf("%d\n",s);}
程序运行后的输出结果是______。
A、10 B、13 C、21 D、程序进入死循环
解析:此题考的是continue的用法。此题中,执行时首先是i=0,两个if条件都不成立,则接下执行i++,s+=i;第二次循环继续执行,判断if语句,当执行到i=3时,就执行continue,跳过它下面的语句,继续执行下一轮循环,而又因为此时在for循环中并没有使变量i增值,所以这轮循环的i值还是3,继续continue,无终止条件,进入死循环。故本题答案为D。
12.下面程序的功能是输出以下形式的金字塔图案:
*
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论