c语言循环控制练习题.docx
循环限制练习题1 ,设有程序段int k=10; while (k=0) k=kT ;那么下面描述中正确的选项是)A while循环执行10次B循环是无限循环C循环体语句一次也不执行D循环体语句执行一次2.【程序1】# include <stdio. h>main ()(int flag=0, x;scanf(%d, &x);if(x>0)flag=l;else if (x=0)flag=0;else flag=-l;printf (/z%dn,z, flag);)程序1运行时,输入TO,输出 13)。A. 1B. 0C. -1D. 10)程序1运行时,输入0,输出 (14)。A. 1B. 0C. -1D. 10延长【程序2】# include <stdio. h>main ()int x,y=0;scanf(%d, &x);if(x<20)if(x<10)y=9;else y=20;printf(dn,y);)程序2运行时,输入5,输出 15)D. 20D. 10A. 5B. 9C. 10U程序2运行时,输入20,输出 (16)A. 20B. 0C. 930.执行语句for(I=l;I+<4;);后变量I的值是()A .3; B.4C.5 D.不定语句while (!e);中的条件!e等价于。A. e=0B. e!=lC. e!=0以下程序段的输出结果是#include <stdio.h>main ()(int i;for (i=4;i<=10;i+)(if (! (i%3) continue;printf(n%dH,i);D.eD.678910A.45B.457810C. 69以下程序的输出结果是O#include <stdio.h> main ()int num=O;while (num<=2) (num+;printf(n%dnn,num); )D. 1234A. 1B. 1C. 1223程序说明(2023春季浙江省二级C语言考试)输入2个整数lower和upper,输出一张华氏-摄氏转趣表,华氏温度的取值范围 lower,upper,每次增加2F,计算公式:c=5*(f-32)/9;式中c表示摄氏,f表示华氏。运行例如:Enter lower:30scanf(H%dn,&lower);Enter upper:35printfC'Enter upper:");fahr Celsiusscanf(H%dn,&upper);程序:#include <stdio.h> main()printf(Hfahr celsiusnH);for(fahr=lower; 1 ); )(celsius=3j;printf(n%d 1 4 int fahr,lower,upper;double Celsius;printf(nEnter lower:");(1) A、fahr<=upper B、fahr<upper(2) A、fahr+B、fahr=fahr-2nn,fahr,Celsius);)C、fahr>=upper D、fahr>upperC> fahr+2 D、fahr=fah计2答案:答案: A、5*(fahr-32)/9C、5/9*(fahr-32)B、(5.0/9.0)*(fahr-32)D、5*fahr-32/9答案:C、%6.1fD、%6.0f答案:输入一个整数nn>=2),输入菲波那契序列的前n项,每行输出6个数,菲波那序 列:1, 1, 2, 3, 5, 8, 13,,数列的前两个数都是1,从第三项开场,每个数是前 两个数之和。(2023年春季浙江省计算机二级C语言考试)运行例如:Enter n:101235813213455;printf(n%6dx);count+;if( 3)printf(,'nH);xl=x2; ;#include <stdio.h> main()int count,i,n,xl,x2,x;printf(HEnter n:n);scanf(n%d&n);xl=x2=l;printf(H%6d%6dn,xl,x2);;for(i=l ;i<=n-2;i+) 【供选择的答案】(1)A> count=2B、count=0C、count=lD、count1答案:(2) A> x=xl-x2B、 x=xl+x2C> x=xlD、x=2答案:(3) A、count/6=0B、count%6!=0C、count%6=0D、count/6!=0答案:(4) A> x=xl+x2B、 x2=xlC、 x=x2D、 x2=x答案:【程序说明】求1999之间全部满足各位数字的立方之和等于它本身的数。例如153的秋位数字的 立方和是13+53+3=153运行例如:1 153 370 371 407程序1#include <stdio.h> main() int digit,j,sum,x;for(j=l;j<1000;j+)dosum=sum+digit*digit*digit;x=x/10;while( ):if(j=sum)printf(n%d n,sum);A、sum=O;B、sum=l;C、sum=j;D、;A、x=l;B、x=j;c、;D、x=sum;A、digit=x/10;B、digit=x;C、digit=x%10;D、;8)A、 x=0B、j!0c、 j=oD、x!=0【供选择的答案】案案案案答答答答3、语句while(E);中的表达式E特等价于()A、 E = 0B、E ! =1C、E ! = 0D、E 二二 14、下面程序段的执行结果是()int a, b, c, t;a=l;b=2;c-2;while(a<b<c ) t=a;a=b;b=t;c;printf %d, %d,a, b, c);A、1, 2, 0 B、2, 1, 0 C、1, 2, 1 D、2, 1, 1真题实例:ak和 a index交换A. aindex=ak, ak=aEindexB. ak=aindex, aindex=akC. temp=aindex, aindex=ak, aEk=tempD. temp=aEk, aindex=temp, ak=aindex5、下面程序段的运行结果是) x=y=O;while(x<15) y+, x+=+y;printf (d, %d”, y, x);A、20,7 B、6, 12 C、20, 8 D 8, 206、下面程序段的运行结果是)int n=0;while (n+<=2) ; printf("%d n);A, 2 B、3 C、4 D有语法错误7、设有程序段 t=0;while(printf(*)t+; if (t<3) break;下面描述正确的选项是()A、其中循环限制表达式与0等价B、其中循环限制表达式与0 '等价C、其中循环表达式是不合法的D、以上说法都不对8、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等的数时完毕 循环,请选择填空。main ()int a, b, t;scanf ( "%d, %d,&a, &b);while( )if(a>b) t=a;a=b;b=t;printf ( u%d, %dn,/ , a, b);scanf ( "%d, %d" , &a, &b) ; A、!a=b B、a!=b Cab D、ab9、下面程序的功能是从键盘输入的一组字符中统计出大写字母个数m和小写字母个数n,并输 出m,n中较大者,请选择填空。#include<stdio. h>main()int m=0,n=0;char c;while( )!='n')if(c>='A' &&c<=' V ) m+;if(c' a' &&c二'z' ) n+;printf ( "%dn" , mn?);A. c=getchar () B. getchar () C. c=getchar () D. scanf ( u%c,z , c)A. n:m B. m:n C. m:m D. n:n10、下面程序的功能是将小写字母变成对应大写字母后的其次个字母。其中y变成A, Z变成B。填空#include<stdio.h>main ()char c;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-二30A.c=' B' B.c=' A' C. c-=26 D. c=c+2611,下面程序的功能是在输入的一批正整数中求出最大者,输入0时完毕,请选择填空main()int a, max=0; scanf(, &a);while ()if(max<a) max=a;scanf ( "%d,&a);printf (, max);A. a-0 B. a C!a1 D. !a12、下面程序的运行结果是()main()int num=0;while(num<=2) num+; printf ( u%dnz, , num) ;A.1 B.1<CR>2 C.1<CR>2<CR>3 D.1<CR>2<CR>3<CR>413 .假设运行以下程序时,从键盘输入2473<CR>,那么下面程序的运行结果是()#include<stdio. h>main()int c;while(c=getchar( )!=' n')switch(c- '2 )case 0:case 1:putchar(c+4);case 2:putchar(c+4);break;case 3:putchar(c+3);default:putchar(c+2) ;break;printf( "n" );A. 668977 B.668966 C.66778777 D.6688766【程序 2】ftinclude <stdio. h> mainO(char c;while (c=getchar () !=' O') switch (c),(case ' r :case '9':continue;case ' A' : putchar (' a'); continue;default:putchar(c);.)(19)程序2运行时,输入A1290,A. a2B. aA129(20)程序2运行时,输入B1340,A. B340B. B34输出(19)。C. A129D. A1290输出(20)。C. B1340D. B13414 . C语言中while和do-while循环的主要区分是()A. do-while的循环体至少无条件执行一次B. while的循环限制条件比do-while的循环限制条件严格C. do-while允许从外部转到循环体内D. do-while的循环体不能是复合语句15 .以下程序段0语句int x=3;do print (dn,x-=2) ; while(! (-x);那么上面程序段()A.输入的是1 B.输出的是1和-2 C.输出的是3和0 D.死循环18.下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时完毕循环,填 空。main()long int num;scanf&num);do if () printf (z,%ld, num);scanf(ld, &num);while() ;A. num%100/10=3 . Bnum/100%10=3 C. num% 10/10=3A. !num B. num>0=0 C. !num=0 D. !num!=019 .下面程序的运行结果是()#include<stdio.h>main ()int y=10;doy-;while(-y);printf ( "%dn" ,-y);A .-1 B. 1 C.8 D. -820 .假设运行以下程序时,从键盘输入ADescriptotCR>(CR>表示回车),下面程序的运行结果是#include<stdio.h>main()char c;int v0=0, vl=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' :vl+=l;default:v0+=l;v2+=l; while(c! = , n');printf ( "vO二%d, vl=%d, v2=%dn,/ , vO, vl, v2) ;A) v0=7, vl=4, v2=7 B) v0=8, vl=4, v2=8C)vO=ll, vl=4, v2=ll D)v0=12,vl=4,v2=1221 .下面程序的运行结果是#include<stdio. h>main()int a=l, b=10;dob=a;a+;while(b-<0);printf ( ua=%d, b=%dn,/ ,a, b);a=3, b= 11 B)a=2, b=8 C) a=l, b=-l D) a=4, b=9用于循环次数已经确定的状况B.for循环是先执行循环体语句,后推断表达式C.在for循环中,不能用break语句跳出循环体D. for循环的循环体语句中,可以包含多条语句,但必需花括号括起来23 .对for (表达式1;表达式3)可理解为(B )A. for (表达式1; 0;表达式3)B. for (表达式1; 1;表达式3)C. for (表达式1;表达式1;表达式3)D. for (表达式1;表达式3;表达式3)24 .假设i为整型变量,那么以下循环执行的次数是()for(i=2;i=0;) printf ( "%d” , i-);A.无限次B. 0次C.1次D. 2次例:int i,k=l;for(i=0;i<3;i+) ;k=k+2;printf ( "%d" ,k);程序的输出结果是()25 .以下for循环的语句是() for (x=0, y=0;(y=123)&&(x<4);x+);A.是无限循环B.循环次数不定C. 4次D. 3次26 .以下不是无限循环的语句是()A. for(y=0, x=l;x>+y;x=I+) I=x;B. for (; ;x+=I);C. while(1) x+;D.for(1=10; ;I-) sum+=I;27 .以下程序段的运行结果是(for (y=l ;y<10;) y=(x=3*y, x+1), xT);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=2728 .下面程序段的运行结果是for(x=3;x<6;x+)printf(x%2)?(): ( "#%dn" ), x);a) *3 b)#3 c)#3 d)*3#4#4*4*4#5*5*5#529 .以下程序段不是死循环的是()A. int1=100while(l)1=1% 100+1;if(I>100)break;B. for(;)C. int k=0;do +k; while(k>=0);D.int s=36; while(s); s;