您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第3章程序的控制结构
选择结构(if)................................................................................................................................1选择结构(switch)........................................................................................................................2循环结构...........................................................................................................................................4选择结构(if)1、if语句的一般形式可写为if(expr)语句1;else语句2;其中,作为条件判断的表达式expr()。(A)可以是任意表达式(B)只能是关系表达式或逻辑表达式(C)不能使算术表达式(D)不能是赋值表达式2、设有定义:inta=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是()。(A)if(ab)c=a,a=b,b=c;(B)if(ab){c=a,a=b,b=c;}(C)if(ab)c=a;a=b;b=c;(D)if(ab){c=a;a=b;b=c;}3、有如下程序#includestdio.hvoidmain(){inta=2,b=-1,c=2;if(ab)if(b0)c=0;elsec++;printf(%d\n,c);}该程序的输出结果是()。(A)0(B)1(C)2(D)34、若有定义inta=1,b=3,c=5,d=4,x;则执行以下程序段后x的值为()。if(ab)if(cd)x=1;elseif(ac)if(bd)x=2;elsex=3;elsex=6;elsex=7;A)1B)3C)6D)25、有下面程序intmain(void){inta,b,c,x=1,y=2,z=3;scanf(%d,%d,%d,&a,&b,&c);if(abc)x=y;y=z;z=x;printf(%d,%d,%d\n,x,y,z);}(1)若运行改程序时从键盘输入3,2,1,则程序的输出结果为()。(A)2,3,2(B)1,3,1(C)2,3,1(D)1,2,3(2)若运行改程序时从键盘输入-3,-2,-1,则程序的输出结果为()。(A)2,3,2(B)1,3,1(C)2,3,1(D)1,2,36、有下列程序:#includestdio.hvoidmain(){intx=100,a=10,b=20;intv1=5,v2=0;if(ab)if(b!=15)if(!v1)x=1;elseif(v2)x=10;x=-1;printf(%d,x);}(1)程序的运行结果是()(A)100(B)1(C)10(D)-1(2)if(v2)与下列选项相同的是()(A)if(v2==0)(B)if(v2!=0)(C)if(v2==1)(D)if(v2!=1)选择结构(switch)1、以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是()。(A)switch(a)(B)switch(a==1){case1:a=b;break;{case0:a=b;break;default:a++;case1:a++;}}(C)switch(a)(D)switch(a==1){default:a++;break;{case1:a=b;break;case1:a=b;case0:a++;}}2、有下列程序:#includestdio.hvoidmain(){intx=10,y=5;switch(x){case1:x++;default:x+=y;case2:y--;case3:x--;}printf(x=%d,y=%d,x,y);}执行下列程序后,输出结果为()。(A)x=15,y=4(B)x=14,y=4(C)x=10,y=5(D)x=15,y=53、读下面程序并回答问题:#includestdio.hvoidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf(%d,%d\n,a,b);}(1)程序的运行结果为()。(A)2,1(B)1,2(C)1,1(D)0,0(2)将程序中的switch(x)更改为switch(x!=1),其程序运行结果是()。(A)2,1(B)1,2(C)1,1(D)0,04、阅读下面的程序:#includestdio.hvoidmain(){ints;scanf(%d,&s);if(s0||s100)printf(Error.);else{switch(s/20){case0:case1:case2:printf(%c,'D');case3:printf(%c,'C');break;case4:case5:switch(s/45){case1:printf(%c,'B');break;case2:printf(%c,'C');break;}}}}(1)若运行该程序时从键盘输入45,则运行输出为()。A)DCBAB)DCBC)DCD)D(2)若运行该程序时从键盘输入100,则运行输出为()。A)DCBAB)DBAC)BAD)C5、有如下程序intmain(void){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++,b++;}printf(a=%d,b=%d\n,a,b);}(1)程序的运行结果为()。(A)a=2,b=1(B)a=1,b=1(C)a=1,b=0(D)a=2,b=2(2)当在case1:a++;后面添加语句break;程序的运行结果为()。(A)a=2,b=1(B)a=1,b=1(C)a=1,b=0(D)a=2,b=2循环结构1、下列程序段中,不是无限循环的是()。(A)(B)k=0;j=100;dowhile(1){++k;}{j=j%100+1;whiel(k--=0);if(j100)break;}(C)(D)s=3333;for(;;);while(s%2+s++%2);2、求取满足式12+22+32+……+n2≤1000的n,正确的语句是()。(A)for(i=1,s=0;(s=s+i*i)=1000;n=i++);(B)for(i=1,s=0;(s=s+i*i)=1000;n=++i);(C)for(i=1,s=0;(s=s+i*++i)=1000;n=i);(D)for(i=1,s=0;(s=s+i*i++)=1000;n=i);3、以下叙述中正确的是()。(A)C语言中所有的循环语句都是先判断条件再执行循环体(B)break语句只能中断循环(C)continue语句可以结束所有的循环(D)C语言中,任意表达式都可作为循环条件,只要能做出0和非0的判断即可4、有以下程序intmain(void){intn,m,s=0,t=1;scanf(“%d”,&m);for(n=1;n=m;n++){t*=n;s+=t;}printf(“%d\n”,s);}该程序的功能是()。(A)实现1至m-1的阶乘的求和(B)求m的阶乘(C)1到m的求和(D)计算1的阶乘至m的阶乘之和5、阅读下面的程序:#includestdio.hvoidmain(){inta=1,b=2,c=2,t;while(abc){t=a;a=b;b=t;c--;}printf(%d,%d,%d,a,b,c);}程序的运行结果为()。A)1,2,2B)1,2,0C)2,1,1D)2,1,06、有下面程序intmain(void){intn;for(n=100;n=200;n++){if(n%3==0)continue;printf(%d,n);}return0;}(1)该程序的功能为()。(A)输出100—200之间不能被3整除的数(B)输出100—200之间能被3整除的数(C)输出100—200之间的所有数(D)输出100和101(2)若将continue改成break,程序的功能为()。(A)输出100—200之间不能被3整除的数(B)输出100—200之间能被3整除的数(C)输出100—200之间的所有数(D)输出100和1017、有以下程序#includestdio.hintfun(inta,intb){inti,min,f=1;min=a;if(ba)min=b;for(i=min;i1;i--)if(a%i==0&&b%i==0){f=i;break;/*(1)第27题的问题针对本行*/}returnf;}intmain(void){inta=50,b=20;printf(“%d\n”,fun(a,b));return0;}(1)对于该程序的功能和结果,以下说法正确的是()。A.程序的功能是求变量a与b的乘积,结果为1000B.程序的功能是求变量a与b的最小公倍数,结果为100C.程序的功能是求变量a与b的最大公约数,结果为10D.程序的功能是求变量a与b的最小公约数,结果为2(2)若将程序(1)处的语句break;改为continue;则程序的输出结果为()。A.100B.20C.10D.28、有以下程序#includestdio.hintmain(void){intk=5,n=0;while(k0){switch(k){case1:case3:n+=1;k--;break;/*(1)第39题问题针对本行*/default:n=0;k--;case2:case4:n+=2;k--;break;}}printf(“%3d\n”,n);return0;}(1)改程序的输出结果是()。A.8B.6C.15D.3(2)如果把程序(1)处的break改成continue,以下说法正确的是()。A.不能改,switch语句里不能使用continueB.能改,改后程序运行结果会发生变化C.能改,改后程序运行结果不会发生变化D.不确定9、有以下程序#includestdio.hintmain(void){intk=0;charc='A';do{switch(c++){case'A':k++;break;case'B':k--;case'C':k+=2;break;case'D':k=k%2;continue;case'E':k=k*10;break;default:k=k/3;}k++;}while(c'G');printf(k=%d\n,k);return0;}(1)该程序的输出结果为()。(A)k=2(B)k=3(C)k=4(D)k=8(2)当把程序中的continue改为break时,输入12,程序的运行结果是()。(A)k=2(B)k=3(C)k=4(D)k=810、有如下程序:(考点:循环、switch语句)#includestdio.hvoidmain(){charch;while((ch=getchar())!='\n'){switch(ch){case'1':case'2':putchar(ch+2);case'3':case'4':putchar(ch+2);break;default:putchar(ch+2);}}}若输入135回车,程序的运行结果为()。(A)135(B)357(C)3357(D)333355711、有下列程序#includestdio.hvoidmain(){inti,j,x=0;for(i=0;i
本文标题:第3章程序的控制结构
链接地址:https://www.777doc.com/doc-2193563 .html