72、设有语句int x=3,y=3,a=1,b=2;表达式(x=a>b)&&(y=b>a)的值是() A. 8 B. 1 C. 5 D. 0 73、若有定义:int a=2,b=3;float x=3.5,y=2.5;
则表达式(float)(a+b)/2+(int)x%(int)y的值是() A. 3.5 B. 3.0 C. 2.5 D. 2.0
74、若有定义:int b=7;float a=2.5,c=4.7;则表达式a+(b/2*(int)(a+c)/2)/4的值是(B)
A. 2.5 B. 3.5 C. 4.5 D. 5.5
75、若有定义:int a=6,b=2;char c1=’a’,c2=’b’;则表达式a+b%5+c2-c1的值是( C) A. 7 B. 8 C. 9 D. 表达式错误 76、在下列运算符中,优先级最高的运算符是(C) A. <= B. != C. ! D. ||
77、设有定义:char c;float f;int i;unsigned u;double d;下列各表达式的类型分别是(A)
1. u+9 2. d!=f&&(i+2) 3. 8.2*i+c
A. 1. unsigned,2.int,3.double B. 1.double,2.double,3.double C. 1.int,2.double,3.char D. 1.unsigned,2.double,3.int
控制结构
78、以下程序段运行时,若从键盘输入10,则输出结果是(D
int a;
scanf(“%d”,&a);
if(a++>10) (先与10比较,再a++;)
printf(“%d\\n”,a); else
printf(“%d\\n”,++a); (++a后输出) A. 2 B. 11 C. 3 D. 12 79、以下程序的运行结果是()
void main() {
int x,y=1,z; z=-1; if(z==0) z=-z; else
x=y>0?3:5;
6
printf(“%d\\n”,x); }
A. -1 B. 3 C. 1 D. 5
80、对于整型变量x,下属if语句()与赋值语句:x=x%2==0?1:0;不等价。 A. if(x%2!=0) x=0;else x=1; B. if(x%2) x=1;else x=0; C. if(x%2==0) x=1;else x=0; D. if(x%2==1) x=0;else x=1; 81、以下程序段运行的结果是() int a,b,c,x; a=b=c=0;x=15; if(!a) x--; else if(b); if(c) x=3; else x+=4;
printf(\
A. 15 B. 17 C. 18 D. 19
82、若有定义:int a=1,b=2,c=3;则执行以下程序段后a,b,c的值分别为(D
if(a
{c=a;a=b;b=c;} (c=1,a=2,b=c=1)
A. a=1,b=2,c=3 B. a=2,b=3,c=1 C. a=2,b=3,c=3 D. a=2,b=1,c=1
83、以下程序段运行后变量a的值为()
int x=6,y=5; int a;
a=(--x==y++)?x:y+1
A. 0 B. 1 C. 6 D. 5 84、以下程序的运行结果是(C
void main() {
int n=?e?;
switch(n--) (n将一直减下去,知道遇到break为止,n=e 后面语句没有,所以
就输出error,因为后面没跟break ,所以继续向下执行直到遇到break为止)
{
defalut:printf(“error ”); case ?a?:
case ?b?:printf(“good”);break; case ?c?:printf(“pass”); case ?d?:printf(“warn”); }
}
A. error B. good C. error good D. warn 85、以下程序的运行结果是(C
void main()
7
{
int n=?c?; switch(n++) {
defalut:printf(“error”); case ?a?:
case ?b?:printf(“good”);break; case ?c?:printf(“pass ”);
(因为后面没跟break,所以继续往下执行输出warn)
case ?d?:printf(“warn”); }
}
A. pass B. warn C. pass warn D. error 86、以下程序的运行结果是(D
void main() {
int n=5;
if(n++>6) (n先与6比较,再n++ printf(“%d\\n”,n); else
printf(“%d\\n”,++n); (先++后输出 }
A. 4 B. 5 C. 6 D. 7
87、下面关于switch语句的叙述中,错误的是(A) A. case后面的表达式可以是关系表达式 B. switch语句是多分支选择语句
C. 每一个case后面的值必须互不相同,否则会出现矛盾的现象
D. 在执行一个case分支后,可用一个break语句使流程跳出switch语句 88、若有定义:int a=1,b=2,c=3;则以下程序段运行后c的值为(D
if(a>b) c=a*b; else c=a-b;
A. 2 B. 0 C. 1 D. -1
89、若有定义:int x;以下不会产生死循环的是(A A. for(;(x=getchar())!=?\\n?;); B. while(1){x++;} C. for(i=10;;i++); D. for(;;x+=1);
90、在循环语句的循环体中,break语句的作用是(D A. 暂停程序的运行 B. 结束本次循环
C. 继续执行break语句之后的循环体各语句 D. 提前结束循环,接着执行该循环后续的语句
91、以下程序段运行后,循环体中的“count+=2;”语句运行的次数为(A
int i,j,count=0;
8
for(i=1;i<=4;i++) {
count+=2;
printf(“%d”,count); }
A. 4次 B. 10次 C. 16次 D. 20次
92、在c语言中while循环和do-while循环的主要区别是(B
A. do-while循环体内可以使用break语句,while循环体内不能使用break语句 B. do-while的循环体至少无条件执行一次,while的循环体不是
C. do-while循环体可以使用continue语句,while循环体内不能使用continue语句
D. while的循环体至少无条件执行一次,do-while的循环体不是 93、以下程序段运行后,循环体运行的次数为(A)
int i=0,x;
for(;i<10;i++) x=x+i;
A. 10 B. 0 C. 1 D. 无限 94、以下程序段运行后变量n的值为(D
int i=1,n=1;
for(;i<3;i++) (遇到continue后直接返回验证循环条件,不在往下执行 {continue;n=n+i;}
A. 4 B. 3 C. 2 D. 1 95、有以下程序:
void main() {
int i;
for(i=0;i<3;i++) switch(i) {
case 1:printf(“%d”,i); case 2:printf(“%d”,i); case 3:printf(“%d”,i);
}
}
执行后输出的结果是(A
A. 11122 B. 01222 C. 013020 D. 120 96、以下程序的运行结果是(C
void main() {
int sum=0,item=0; while(item<5) {
item++; sum+=item;
9
if(sum>=6)
break; (当sum>=6时马上跳出循环,不在管item是否大于5了 }
printf(“%d\\n”,sum);
}
A. 10 B. 15 C. 6 D. 7 97、以下程序的运行结果是(B
voin main() {
int sum=0,item=0; while(item<5) {
item++;
if(item==2) (检查item是否等于2,如果是则跳出循环 ,在检测item是
否小于 5 ,如果item不等2则进行sum+=item运算)
continue; sum+=item; }
printf(“%d\\n”,sum); }
A. 10 B. 13 C. 15 D. 1 98、以下程序段执行后变量sum的值为(C
int i,j=1,sum=0; for(i=1,i<=3,i++) {
sum+=j; j++; }
A. 5 B. 3 C. 6 D. 4 99、以下程序的运行结果是(D
#include
int y=10; do
{y--;} while(--y);
printf(\}
A. 1 B. 2 C. -1 D. 0
数组
10