答案秋季省考练习C语言选择题.docx
《答案秋季省考练习C语言选择题.docx》由会员分享,可在线阅读,更多相关《答案秋季省考练习C语言选择题.docx(47页珍藏版)》请在冰豆网上搜索。
答案秋季省考练习C语言选择题
2011年秋季省考练习——C语言选择题
1.在C语言中,合法的字符常量是(D)。
P24
A.'字'
B."A"
C."ABC"
D.'\x41'
注释:
字符常量的表现形式有两种:
(1)使用单引号括起来的一个字符。
例如:
’a’、’b’、’?
’
(2)使用转义字符表示方法表示的字符。
转义字符示意反斜杠’\’开头的,后面跟字符或数字,并用单引号括起来表示字符常量。
2.下列叙述错误的是(D)。
P13
A.注释部分可单独占用一行,也可跟在语句的后面
B.若一条语句较长,可分写在多行上
C.C源程序必须包含一个main()函数
D.语句是构成C源程序的基本单位
注释:
函数是C语言程序的基本单位。
3.关于C语言数据类型,叙述正确的是(A)。
P21
A.变量使用前应定义相应的数据类型
B.不允许使用空类型
C.指针类型属于基本类型
D.结构类型并不是构造类型
注释:
认真掌握图3-1C语言的数据类型。
4.C语言函数体使用一对(C)将构成函数的语句括起来。
A.'<'和'>'
B.'('和')'
C.'{'和'}'
D.'['和']'
5.一个C源程序是由(B)。
P13
A.一个主程序和若干子程序组成
B.一个或多个函数组成
C.若干子过程组成
D.若干子程序组成
注释:
C语言程序都必须有且只有一个主函数,还可以包含任意多个不同名的函数。
6.C源程序的编译是指对源程序(B)。
P15
A.进行录入与编辑
B.生成以二进制代码形式表示的目标程序
C.进行查错与解释
D.进行连接与运行
注释:
由于计算机只能识别和执行由0和1组成的二进制文件,而不能识别和执行高级语言编写的源程序,所以必须先用C语言系统的编译程序对其进行编译,以生成以二进制代码形式表示的目标程序。
7.C语言的下列运算符中,优先级最高的运算符是(A)。
P41-42
A.++
B.+=
C.||
D.!
=
注释:
认真掌握表3-3C语言运算符的优先级与结合性。
8.下列(D)为合法的用户标识符。
P28
A.float
B.5k
C.x0.6
D._name
注释:
标识符可以由字母、数字和下划线构成,且必须由字母或下划线开头,其中字母是指英文26个字母,可以是大写或小写的。
9.下列(A)为合法的数值常量。
P23-24
A.-686
B.-E+7
C.6,860
D."6,860"
注释:
(1)整型常量:
十进制整数:
由0~9的数字序列组成,前面可加上+或—表示正数或负数2312、-12等
八进制整数:
以0(零)开头,由0~7的数字序列构成,如0123表示八进制数123,其值为1×82+2×81+3×80=83,即十进制的83。
十六进制整数:
以0x或0X开头(0x中的0是数字零),可以由数字0~9和字母A~F或a~f构成,A~F字母用于表示数字10~15。
例如,0x2F表示2×161+15×160=47,即十进制的47。
(2)浮点型常量
十进制小数形式:
由数字0~9、小数点和+、--组成的。
如3.14、-23.56
指数形式:
由数字0~9、字母e(或E)和+、-号组成,它的形式为aEn,意为a×10n,其中a为十进制整数或小数,n为十进制整数。
例如:
2.5e3(表示2.5×103),-3.5e-2(表示-3.5×10-2)。
.1以指数形式表示实数时,a和n都不能省略,n必须为整数。
例如,e5、3e、3e2.5等都是不合法
的。
.2以十进制小数形式表示实数时,整数和小数部分可省略其中任一个。
例如,35、26.都是合法的。
.3浮点型常量默认的是double型(双精度),如果在后面加上F或f,则其类型为float(单精度),如2.45F、3.5e2F。
.4如果在一个浮点型常量后面加上一个L或l,则表示为longdouble型,如2.4e2L。
10.下列(D)为合法的字符常量。
A.''\nm''
B."\mn"
C."B"
D.'B'
11.TurboC中,基本数据类型存储空间长度的排列顺序是(A)。
P28-29
A.charB.char=intC.charD.char=int注释:
认真掌握表3-2TurboC的基本数据及存储类型
字符型char1个字节;整型int或短整型shortint:
2个字节
长整型longint:
4个字节
单精度浮点型float4个字节双精度浮点型double8个字节
长双精度浮点型longdouble10个字节
12.下列合法的数据类型关键字是(B)。
A.Duble
B.float
C.Int
D.character
13.已知'A'的ASCII码的十进制值为65,'0'的ASCII码的十进制值为48,则以下程序运行结果是(A)。
main()
{charch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
}
A.67,D
B.C,D
C.C,68
D.67,68
注释:
可利用WINTC进行调试,查看结果;
或通过计算得到’5’-‘3’=2‘6’-‘3’=3
14.若已定义:
inta=6;下列正确的赋值表达式是(C)。
A.a*6
B.a+3=6
C.a+=6
D.6+=a
注释:
变换后左端必须是单个变量,才能进行赋值C:
a=a+6
15.若已定义:
inta;语句a=5%6-(6/5);执行后,变量a的值为(A)。
A.4
B.-1
C.3.8
D.-1.2
注释:
乘*、初/、求模%运算优先级相同
5%6=56/5=1(整数除,得到的是商的整数部分)
16.若已定义:
inta,b,c;语句a=(b=9,c=5,b*c);执行后,变量a的值为(A)。
A.45
B.9
C.5
D.0
注释:
逗号表达式的求值过程是,从左向右依次对各表达式求值,并将最右边一个表达式的值作为整个表达式的值。
17.若已定义:
inta,b;floatx=25.8;下列符合C语言语法的表达式是(A)。
P47,P42
A.a=(int)x/3
B.a=x%3
C.a=(x*10)%3
D.b=int(x)%3
注释:
求余运算要求参加运算的两个操作数必须都为整型数据
18.若已定义:
inta=3;语句a+=a/=2;执行后,变量a的值是(B)。
A.1
B.2
C.3
D.5
注释:
赋值运算符=的结合方向是右到左原式a+=(a/=2)->a+=1->a=2
19.下列语句中,符合C语言语法的赋值语句是(C)。
P46,P53-54
A.a=7+b+c=a+7;等价于a=(7+b+c=a+7)7+b+c=a+7是错误的
B.a=7+b++=a+7;等价于a=(7+b++=a+7)7+b++=a+7是错误的
C.a=7+b,b++,a+7;等价于a=(7+b,b++,a+7)
D.a=7=b,c=a+7;不符合第2点:
a=(7=b)
注释:
赋值表达式的语法格式:
变量名=表达式
1.左值必须是一个变量,可以指明一个确定的可存储位置。
如a+b=5是错误的;
2.右值可以是常量、变量、函数调用或任何合法的C语言表达式;
3.赋值运算符本身也是一个表达式,应有一个值,值就是左操作数的新值。
a=b=3+5等价于a=(b=3+5)
20.下列叙述正确的是(A)。
A.(int)6.0/2与6/2结果的类型一致
B.6.0/2与1/2*6.0结果一致
C.6/2与6.0/2.0结果的类型一致
D.6/2.0与6/2结果的类型一致
21.下列叙述正确的是(C)。
P47
A.表达式"3"+"4"的结果是"34"
B.若已定义:
inta,b;,则表达式(a+b)++是进行a+b之和的自增1运算
C.强制类型转换运算的优先级高于算术运算
D.表达式'3'+'4'的结果是'7'
22.若已定义:
inta=5,b;能使变量b值为2的赋值表达式是(A)。
A.b=(a++)-3
B.b=a-(3++)
C.b=(a++)/3
D.b=(a+7.8)/4
23.若已定义:
intx=2,y=3;语句y-=x++;执行后变量x,y的值分别是(B)。
A.x为3,y为0
B.x为3,y为1
C.x为2,y为0
D.x为2,y为1
24.与右侧数学式子对应的C语言表达式是(?
)。
P303---------没有对应数学式子,但需了解pow函数的使用方法。
A.3*pow(x,n)/(2*x-1)
B.3*pow(n,x)/(2*x-1)
C.3*x^n/(2*x-1)
D.3*pow(x,n)/2*x-1
25.以下程序运行时,若从键盘输入5,则输出结果是(D)。
main()
{inta;
scanf("%d",&a);
if(a++>5)printf("%d\n",a);
elseprintf("%d\n",a--);
}
A.7
B.4
C.5
D.6
26.若已定义:
floata;拟从键盘输入数据236给变量a,应选用(B)语句。
A.scanf("%d",&a);
B.scanf("%f",&a);
C.scanf("%3d",&a);
D.scanf("%.0f",&a);
27.若已定义:
charchr;拟使用scanf()函数将键盘输入的数据赋予变量chr,无法实现的是(D)。
A.scanf("%c",&chr);
B.scanf("%d",&chr);
C.scanf("%u",&chr);
D.scanf("%e",&chr);
注释:
关于格式控制符请参看P307页的对应参考资料。
28.若已定义:
intx=10;语句printf("x=%o,x=%d\n",x,x);执行后的输出结果是(B)。
A.x=12,x=12
B.x=12,x=10
C.x=10,x=10
D.x=10,x=12
29.若有下列语句段:
charchr;
inta;
scanf("%c%d",&chr,&a);
拟从键盘将'B'和6分别赋予变量chr和a,正确的数据输入是(A)。
A.B6
B.B,6
C.6B
D.6,B
30.下列程序段的运行结果是(D)。
inta=66;
charc='A';
printf("%c+%c=%d\n",c,a,c+a);
(注:
字母'A'的ASCII值为65)
A.65+B=131
B.A+66=131
C.65+66=131
D.A+B=131
31.有以下程序:
main()
{intc;
while((c=getchar())!
='\n')
{switch(c-'2')
{case0:
case1:
putchar(c+4);
case2:
putchar(c+4);break;
case3:
putchar(c+3);
default:
putchar(c+2);break;
}
}
printf("\n");
}
当输入:
247<回车>,程序的输出结果是(B)。
A.689
B.6689
C.66778
D.66887
32.若已定义:
inta=6,b=4,c;语句c=a>b;执行后变量c的值为(C)。
A.2
B.0
C.1
D.6
33.若已定义:
inta=6,b=4,c;语句b=((c=a)>b);执行后变量c的值为(B)。
A.2
B.6
C.1
D.0
34.若已定义:
inta=2,b=1;则表达式a&&!
b的值为(B)。
A.1
B.0
C.2
D.3
35.若已定义:
inta;判断变量a值是否为偶数的是(C)。
A.a%2==1
B.!
(a%2==0)
C.!
(a%2)
D.a%2
36.若已定义:
inta=5,b=3,c=1;则表达式(c=b)&&(a-c<=b)的值是(B)。
A.1
B.0
C.3
D.2
37.以下程序运行后,a的值是(C)。
main()
{inta,b;
for(a=1,b=1;a<=100;a++)
{
if(b>=20)break;
if(b%3==1){b+=3;continue;}
b-=5;
}
}
A.101
B.100
C.8
D.7
38.若已定义:
inta=4;floatx=3.6;下列正确的赋值表达式是(D)。
A.a=int(x)
B.x=(float)a%x
C.x=float(a)
D.x=x/a
39.若已定义:
chara='A';intb=66;下列表达式错误的是(C)。
P25
A.a=b/a
B.a=a-b
C.a=a+B
D.b%a
注释:
C语言在内存中存放字符时是用字符数据的ASCII码值存储的。
如,字符’a’的ASCII码值为97.在ASCII码范围内的整数与字符可以通用。
一个字符可以以字符形式输出,也可以以整数形式输出。
字符数据可以参加算术运算,相当于使用其ASCII码值进行运算。
40.若已定义:
inta=5;floatb=1.5;则表达式a+b*10/3的值为(D)。
A.6
B.6.500000
C.9.500000
D.10.000000
注释:
各类型数值数据的混合运算时,系统将自动进行类型转换
自动转换原则P45图3-5
41.若已定义:
inta=3,b=5,c=2;,则表达式c+!
a
A.1
B.2
C.0
D.3
42.下列关于运算符优先级叙述错误的是(A)。
P42
A."%"取模运算符优先级最高
B.算术运算符优先级高于关系运算符
C."&&"和"!
!
"逻辑运算符优先级低于关系运算符
D."!
"逻辑非运算符高于"="赋值运算符
43.以下程序段的运行结果是(D)。
intx=3;
do{
printf("%3d,",x-=2);
}while(!
(--x));
A.1,
B.30,
C.死循环
D.1,-2
44.下列程序段的运行结果是(A)。
inta=6,b=5;
if(a>b++)
printf("True:
%d\n",++a);
else
printf("False:
%d\n",b++);
A.True:
7
B.False:
6
C.False:
5
D.True:
6
45.若已定义:
inta;语句
if(a%3)
a=0;
else
a=1;
与下列(D)语句等价。
P52
A.a=(a%3?
1:
0);
B.a=(!
(a%3)?
0:
1);
C.a%3?
0:
1;
D.a=(a%3?
0:
1);
46.若已定义inta,b,c,k;下列程序段与语句k=(a>b?
(a>c?
1:
0):
0);功能等价的是(A)。
A.if((a>b)&&(a>c))
k=1;
else
k=0;
B.if((a>b)||(a>c))
k=1;
else
k=0;
C.if(a>b)
k=0;
elseif(a>c)
k=1;
else
k=0;
D.if(a>c)
k=1;
elseif(a>b)
k=0;
else
k=0;
47.下列程序段的运行结果是(C)。
inta=6;
switch(++a)
{
case7:
printf("%d",a);
case6:
printf("%d",a++);
break;
case5:
printf("%d",a);
default:
printf("%d",a++);
}
A.8
B.7
C.77
D.78
48.下列程序段的运行结果是(D)。
intx;
if(x=3)
printf("%d\n",x++);
elseif(x>3)
printf("%d\n",x+2);
else
printf("%d\n",x+3);
A.4
B.5
C.6
D.3
49.下列程序段中,非死循环的是(A)。
A.inti=100;
while
(1)
{i=i%100+1;
if(i>=100)break;
}
B.intk=0;
do{
++k;
}while(k>=0);
C.ints=10;
while(++s%2+s%2)s++;
D.for(;;)
50.若已定义:
inta;下列语句不会产生死循环的是(C)。
A.for(a=1;;a++)
;
B.for(a=10;;)
a--;
C.for(a=10;a!
=1;)
a--;
D.for(a=10;a=1;a--)
;
51.下列程序段的运行结果是(A)。
inti,n=0;
for(i=1;i<=10;i++)
{n+=2;
++i;
}
printf("%d\n",n);
A.10
B.8
C.12
D.20
52.下列程序段执行时,循环体的执行次数是(A)。
inti=7,a=0;
for(i++;i<8;i++)
a+=2;
A.0次
B.1次
C.8次
D.7次
53.下列程序段的运行结果是(A)。
P76
inti;
for(i=3;i>=1;i--)
switch(i)
{case1:
printf("%d",i);
break;
case2:
printf("%d",i);
default:
printf("%d",i);
}
A.3221
B.321
C.32211
D.3321
54.下列程序段的运行结果是(B)。
inta=0,i=1;
while(i<=10)
{if(i%3==1)
a+=i;
++i;
}
printf("%d\n",a);
A.12
B.22
C.21
D.37
55.设已定义chars[]="\"Name\\Address\023\n";,则字符串所占的字节数是(B)。
P25
A.19
B.16
C.18
D.14
56.下列叙述正确的是(A)。
A.数组中每个元素都属同一种数据类型
B.定义数组时,若不加类型说明符默认为float型P123
C.数组属于基本数据类型P21
D.定义数组后,可通过赋值运算符"="对该数组名直接赋值
57.若已定义inta[6];无法正确引用a数组元素的是(D)。
A.a[0]
B.a[3-1]
C.a[2+3]
D.a[6]
58.下列程序段执行后,a[4]元素的值为(B)。
inta[6]={6,4,2,1};
a[4]=a[1]+a[3]-a[0];
A.3
B.-1
C.1
D.2
59.下列程序段的运行结果是(C)。
inta[]={2,4,6,8,10},i;
for(i=0;i<4;i++)
a[i]=a[i+1]+2;
for(i=0;i<5;i++)
printf("%d",a[i]);
A.4681010
B.4681012
C.68101210
D.68101214
60.下列程序段的运行结果是(A)。
inta[]={6,5,4,3,2,1},i;
for(i=0;i<6;i++)
if(i%2)
a[i]+=2;
for(i=0;i<6;i++)
printf("%d",a[i]);
A.674523
B.856341
C.876543
D.676545
61.以下程序段的运行结果是(D)。
main()
{inti=4,j;
j=i;
pic(i+2*j-2,'*');
putchar('\n');
for(j-=2;j>=0;j--)
{pic(3-j,'');
pic(i+2*j,'*');
putchar('\n');
}
}
pic(intlen,charc)
{intk;
for(k=1;k<=len;k++)putchar(c);
}
A.*
***
*****
*******
B.**********
**********
**********
**********
C.****
******
********
**********
D.**********
********
******
****
62.以下程序段运行的结果是(C)。
inta[][3]={1,2,3,4,5,6,7,8,9};
printf("%d\n",a[1][2]);
A.2
B.5
C.6
D.8
63.若有定义:
inta[3][4];则表达式&a[2][2]-a[0]的值为(D)。
P161,P157
A.4
B.6
C.7
D.10
64.若有定义: