C语言循环结构选择题(新)
- 格式:doc
- 大小:97.00 KB
- 文档页数:7
C语言循环结构前的练习一、选择题:(2’*25=50)1、以下程序的输出结果为( C )# include “stdio.h”main(){ int i=4,a;a=i++;printf(“a=%d,i=%d”,a,i);}A)a=4,i=4 B)a=5,i=4 C)a=4,i=5 D)a=5,i=52、以下叙述中正确的是( C )。
A)C语言程序总是从第一个定义的函数开始执行。
B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行。
D)C语言程序中的main()函数必须放在程序的开始部分。
3、下列选项中不正确的实型常量是( B )A)7.375E-1 B)0.3108e 2 C)-44.44 D)123e-24、在C程序中,可以作为用户标识符的一组标识符是( B )A)void define B)as_b3 _224 ElseC)Switch -wer case D)4b DO SIG5、 int类型变量所占字节数是( D )A)1 B)2 C)3 D)46、以下选项中合法的用户标识符是( B )。
A)long B) _2test C)3dmax D) a.dat7、以下有4组用户标识符,其中合法的一组是( C )。
A) for –sub case B) 4d do sizeC) f2_g3 If abc D) WORD void define8、经char w; int x; float y; double z;说明后表达式 w*x+z-y的类型是( D )。
A) float B) char C) int D) double9、下述程序的输出结果是( C )main(){ int a=-1,b=4,k;k=(a++<=0)&&(!(b--<=0));printf(“%d,%d,%d”,k,a,b);}A)0,0,3 B)0,1,2 C)1,0,3 D)1,1,2 10、定义int n=5;下面语句的输出结果为( B )。
一、选择题1.以下叙述正确的是A: do-while 语句构成的循环不能用其它语句构成的循环来代替。
B: do-while 语句构成的循环只能用break 语句退出。
C: 用do-while 语句构成的循环,在while 后的表达式为非零时结束循环。
D: 用do-while 语句构成的循环,在while 后的表达式为零时结束循环。
2.下面有关for 循环的正确描述是A: for 循环只能用于循环次数已经确定的情况B: for 循环是先执行循环体语句,后判定表达式C: 在for 循环中,不能用break 语句跳出循环体D: for 循环体语句中,可以包含多条语句,但要用花括号括起来3.C 语言中while 和do-while 循环的主要区别是A: do-while 的循环体至少无条件执行一次B: while 的循环控制条件比do-while 的循环控制条件严格C: do-while 允许从外部转到循环体内;D: do-while 的循环体不能是复合语句;4.下列关于switch 语句和break 语句的结论中,正确的是A: break 语句是switch 语句中的一部分B: 在switch 语句中可以根据需要使用或不使用break 语句C: 在switch 语句中必须使用break 语句D: switch 语句是break 语句的一部分5..以下正确的描述是A: continue 语句的作用是结束整个循环的执行;B: 只能在循环体内和switch 语句体内使用break 语句;C: 在循环体内使用break 语句或continue 语句的作用相同;D: 从多层循环嵌套中退出时,只能使用goto 语句;6.语句while(!e);中的条件!e 等价于A: e==0B: e!=0C: e!=1D: ~e7.在以下给出的表达式中,与while(E)中的E不等价的表达式是A: !E=0B: E>0||E<0C: E==0D: E!=08.在C 语言中,当do-while 语句中的条件为()时,结束该循环。
第5章循环结构程序设计5.1 基本知识点while语句的使用格式和注意事项do-while语句的使用格式和注意事项for语句的使用格式和注意事项break和continue语句在循环语句中的应用循环结构的嵌套使用goto语句实现循环结构穷举法程序设计方法迭代程序设计方法5.2 练习题51. 单项选择题(1)语句while (!e);中的条件!e等价于 A 。
A. e==0B. e!=1C. e!=0D. ~e(2)下面有关for循环的正确描述是 D 。
A. for循环只能用于循环次数已经确定的情况B. for循环是先执行循环体语句,后判定表达式C. 在for循环中,不能用break语句跳出循环体D. for循环体语句中,可以包含多条语句,但要用花括号括起来(3)C语言中 D 。
A. 不能使用do-while语句构成的循环B. do-while语句构成的循环必须用break语句才能退出C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环(4)C语言中while和do-while循环的主要区别是 A 。
A. do-while的循环体至少无条件执行一次B. while的循环控制条件比do-while的循环控制条件严格C. do-while允许从外部转到循环体内D. do-while的循环体不能是复合语句(5)以下程序段 C 。
int x=-1;do{x=x*x;}while (!x);A. 是死循环B. 循环执行二次C. 循环执行一次D. 有语法错误(6)下列语句段中不是死循环的是__C__。
A. i=100;while (1){i=i%100+1;if (i==20) break;}B. for (i=1;;i++)sum=sum+1;C. k=0;do{++k;} while (k<=0);D. s=3379;while (s++%2+3%2)s++;(7)与以下程序段等价的是__A__。
一、选择题1. 设有如下程序段,则下面描述正确的是int k=10;while (k=0) k=k-1;A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次2. 下面程序段的运行结果是a=1; b=2; c=2;while(a<b<c) { t=a; a=b; b=t; c--;}pirntf(“%d, %d, %d”,a,b,c);A.1,2,0 B.2,1,0 C.1,2,1 D.2,1,1 3. 下面程序段的运行结果是。
int n=0;while(n<=2) n++; printf(“%d”,n);A.2 B.3 C.4 D.有语法错误4. 设有如下程序段,则描述正确的是。
t=0;while (printf(“*”)){t++; if(t<3) break;}A.其中循环控制表达式与0等价B.其中循环控制表达式与‘0’等价C.其中循环控制表达式是不合法的D.以上说法都不对5. 下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对等数时结束循环,请选择填空。
#include<stdio.h>int main(){int a,b,t;scanf("%d%d",&a,&b);while( ){if(a>b) {t=a;a=b;b=t;}printf("%d,%d\n",a,b);scanf("%d%d",&a,&b);}return 0;}A.!a=b B.a!=b C.a==b D.a=b8. 下面程序的功能是在输入的一系列正整数中求出最大者,输入0结束循环,请选择填空。
#include<stdio.h>int main(){int a,max=0;scanf("%d",&a);while( ){if(max<a) max=a;scanf("%d",&a);}printf("%d\n",max);return 0;}A.!a=0 B.a!=0 C.a= =0 D.a=09. 下面程序的运行结果是。
1.猜数字小游戏:每次程序随机生成一个数字,用户输入数字进行猜测,十回合内猜出数据则胜利,否则失败,可重复游戏。
代码如下:#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){int magic;int guess;int count;int ret;char reply;srand(time(NULL));do{magic = rand()%100+1; //产生1到100之间的随机数//count = 0;do{do{printf("Please guess a magic number:");ret = scanf("%d",&guess);if(ret!=1){while(getchar()!='\n');}}while(ret!=1||guess<1||guess>100); //如果输入不是1到100之间的数字则连续读取//count = count+1;if(guess>magic)printf("Wrong!Too big!\n");else if (guess<magic)printf("Wrong!Too small!\n");else{printf("Right!\n");printf("The number is :%d\n",magic);}}while(guess!=magic&&count<10);if (magic==guess)printf("count = %d\n",count);if (magic!=guess)printf("You lose!");printf("Do you want to continue(Y/N or y/n)?\n");scanf(" %c",&reply);}while((reply=='y')||(reply=='Y'));return 0;}2.任意时间时钟时针与分针的夹角:钟面上的时针和分针之间的夹角总是在 0 度~ 359 度之间。
国家二级C语言(选择结构、循环结构)机试模拟试卷1(总分66, 做题时间90分钟)1. 选择题1.下列选项中,当x为大于1的奇数时,值为0的表达式是( )。
SSS_SINGLE_SELA x%2==0B x/2C x%2!=0D x%2==1分值: 2答案:A解析:算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的奇数时,A选项的值为假,即0。
B选项的值为不定值,但绝对不是O。
C选项的值为真,即1。
D选项的值为真,即1。
2.若a是数值类型,则逻辑表达式(a==1)‖(a!=1)的值是( )。
SSS_SINGLE_SELA 1B 0C 2D 不知道a的值,不能确定分值: 2答案:A解析:逻辑或“‖”要求只要两边的运算对象有一个非零,结果就为真。
虽然不知道a的值,但是若a为l,则左边运算对象为1;若a的值不是l,则右边运算对象的值为1,所以总能保证一边非零。
3.当变量e的值不为2、4、6时,值为“真”的表达式是( )。
SSS_SINGLE_SELA (c>=2&&e<=6)&&(c%2 1=1)B (c==2)‖(c==4)‖(c==6)C (c>=2&&c<=6)&&!(c%2)D (c>=2&&c←6)‖(c!=3)lI(c!=5)分值: 2答案:D解析:逻辑或运算符中只要有一个运算量为真,结果就是真,当c>=2&&c<=6条件不成立时,c的值肯定不是2、3、4、5、6,所以c!:3与c!:5均成立,所以D选项的结果一定为真。
4.有以下程序: #include main() { int a=1,b=2,c=3,d=0;if(a==1&&b++==2) if(b!=2‖c一!=3) prinff(“%d,%d,%d\n”,a,b,c);else prinff(“%d,%d,%d\n”,a,b,c);else prinff(“%d,%d,%d\n”,a,b,c); } 程序的运行结果是( )。
循环结构习题循环结构一.选择题1.下面程序段int k=2;while (k=0) {printf(“%d”,k);k--;}则下面描述中正确的是。
A)while循环执行10次B)循环是无限循环C)循环题语句一次也不执行D)循环体语句执行一次2.以下程序段的循环次数是。
for (i=2; i==0; ) printf(“%d” , i--) ;A)无限次B)0次C)1次D)2次4.下面程序的输出结果是。
main ( ){ char c=’A’;int k=0;do {switch (c++) {case ‘A’ : k++ ; break ;case ‘B’ : k-- ;case ‘C’ : k+=2 ; break ;case ‘D’ : k%=2 ; continue ;case ‘E’ : k*=10 ; break ;default : k/=3 ;}k++;} while (c<’G’) ;printf (“k=%d”,k) ;}A)k=3 B)k=4 C)k=2 D)k=05.下面程序的输出结果是。
main ( ){ int x=9;for (; x>0; x--) {if (x%3==0) {prin tf(“%d”,--x);continue ;}}}A)741 B)852 C)963 D)8754216.以下不是死循环的程序段是。
A)int i=100; B)for ( ; ; ) ;while (1) {i=i%100+1 ;if (i>100) break ;}C)int k=0; D)int s=36;do { ++k; } while (k>=0); while (s) ; --s ;7.下述程序段的运行结果是。
int a=1,b=2, c=3, t;while (a<b<="" p="" {t="a;">printf(“%d,%d,%d”,a,b,c);A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,18.下面程序的功能是从键盘输入一组字符,从中统计大写字母和小写字母的个数,选择填空。
循环2一、单项选择题1. 以下程序的输出结果是______。
#include<stdio.h>void main(){ int num=0; while(num<=2) { num++; printf("%d",num); } }A. 2B. 1C. 123D. 12参考标准答案:C2. 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是______。
#include <stdio.h>void main(){ int x; scanf("%d",&x);if(x>5)printf("%d",x);else printf("%d\n",x--);}A. 7和5B. 6和3C. 7和4D. 6和4参考标准答案: D3. 以下描述中正确的是______。
A. 由于do-while循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。
B. do-while循环由do开始,用while结束,因此在while(表达式)后无需加分号。
C. 在do-while循环体中,一定要有能使while后面表达式的值变为“假”的操作。
D. do-while循环中,根据情况可以省略while。
参考标准答案: C4. 下面程序段的输出结果是______。
int i=10;while(i>7) { i--; printf(" %d",i); }A. 10 9 8B. 9 8 7C. 10 9 8 7D. 8 9 10参考标准答案:B5. 若i为整型变量,则以下循环执行的次数是______。
for(i=2;i==0;) printf("%d",i--);A. 无限次B. 0次C. 1次D. 2次参考标准答案:B6. 执行下面程序段后,i值是______。
循环结构1、若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是for (i=5;i;i--)for (j=0;j<4;j++){...}A) 20 B) 25C) 24 D) 30A2、设i,j,k均为int型变量,则执行完下面的for循环后,k的值为for(i=0,j=10;i<=j;i++,j--) k=i+j;A) 12 B) 10C) 11 D) 9B3、当执行以下程序段时x=-1;do { x=x*x;} while( !x);A) 循环体将执行一次B) 循环体将执行两次C) 循环体将执行无限次D) 系统将提示有语法错误A4、若输入字符串:abcde<回车>,则以下while循环体将执行多少次。
while((ch=getchar())=='e') printf("*");A) 5 B) 4C) 6 D) 1B5、有以下程序段int k=0;while (k=1) k++;while循环执行的次数是A) 无限次B) 有语法错,不能执行C) 一次也不执行D) 执行一次A6、语句while(!e);中的条件!e 等价于( )。
A) e==0 B) e!=1C) e!=0 D) ~eA7、以下for循环是( )。
for(x=0,y=0;(y!=123) && (x<4);x++)A) 无限循环B) 循环次数不定C) 执行4次D) 执行3次C8、C语言中while 和do-while 循环的主要区别是( )。
A) do-while的循环体至少无条件执行一次B) while 的循环控制条件比do-while 的循环控制条件严格C) do-while 允许从外部转到循环体内D) do-while 的循环体不能是复合语句A9、以下叙述正确的是( )。
A) continue语句的作用是结束整个循环的执行B) 只能在循环体内和switch语句体内使用break 语句C) 在循环体内使用break语句或continue语句的作用相同D) 从多层循环嵌套中退出时,只能使用goto语句B10、对下面程序段,描述正确的是( )。
for(t=1;t<=100;t++){ scanf("%d",&x);if (x<0) continue;printf("%d\n",t);}A) 当x<0时,整个循环结束B) 当x>=0时,什么也不输出C) printf函数永远也不执行D) 最多允许输出100个非负整数D11、在下列选项中,没有构成死循环的程序段是A) int i=100;while (1){ i=i%100+1;if (i>100) break;}B) for( ; ; );C) int k=1000;do {++k;} while (k>=1000);D) int s=36;while (s) --s;D12、以下程序的输出结果是main( ){ int a,b;for(a=1,b=1;a<=100;a++){ if (b>=10) break;if (b%5==1) { b+=5; continue; } } printf("%d\n",a); }A) 101 B) 6C) 4 D) 3D13、以下程序的输出结果是( )。
#include <stdio.h>main(){int i;for(i=1;i<=5;i++)if(i%2)printf("*");else continue;printf("#");printf("$\n");}A) ***#$ B) #*#*#*$C) *#*#*#$ D) **#*$A14、以下程序段的输出结果是( )。
int k,j,s;for(k=2;k<6;k++,k++){ s=1;for(j=k;j<6;j++)s+=j;}printf("%d\n",s);A) 1 B) 9C) 11 D) 10D15、以下程序段的输出结果是( )。
int k,n,m;n=10;m=1;k=1;while (k<=n) {m*=2;k+=4;}printf("%d\n",m);A) 4 B) 16C) 8 D) 32C 16、设有如下程序段:int i=0, sum=1;do{ sum+=i++;}while(i<6);printf("%d\n", sum);上述程序段的输出结果是( )。
A) 11 B) 16C) 22 D) 15B17、以下程序的输出结果是( )。
#include <stdio.h>main( ){ int count,i=0;for(count=1; count<=4; count++){i+=2; printf("%d",i);}}A) 20 B) 246C) 2468 D) 2222C18、下面程序的输出结果是( )。
main( ){ unsigned int num,k;num=26;k=1;do {k*=num%10;num/=10;} while(num);printf("%d\n", k);}A) 2 B) 12C) 60 D) 18B19、阅读以下程序:main( ){ int x;for(x=5;x>0;x--)if (x--<5) printf("%d,",x);else printf("%d,",x++); }程序运行后的输出结果是( )。
A) 4,3,1 B) 4,3,1,C) 5,4,2 D) 5,3,1,B20、以下程序的功能是:从键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成绩,当输入负数时结束输入。
请填空。
main( ){ float x,amax,amin;scanf("%f",&x);amax=x;amin=x;while (________ ){ if (x>amax) amax=x;if (______) amin=x;scanf("%f",&x);}printf("\namax=%f\namin=%f\n",amax,amin); }A) x<=0 B) x>0x>amin x<=aminC) x>0 D) x>=0x>amin x<aminD20、下面程序是计算n个数的平均值,请填空。
main( ){ int i,n;float x,avg=0.0;scanf("%d",&n);for(i=0;i<n;i++){ scanf("%f",&x);avg=avg+______; }avg=________;printf("avg=%f\n",avg);}A) i B) xavg/i avg/nC) x D) iavg/x avg/nB21、在执行以下程序时,如果从键盘上输入:ABCdef<回车>,则输出为#include <stdio.h>main( ){ char ch;while ((ch=getchar( ))!='\n'){ if (ch>='A' && ch<='Z') ch=ch+32;else if (ch>='a' && ch<'z') ch=ch-32;printf("%c",ch);}printf("\n");}A) ABCdef B) abcDEFC) abc D) DEFB22、运行以下程序后,如果从键盘上输入:65 14<回车>,则输出结果为main( ){ int m,n;printf("Enter m,n:");scanf("%d%d",&m,&n);while (m!=n){ while (m>n) m-=n;while (n>m) n-=m;}printf("m=%d\n",m);}A) m=3 B) m=2C) m=1 D) m=0C23、下面程序的输出结果是( )。
main( ){ int x=10,y=10,i;for(i=0;x>8;y=++i)printf("%d %d ",x--,y);}A) 10 1 9 2 B) 9 8 7 6C) 10 9 9 0 D) 10 10 9 1D24、有如下程序main( ){ int n=9;while(n>6) {n--;printf("%d",n);}}该程序段的输出结果是A) 987 B) 876C) 8765 D) 9876B25、函数pi的功能是根据以下近似公式求π值:(π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n)请填空,完成求π的功能。
#include <math.h>main( ){ double s=0.0; long int i,n;scanf("%ld",&n);for(i=1;i<=n;i++)s=s+_______ ;s=(sqrt(6*s));printf("s=%e",s);}A) 1/i*i B) 1.0/i*iC) 1.0/(i*i) D) 1.0/(n*n)C26、设有以下程序main( ){ int n1,n2;scanf("%d",&n2);while (n2!=0){ n1=n2%10;n2=n2/10;printf("%d",n1);}}程序运行后,如果从键盘上输入1298,则输出结果为( )。
A) 892 B) 8921C) 89 D) 921B27、以下函数的功能是:求x的y次方,请填空。
main( ){ int i,x,y;double z;scanf("%d %d",&x,&y);for(i=1,z=x;i<y;i++)z=z*______ ;printf("x^y=%e\n",z);}A) i++ B) x++C) x D) iC28、下面程序的运行结果是( )。