您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 练习题--循环(答案)
循环一、选择题1、设有程序段intk=10;while(k=0)k=k-1;则下面叙述中正确的是(C)(A)while循环执行10次(B)循环是无限循环(C)循环体语句一次也不执行(D)循环体语句执行一次2、设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf(%d,s);则(B)(A)运行程序段后输出0(B)运行程序段后输出1(C)程序段中的控制表达式是非法的(D)程序段执行无限次3、语句while(!E);中的表达式!E等价于(A)(A)E==0(B)E!=1(C)E!=0(D)E==14、下面程序段的运行结果是(A)a=1;b=2;c=2;while(abc){t=a;a=b;b=t;c--;}printf(%d,%d,%d,a,b,c);(A)1,2,0(B)2,1,0(C)1,2,1(D)2,1,15、下面程序段的运行结果是(D)x=y=0;while(x15)y++,x+=++y;printf(%d,%d,y,x);(A)20,7(B)6,12(C)20,8(D)8,206、下面程序段的运行结果是(C)intn=0;while(n++=2);printf(%d,n);(A)2(B)3(C)4(D)有语法错7、设有程序段t=0;while(printf(*))//printf函数类型是int,返回值表示输出的字符数。{t++;if(t3)break;}下面描述正确的是(D)(A)其中循环控制表达式与0等价(B)其中循环控制表达式与'0'等价(C)其中循环控制表达式是不合法的(D)以上说法都不对8、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,①处应选择(B)#includestdio.hvoidmain(){inta,b,t;scanf(%d%d,&a,&b);while(①){if(ab){t=a;a=b;b=t}printf(%d,%d\n,a,b);scnaf(%d%d,&a,&b);}}(A)!a=b(B)a!=b(C)a==b(D)a=b9、下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,①处应选择(C)②处应选择(A)#includestdio.hvoidmain(){intm=0,n=0;charc;while((①)!='\n'){if(c='A'&&c='Z')m++;if(c='a'&&c='z')n++;}printf(%d\n,mn?②)}①(A)c==getchar()(B)getchar()(C)c=getchar()(D)scanf(%c,c)②(A)n:m(B)m:n(C)m:m(D)n:n10、下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,z变成B。请选择①(D)②(C)#includestdio.hvoidmain(){charc;while((c=getchar())!='\n'){if(c='a'&&c='z'){①;if(c'Z'&&c='Z'+2)②;}printf(%c,c);}}①(A)c+=2(B)c-=32(C)c=c+32+2(D)c-=30②(A)c='B'(B)c='A'(C)c-=26(D)c=c+2611、下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择①(B)#includestdio.hvoidmain(){inta,max=0;scanf(%d,&a);while(①){if(maxa)max=a;scanf(%d,&a);}printf(%d,max);}①(A)a==0(B)a(C)!a==1(D)!a12、下面程序的运行结果是(C)#includestdio.hvoidmain(){intnum=0;while(num=2){num++;printf(%d\n,num);}}(A)1(B)12(C)123(D)123413、若运行以下程序时,从键盘输入2473〈CR〉(〈CR〉表示回车),则下面程序的运行结果是(A)#includestdio.hvoidmain(){intc;while((c=getchar())!='\n')switch(c-'2'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);default:putchar(c+2);break;}printf(\n);}(A)668977(B)668966(C)66778777(D)668876614、C语言中while和do-while循环的主要区别是(A)(A)do-while的循环体至少无条件执行一次(B)while的循环控制条件比do-while的循环控制条件严格(C)do-while允许从外部转到循环体内(D)do-while的循环体不能是复合语句15、以下能正确计算1×2×3×...×10的程序段是(C)(A)do{i=1;s=1;s=s*i;i++;}while(i=10);(B)do{i=1;s=0;s=s*i;i++;}while(i=10);(C)i=1;s=1;do{s=s*i;i++;}while(i=10);(D)i=1;s=0;do{s=s*i;i++;}while(i=10);16、以下程序段(C)x=-1;do{x=x*x;}while(!x);(A)是死循环(B)循环执行二次(C)循环执行一次(D)有语法错误17、以下描述中正确的是(C)//此题的C答案也不对,语法上while表达式的值允许恒为false或true。(A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句(B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号(C)在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作(D)do-while循环中,根据情况可以省略while18、若有如下语句intx=3;do{printf(%d\n,x-=2);}while(!(--x));则上面程序段(B)(A)输出的是1(B)输出的是1和-2(C)输出的是3和0(D)是死循环19、下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。①(B)②(C)#includestdio.hvoidmain(){intn,sum=0;n=2345;do{sum=sum+①;n=②;}while(n);printf(sum=%d,sum);}①(A)n%10(B)(n%10)*(n%10)(C)n/10(D)(n/10)*(n/10)②(A)n/1000(B)n/100(C)n/10(D)n%1020、下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环。请选择填空。①(B)②(C)#includestdio.hvoidmain(){longintnum;scanf(%ld,&num);do{if(①)printf(%ld,num);scanf(%ld,&num);}while(②);}①(A)num%100/10==3(B)num/100%10==3(C)num%10/10==3(D)num/10%10==3②(A)!num(B)num0==0(C)!num==0(D)!num!=021、等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小于100的最大n,请选择填空。①(B)②(D)#includestdio.hvoidmain(){inta,q,n,sum;a=1;q=2;n=sum=0;do{①;++n;a*=q;}while(sum100);②;printf(%d\n,n);}①(A)sum++(B)sum+=a(C)sum*=a(D)a+=sum②(A)n=n-2(B)n=n(C)n++(D)n-=122、下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除。请选择填空。①(B)#includestdio.hvoidmain(){inti=0,j,k;do{i++;k=316-13*i;}while(①);j=k/11;printf(316=13*%d+11*%d,i,j);}①(A)k/11(B)k%11(C)k/11==0(D)k%11==023、下面程序的运行结果是(D)#includestdio.hvoidmain(){inty=10;do{y--;}while(--y);printf(%d\n,y--);}(A)-1(B)1(C)8(D)024、若运行以下程序时,从键盘输入ADescriptor〈CR〉(〈CR〉表示回车),则下面程序的运行结果是(D)#includestdio.hvoidmain(){charc;intv0=0,v1=0,v2=0;do{switch(c=getchar()){case'a':case'A':case'e':case'E':case'i':case'I':case'o':case'O':case'u':case'U':v1+=1;default:v0+=1;v2+=1;}}while(c!='\n');printf(v0=%d,v1=%d,v2=%d\n,v0,v1,v2);}(A)v0=7,v1=4,v2=7(B)v0=8,v1=4,v2=8(C)v0=11,v1=4,v2=11(D)v0=12,v1=4,v2=1225、下面程序的运行结果是(B)#includestdio.hvoidmain(){inta=1,b=10;do{b-=a;a++;}while(b--0);printf(a=%d,b=%d\n,a,b);}(A)a=3,b=11(B)a=2,b=8(C)a=1,b=-1(D)a=4,b=926、下面有关for循环的正确描述是(D)(A)for循环只能用于循环次数已经确定的情况(B)for循环是先执行循环体语句,后判断表达式(C)在for循环中,不能用break语句跳出循环体(D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来27、对for(表达式1;;表达式3)可理解为(B)(A)for(表达式1;0;表达式3)(B)for(表达式1;1;表达式3)(C)for(表达式1;表达式1;表达式3)(D)for(表达式1;表达式3;表达式3)28、若i为整型变量,则以下循环执行次数是(B)for(i=2;i==0;)printf(%d,i--);(A)无限次(B)0次(C)1次(D)2次29、以下for循环的执行次数是(C)for(x=0,y=0;(y=123)&&(x4);x++);(A)是无限循环(B)循环次数不定(C)执行4次(D)执行3次30、以下不是无限循环的语句为(A)(A)for(y=0,x=1;x++y;x=i++)i=x;(B)for(;;x++=i);(C)while(1){x++;}(D)for(i=10;;i--)sum+=i;31、下面程序段的运行结果是(C)for(y=1;y10;)y=((x=3*y,x+1),x-1);printf(x=%d,y=%d,x,y);(A)x=27,y=27(B)x=12,y=13(C)x=15,y=14(D)x=y=2732、下面程序段的运行结果是(D)for(x=3;x6;x++)printf((x%2)?(**%d):(##%d\n),x);(A)**3##4**5(B)##3**4##5(C)##3**4##5(D)**3##4**533、下列程序段不是死循环的是(C)(A)inti=100;while(1){i=i%100+1;if(i100)break;}(B)for(;;);(C)intk=0
本文标题:练习题--循环(答案)
链接地址:https://www.777doc.com/doc-7029463 .html