EIGHT 一 单项
1.c以下程序的输出结果是______。 #include
{ int num=0; while(num<=2) { num++; printf(\ } A. 2 B. 1 C. 123 D. 12
2.d两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是______。
#include
{ int x; scanf(\,&x); if(x>5)printf(\,x); else printf(\,x--);
}
A. 7和5
B. 6和3
C. 7和4 D. 6和4
3.c以下描述中正确的是______。
A. 由于do-while循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 B. do-while循环由do开始,用while结束,因此在while(表达式)后无需加分号。 C. 在do-while循环体中,一定要有能使while后面表达式的值变为“假”的操作。 D. do-while循环中,根据情况可以省略while。 4.b下面程序段的输出结果是______。 int i=10;
while(i>7) { i--; printf(\ }
A. 10 9 8 B. 9 8 7 C. 10 9 8 7 D. 8 9 10 5.b若i为整型变量,则以下循环执行的次数是______。 for(i=2;i==0;) printf(\
A. 无限次 B. 0次 C. 1次 D. 2次 6.a执行下面程序段后,i值是______。 int i=0; do {++i; if(i%2!=0);}while(i<=100);
A. 101 B. 100 C. 99 D. 98 7.d若变量都已正确说明,则以下程序段输出为______。 int a=1,b=2,c,d; if (a==b) c=d=a; else c=b; d=b;
printf(\ A. c=1,d=1 #include
if (m++>5) printf(\ else printf(\ } A. 7
B. 6
C. 5 D. 4
9.d在C语言中______。
A. 不能使用do_while语句构成的循环
B. do_while语句构成的循环必须用break语句才能退出
C. do_while语句构成的循环,当while语句中的表达式为非0时结束循环 D. do_while语句构成的循环,当while语句中的表达式为0时结束循环 10.c在下列选项中,没有构成死循环的程序段是______。
A. int i=100; while (1) {i=i0+1; if(i>100)break;} B. for(;;);
B. c=1,d=2
C. c=2,d=1
D. c=2,d=2
8.b以下程序输出结果是______。
C. int k=1000; do{--k} while (k) D. int s=36; while(s>=0);++s; 11.b以下叙述正确的是______。
A. 可以把define和if定义为用户标识符
B. 可以把define定义为用户标识符,但不能把if定义为用户标识符 C. 可以把if定义为用户标识符,但不能把define定义为用户标识符 D. define和if都不能定义为用户标识符 12.a下面有关for循环的正确描述是______。
A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体
D. for循环体语句中,可以包含多条语句,但要用花括号括起来 13.a下面说法中正确的是______。
A.编程时,应该尽量控制嵌套循环的重数。 B.编程时,变量名应尽可能的简短。
C.编程时,应多用goto语句,以增强程序的灵活性。 D.编程时,要尽可能的简洁而新颖,可理解性是第二位的。 14.b以下程序的输出结果是______。
# include
{ int i=0, j=0, k=6; if ((++i>0)||(++j>0)) k++; printf(\ }
A. 0, 0, 6
B. 1, 0, 7 C. 1, 1, 7
D. 0, 1, 7
15.c C语言的for语句中的表达式可以部分或全部省略,但两个______不可省略。但当三个表达式均省略后,因缺少判断条件,循
环会无限制地进行下去,形成死循环。
A. “<” B. “++” C. “;” D. “,” 16.c以下程序段中不能根据x值正确计算出y值的是______。
A. if(x>0) y=1; B. y=0; else if(x==0) y=0; if(x>0) y=1; else y=-1; else if(x<0) y=-1 ;
C. y=0; D. if(x>=0) if(x>=0); if(x>0) y=1; if(x>0) y=1 ; else y=0;
else y=-1; else y=-1;
17.b设有程序段: int x=0,s=0; while(!x!=0) s+=++x; printf(\则运行程序段后______。
A.输出0 B.输出1 C.控制表达式是非法的 D.执行无限次 18.b以下的for循环,______。for(x=0,y=0;(y!=123)&&(x<4);x++);
A.执行3次 B.执行4次 C.循环次数不定 D.是无限循环 19.b请阅读以下程序: #include
{ float a,b; scanf(\ if (a<10.0) b=1.0/a;
else if((a<0.5)&&(a!=2.0))b= 1.0/(a十2.0); else if(a<10.0) b= 1.0/a ; else b=10.0; printf(\
}
若运行时输入2.0(回车),则上面程序的输出结果是______。 A. 0.000000
B. 0.500000
C. 1. 000000
D. 0.250000
20.a语句while (!e);中的条件!e等价于______。
A. e==0; B. e!=1 C. e!=0 D. ~e 21.d以下程序输出结果为______。
#include
for(i=1;i<=5;i++) { b=i%2; while (b-->=0) k++;} printf(\
A. 3,-1 B. 8,-1 C. 3,0 D. 8,-2 22.d下面程序的运行结果是______。
int y=10; do { y--;} while(--y); printf(\
A. -1 B. 1 C. 8 D. 0 23.b有如下程序段运行结束后x的值为______。
Int x,y;
for(x=1,y=1;x<=100;x++)
{ if (y>=20) break; if (y%3==1) { y+=3;continue;} y-=5; } printf(\
A. 9 B. 8 C. 7 D. 6 24.b循环语句for(i=100;i;i-=30); 的执行次数为______。
A. 3次 B. 4次 C. 5次 D. 0次
25.c设有程序段:int n=0; while(n++<3); printf(\,则运行结果是______。
A. 2 B. 3 C. 4 D. 以上都不对 二 判断
1. do-while语句构成的循环只能用break语句退出。F
2. C语言的While循环语句中,While后一对圆括号中的表达式的值决定了循环体是否进行,因此,进入While循环后,一定要有能使表达式的值变为0的操作。T
3. C语言程序的三种基本结构是嵌套结构、递归结构、顺序结构。F 4. if (x!=y) scanf(\ scanf(\语句语法是错误的。F
5. if语句执行时,首先计算紧跟在if后面一对圆括号中的表达式的值,如果表达式的值为非零(\真\),则执行if后的\语句\,然后去执行if语句后的下一个语句。T
6. 语句int x=3;do { printf(\输出的是1和-2。T 7. 语句 x=3; do {printf(\的执行结果是3。 T
8. 执行完下面程序段后,k的值为0。 int i,j,k; for(i=0,j=10;i<=j;i++,j--) k=j-i; T 9.if (x>0) printf ( \语句语法是正确的。F
10. for后的一对圆括号中,可以出现各种形式的与循环控制无关的表达式。T 11. 用do-while语句构成循环时,只有在while后的表达式为非0时结束循环。F 12. 若i为整型变量,则以下循环 i=0; while(i=0)i++;一次也不执行。T
13. 各case和default子句的先后顺序可以变动,而不会影响程序执行结果。T
14. while循环的while()后没有分号,而do-while循环的while()后一定要有一个分号。T 15. for循环中,如果表达式2为空,则该循环一定是死循环。F 三 填空
1. 下面程序的运行结果是_____10______。 #include
while(a<=6){++i;a+=i;} printf(\ } 2. 有以下程序 #include
{ int n=0,m=1,x=2; if(!n) x-=1;
if(m) x-=2; if(x) x-=3;
printf(\ }执行后输出结果是____-4_______。
3.运行以下程序后,如果从键盘上输入student#<回车>,则输出结果为____7,7_______。 #include
{ int v1=0,v2=0; char ch; while((ch=getchar( ))!='#')
switch(ch){case 'd':case 't':default: v1++;case 'a': v2++;} printf(\
4. 若输入整数12345,以下程序的输出结果为____54321_______。 #include
{ int x,y; scanf(\
do{y=x;printf(\5. 以下程序输出的结果是___10_______。 #include
for(j=10;j<11;j++){for(i=9;i==j-1;i++)printf(\6. 以下程序的运行结果是__2,0,0_________。 #include
{int a,b,c; int s,w=0,t=0; a=-1;b=3;c=3; if(c>0) s=a+b;
if(a<=0) {if(b>0) if(c<=0)w=a-b; } else if(c>0)w=a-b;
else t=c; printf(\7.下面程序的运行结果是___10________。 #include
do{++i;a+=i;} while(a<=6); printf(\ }
8.以下程序完成的功能是____输出从键盘上输入数据的绝对值_______。 #include
printf(\请输入一个整数%%d:\\n\ scanf(\&shu ); if ( shu < 0 ) shu = -shu; printf(\ }
9. 下面是计算n!的值的程序。 #include
{ int i,s,n; s=1; scanf(\ for(i=1;i<=n;i++)____s=s*i_______; printf(\ }
10. 以下程序输出结果为___10________。
#include\void main() { int i; for(i=0;i<10;i++); printf(\ NINE 一 单项
1.d下面程序段,______。
for(t=1;t<=100;t++) {scanf(\A. 当x<0时整个循环结束 B.当x>=0时什么也不输出 C.printf函数永远也不执行 D.最多允许输出100个非负整数 2.c以下为死循环的程序段是______。
A. for(i=1; ; ) {if (++i%2==0) continue; if (++i%3==0) break; } B. i=32767; do { if (i<0) break;} while(++i); C. for(i=1; ; ) if (++i<10) continue; D. i=1; while(i--);
3.d下面程序段输出的i值是______。 int i;
for(i=1;i<=100;i++)if((i*i>=150)&(i*i<=200))break; printf(\ A. 10 B. 11 C. 12 D. 13 4.c下面程序段的运行结果是______。
for(y=1;y<10;) y=((x=3*y, x+1), x-1); printf(\
A. x=27,y=27 B. x=12,y=13 C. x=15,y=14 D. x=y=27 5.c以下程序段中循环语句的执行次数为______。 int i=0; do { }while(i==0);
A. 0次 B. 1次 C.无限次 D.有语法错误 6.c若有以下定义::float x;int a,b;则正确的switch 语句是______。 A. switch(x) B. switch(x)
{ case1.0:printf(\ { case1,2:printf(\case2.0:printf(\ } case 3:printf(\ } C. switch (a+b)
D. switch (a+b);
{ case 1:printf(\ { case 1:printf(\case 1+2:printf(\ case 2:printf(\ }
7.c下面程序段输出的结果是______。 int x,y,z; x=20;y=40;z=60; while(x A. 40,36,30 B. 32,28,7 C. 32,28,30 D. 32,28,7.5 8.b定义如下变量: int n=25; 则下列循环的输出结果是______。 while(n>22) { n--; printf(\ A. 22 23 24 B. 24 23 22 C. 25 24 23 D. 25 24 23 22 9.c以下程序的运行结果是______。 #include if(m++> 'b') printf(\ else printf(\ } A. 'a' B. 'b' C. 'c' D. 'd'