资源描述
第四章
选择题
1、判断字符型变量c1是否为大写字母的正确表达式为___ B___。
(A) 'Z'<=c1<='Z' (B) (c1>='A') &&(c1<='Z')
(C) ('A'>=c1)||('Z'<=c1) (D) (c1>='a')&&(c1<='Z')
2、设a=3,b=4,c=5,则逻辑表达式"!(a+b)*c-1&&b+c%2"的值是__ C____。
(A) -1 (B) 0 (C) 1 (D) 2
3、请从以下表达式中选出a为偶数时值为0的表达式__ D____。
(A) a%2==0 (B) !a%2!=0 (C) a/2*2-2==0 (D) a%2
4、能正确表示a和b同时为正或同时为负的逻辑表达式是_ D_____。
(A) (a>=0‖b>=0)&&(a<0‖b<0)
(B) (a>=0&&b>=0)&&(a<0&&b<0)
(C) (a+b>0)&&(a+b<=0)
(D) a*b>0
5、能正确表示逻辑关系:"0≤a≤10"的C语言表达式是_ C_____。
(A) 0<=a<=10 (B) a>=0,a<=10
(C) a>=0 &&a<=10 (D) a>=0‖a<=10
6、在C语言中,if语句后的一对圆括号中,用以决定分支流程的表达式__ D____。
(A) 只能用逻辑表达式 (B) 只能用逻辑表达式或关系表达式
(C) 只能用关系表达式 (D) 可用任意表达式
7、为避免嵌套的条件语句if-else的二义性,C语言规定:else与__ B____配对。
(A) 缩排位置相同的if (B) 其之前最近的if
(C) 其之后最近if (D) 同一行上的if
8、下列运算符中优先级最低的是___ A___。
(A) *= (B) && (C) + (D) !=
9、设a=4,b=3,c=2,d=1,则表达式a<b?b:c<d?a:d的结果为__ D____。
(A) 4 (B) 3 (C) 2 (D) 1
10、能正确表示a、b不能同时为零的逻辑表达式是__ A____。
(A) a==0&&b!=0||a!=0&&b==0
(B) (a==0)||(b==0)
(C) (a!=0)||(b!=0)
(D) a*b==0
11、读程序,程序运行结果是【 B 】。
#include <stdio.h>
void main()
{ int a=5,b=4,c=3,d=2;
if (a>b>c) printf("%d\n", d);
else if ( (c-1>=d) ==1) printf("%d\n", d+1);
else printf("%d\n", d+2);
}
(A) 2 (B) 3 (C)4 (D)5
12、表达式2<3&&8<=(a=10)的结果是__ B____。
(A) 0
(B) 1
(C) False
(D) True
13、若i为整型变量,且有程序段如下,则输出结果是_ B_____。
i=122;
if(i%2) printf("####");
else printf("****");
(A) #### (B) ****
(C) ####**** (D) 有语法错误, 无输出结果
14、若变量都已正确说明,则以下程序段输出为__ A____。
int a=2,b=1,c,d;
if (a==b) c=d=a;
else c=b;
d=b;
printf("c=%d,d=%d",c,d);
(A) c=1,d=1 (B) c=1,d=2 (C) c=2,d=1 (D) c=2,d=2
15、请阅读以下程序:
# include <stdio.h>
void main()
{ int a=2,b=0,c=0;
if(a=b+c) printf("###");
else printf("&&&"); } 以上程序__ C____。
(A) 有语法错不能通过编译 (B) 可以通过编译但不能连接
(C) 输出&&& (D) 输出###
16、读程序,程序运行结果是【 C 】。
#include <stdio.h>
void main ( )
{ int m=5;
if (m++>5) printf("%d\n",m);
else printf("%d\n",m--); }
(A) 4 (B) 5 (C)6 (D) 7
17、设int a = 2,b = 3, x = 1;则执行语句
if (a>2)
if (b>2)
x = 2 ;
else x = 3;
后 x 的值是_ B_____。
(A) 0 (B) 1 (C) 2 (D) 3
18、以下if语句语法正确的是_ A_____。
(A) if (x>0) (B) if (x>0) printf ( "%f ",-x )
{ x=x+y; printf ("%f ", x);} else printf ("%f",-x);
else printf ("%f ", -x);
(C) if (x>0) (D) if(x>0)
{x=x+y ; printf ("%f ", x);}; { x=x+y ; printf ("%f", x)}
else printf ("%f", -x) ; else printf ("%f", -x);
19、读程序,程序运行结果是【 B 】。
#include <stdio.h>
void main()
{ float x=2.0,y;
if(x<0.0) y=0.0;
else if(x<5.0) y=1.0/x;
else y=1.0;
printf("%4.1f\n",y);
}
(A) 0.0 (B) 0.5
(C) 1.0 (D) 不确定
20、以下程序段中不能根据x值正确计算出y值的是___ C___。
(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;
21、若有条件表达式(expression) ?a++:b--,则以下表达式中能完全等价于表达式(expression)的是__ B____。
(A) (expression==0) (B) (expression!=0)
(C) (expression==1) (D) (expression!=1)
22、若有以下定义: float x;int a,b;则正确的switch 语句是D______。
(A) switch(x) (B) switch(x)
{ case 1.0:printf("*\n"); { case 1:printf("*\n");
case 2.0:printf("**\n"); } case 2:printf("**\n"); }
(C) switch (a+b) (D) switch (a+b);
{ case 1,2:printf("*\n"); { case 1:case 2: printf("*\n");
}
填空题
1、已知a=2.5,b=2,c=3.6,表达式a>b&&c>a || a<b&&!c>b的值是【 1 】。
2、表示"整数x的绝对值大于2"时值为"真"的C语言表达式是【 x>2||x<-2 】。
3、C语言提供的三种逻辑运算符是&& 、||和【 ! 】。
4、表达式0≤a≤5且a≠3的C语言表达式是【 (0<=a&&a<=5)&&(a!=3) 】。
5、以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。如'a'变成'f','w'变成'b'。请在空中填入正确内容。
#include <stdio.h>
void main()
{ char c; c=getchar();
if(c>='a'&&a<='u') 【 c=c+5 】;
else if(c>='v'&&c<='z') c=c-21;
putchar(c); }
6、阅读下面程序:
#include <stdio.h>
void main()
{ int s, t, a, b;
scanf("%d%d",&a, &b);
s=1; t=1;
if(a>0) s=s+1;
if(a>b) t=s+t;
else if (a==b) t=5;
else t=2*s;
printf("s=%d, t=%d", s, t); }
为了使输出结果t=4, 输入量a和b应满足的条件是【 b>a>0 】。
7、以下程序运行后的输出结果是【 3 】。
#include <stdio.h>
void main( )
{ int a=1, b=2, c=3;
if (a)
{ if (b<0) c=0; }
else c++ ;
printf("%d\n",c);
}
8、运行下面的程序,从键盘上输入3,
#include <stdio.h>
void main()
{ int x; scanf("%d",&x);
if(x>5)printf("%d",x);
else printf("%d\n",x--);
}
程序运行结果是【 3 】。
9、读程序,程序运行结果是【 'c' 】。
#include <stdio.h>
void main()
{ char m='b';
if(m++> 'b') printf(" %c\n",m);
else printf("%c\n",m--); }
判断题
1、switch选择结构中必须有default子句。B
2、如果x>y或a<b为真,那么表达式(x>y&&a<b)为真。B
3、假定变量x,y,z在说明时已赋初值,则if ((x=y+5)>0) z=x;是正确的。A
4、语句if(a) x=1;与 if(a==0)x=1;等价。B
5、if (x>0) {x=x+y ; printf ("%f ", x);} else printf ("%f", -x) ; 语句语法是正确的。A
6、if语句后面的表达式并不限于是关系表达式或逻辑表达式,而可以是任意表达式。if语句中可以再嵌套if语句。A
7、5>0 && 4>2的结果为假。B
8、a&&b&&c逻辑表达式中,当a为假时将不再计算b和c的值了。A
第五章
选择题
1、执行程序段: x=-1; do { x=x*x;} while(!x); 的结果是__ C____。
(A)死循环 (B)循环执行2次 (C)循环执行一次 (D)有语法错误
2、以下程序的输出为___ D ___。
#include<stdio.h>
void main( ) { int y=5; while (y--); printf ("y=%d\n", y);}
(A)y=0 (B)无限循环,无结果输出 (C)y=1 (D)y=-1
3、设有程序段: int x=0,s=0; while(x!=0) s+=++x; printf("%d",s); ,则运行程序段后_ A _____。
(A)输出0 (B)输出1 (C)控制表达式是非法的 (D)执行无限次
设有程序段: int k=10; while(k=0) k=k-1; ,则下面描述正确的是_ C _____。
4、(A)while 循环执行10次 (B)循环是无限循环
(C)循环体语句一次也不执行 (D)循环体语句执行一次
5、C语言的do-while循环中,循环由do开始,用while结束;而且在while表达式后面的__ B ____不能丢,它表示do-while循环的结束。
(A)\n (B)“;” (C)“%” (D) “,”
6、以下能正确计算1×2×3×4...×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);
7、以下描述中正确的是__ C ____。
(A)由于do-while循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。
(B)do-while循环由do开始,用while结束,因此在while(表达式)后无需加分号。
(C)在do-while循环体中,一定要有能使while后面表达式的值变为“假”的操作。
(D)do-while循环中,根据情况可以省略while。
8、C语言的for语句中的表达式可以部分或全部省略,但两个___ C ___不可省略。当三个表达式均省略后,因缺少判断条件,循环可能会无限制地进行下去,形成死循环。
(A)“<” (B)“++” (C)“;” (D)“,”
9、对于for(表达式;;表达式3)可理解为_ B _____。
(A)for(表达式;0;表达式3) (B)for(表达式;1;表达式3)
(C)for(表达式;表达式1;表达式3) (D)for(表达式;表达式3;表达式3)
10、若i为整型变量,则以下循环执行的次数是__ B ____。
for(i=2;i==0;) printf("%d",i--);
(A)无限次 (B)0次 (C)1次 (D)2次
11、以下for循环的执行次数是_ C _____。
for(x=0,y=0;(y=3)&&(x<4);x++,y++);
(A)是无限循环 (B)循环次数不定 (C)执行4次 (D)执行3次
12、设i为整型量,执行循环语句for(i=50;i>=0;i-=10);后,i值为_ A _____。
(A)-10 (B)0 (C)10 (D)50
13、下面有关for循环的正确描述是__ D ____。
(A)for循环只能用于循环次数已经确定的情况。(B)for循环是先执行循环体语句,后判断表达式。
(C)在for循环中,不能用break语句跳出循环体。(D)for循环的循环体语句中,可以包含多条语句,但要用花括号括起来。
14、下面有关for循环的正确描述是__ A ___。
(A)for语句的三个表达式都是可以省略的,但分号“;”绝对不能省略。(B)for语句的三个表达式都是可以省略的,可以写成for( )。
(C)在for语句中,至少会执行循环体语句一次。 (D)for(;;) ; 是一条语法上错误的语句。
15、在下列选项中,没有构成死循环的程序段是C ______。
(A)int i=100; while (1) {i=i%100+1; if(i>100)break;} (B)for(;;);
(C)int k=1000; do{--k;} while (k); (D)int s=36; while(s>=0) ; --s;
16、以下程序输出结果为___ D ___。
#include <stdio.h>
void main()
{ int i,b,k=0;
for(i=1;i<=3;i++)
{ b=i%3;
while (b-->=0) k++;
}
printf("%d,%d\n",k,b);
}
(A)3,-1 (B)6,-1 (C)3,0 (D)6,-2
17、以下描述正确的是__ C ____。
(A)goto语句只能用于退出多层循环。 (B)switch语句中不能出现continue语句。
(C)只能用continue语句来终止本次循环。 (D)在循环中break语句不能独立出现。
18、以下不正确的描述是_ B _____。
(A)break语句不能用于循环语句和switch语句外的任何其他语句。
(B)在switch语句中使用break语句或continue语句的作用相同。
(C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行。
(D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环。
19、以下叙述正确的是__ C ____。
(A)for循环中的break; 语句表示:当条件成立时中止程序执行。
(B)for循环中的continue; 语句表示:当条件成立时中止本层循环。
(C)for循环中的break; 语句表示:当条件成立时中止本层循环。
(D)for循环中的break; 语句表示:当条件成立时暂停本次循环。
20、下面程序段输出的i值是__ C
#include<stdio.h>
void main()
{ int i;
for(i=1;i<=50;i++)
if((i*i>=130)&(i*i<=180))break;
printf("%d\n",i);
}
(A)10 (B)11 (C)12 (D)13
填空题
1、当运行下面程序时,从键盘键入Hello?<回车>,则下面程序的运行结果是【 Ifmmp 】。
#include<stdio.h>
void main()
{char c;
while((c=getchar())!='?')
putchar(++c);
}
2、执行下面程序后,k值是【40 】。
#include<stdio.h>
void main()
{ int k=1,n=452;
do {
k*=n%10; n/=10;
} while(n);
printf("%d\n",k);
}
3、以下程序输出结果为【 10 】。
#include"stdio.h"
void main()
{ int i; for(i=0;i<10;i++); printf("%d",i); }
4、下面程序的运行结果是【 55 】。
#include<stdio.h>
void main()
{ int a=0,i;for(i=1;i<=5;i++) a+=i*i;printf("%d\n",a); }
5、在执行以下程序时,如果从键盘上输入:ABCdef<回车>,则输出为【 abcDEF 】。
#include<stdio.h>
void 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");
}
6、下面程序的功能是将从键盘上输入的一对数,由小到大排序输出。当输入一对相等数时结束循环。请将程序补充完整。
#include<stdio.h>
void main()
{ int a,b,t; scanf("%d%d",&a,&b);
while(【a!=b 】)
{ if (a>b) {t=a;a=b;b=t;}
printf("%d,%d\n",a,b);
scanf("%d%d",&a,&b);
}
}
7、下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,z变成B。请将程序补充完整。
#include<stdio.h>
void main()
{ char c;
while ((c=getchar())!='\n')
{ if (c>='a' && c<='z') 【 c-=30 】;
if (c>'Z' && c<='Z'+2) 【 c-=26 】;
printf("%c\n",c);
}
}
8、下面程序的功能是从键盘输入的一组字符中分别统计出大写和小写字母的个数,当输入换行符时结束输入。请将程序补充完整。
#include<stdio.h>
void main()
{ int m=0,n=0; char c;
while ( (【 c=getchar() 】)!='\n')
{ if (c>='A' && c<='Z') m++;
if (c>='a' && c<='z') n++;
}
printf("m=%d,n=%d\n",m,n);
}
9、下面程序段是从键盘输入的字符中统计数字字符个数,用换行符结束循环。请将程序补充完整。
int n=0,c;
c=getchar();
while(【 c!='\n' 】)
{ if(【 c>='0'&&c<='9' 】) n++;
c=getchar();
}
10、下面程序的功能是计算1-3+5-7+...-99+101的值。请将程序补充完整。
#include<stdio.h>
void main()
{ int i,t=1,s=0;
for(i=1;i<=101;i+=2) {【t=t*i 】; s+=t;【t=-t/i 】;}
printf("%d\n",s);
}
11、下面程序的功能是用do-while 语句求1-1000之间满足“用3除余2、用5除余3、用7除余2”的数,且一行只打印5个数。请将程序补充完整。
#include<stdio.h>
void main()
{int i=1,j=0;
do {if (【 i%3==2&&i%5==3&&i%7==2 】)
{ printf("%4d",i); j=j+1;
if (【 j%5==0 】) printf("\n"); }
i=i+1;
}while(i<1000);
}
判断题
1、while语句do-while语句无论什么情况下,二者的执行结果都一样。B
2、C语言的while、do-while和for几个循环语句,可以相互嵌套。A
3、用do-while语句构成循环时,只有在while后的表达式为非0时结束循环。B
4、要使for(表达式1;表达式2;表达式3){循环体}不形成死循环,表达式2一定不能省略。B
5、while循环的while()后没有分号,而do-while循环的while()后一定要有一个分号。A
6、continue语句的功能就是结束本层循环。B
7、break语句不能用于循环语句和switch语句之外的任何其它语句。A
8、三种循环(for循环、while循环和do-while循环)可以互相嵌套,但必须使用相同的循环控制变量。B
展开阅读全文