c语言复习题Word格式.docx
《c语言复习题Word格式.docx》由会员分享,可在线阅读,更多相关《c语言复习题Word格式.docx(33页珍藏版)》请在冰豆网上搜索。
10变量已正确定义,有以下程序段
inta=1,b=2,c=3;
if(a>
b)a=b;
c=a;
if(c!
=a)c=b;
%d,%d,%d\n"
a,b,c);
其输出结果是(B)。
A.程序段有语法错B.1,2,1C.1,2,2D.1,2,3
11有宏定义:
#definef(x)x*x,则表达式f(2+2)/f(1+1)的值为(B)。
A.2B.10C.3D.4
12C语言中while和do-while循环的主要区别是(a)。
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比do-while的循环控制条件严格
C.do-while允许从外部转到循环体内
D.do-while的循环体不能是复合语句
13在C程序中用做用户标识符的一组标识符是(A)。
A.and
_2011
B.Date
y-m-d
C.Hi
Dr.Tom
D.default
Bigl
14设有程序段
intk=10;
while(k=0)k=k-1;
则下面叙述中正确的是(B)。
A.while循环执行10次C.循环是无限循环
B.循环体语句一次也不执行D.循环体语句执行一次
15函数调用语句func((exp1,exp2),(exp3,exp4,exp5));
含有实参的个数为(B)。
A.1B.2C.4D.5
16在C语言中,以下正确的描述是(B)。
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和函数的调用均不可以嵌套
D.函数的定义和函数的调用均可以嵌套
17以下对一维整型数组a的正确定义是(D)。
A.inta(10);
B.intn=10,a[n];
C.intn;
D.#defineN10
scanf("
%d"
&
n);
inta[N];
inta[n];
18下面是对字符数组s的初始化,其中不正确的是(A)。
A.chars[5]={"
HELLO"
};
B.chars[5]={'
H'
'
E'
L'
'
O'
C.chars[5]="
"
;
D.chars[]="
19下选项中,合法的一组C语言常量是(B)。
A.027
.5e-3
‘\\’B.12.
“ABC”
4.5e0
C.4c1.5
.177
OabcD.0x8A
10,000
3.e5
20断字符串a和b是否相等,应当使用(D)。
A.if(a==b)B.if(a=b)C.if(strcpy(a,b))D.if(strcmp(a,b))
21如下语句inta=10,b=20,*p1,*p2;
p1=&
a;
p2=&
b;
若要让p1也指向b,可选用的
赋值语句是(B)。
A.*p1=*p2;
B.p1=p2;
C.p1=*p2;
D.*p1=p2;
22计算表达式48%10/3的值是(D)。
A.1.25
B.1
C.1.0
D.2
23正确表示逻辑关系:
“a≥10或a≤0”的C语言表达式是(D)。
A.a>
=10ora<
=0
B.a>
=10|a<
C.a>
=10&
a<
D.a>
=10||a<
24有定义语句:
intx;
floaty;
,则正确的输入语句是(C)。
A.scanf("
%d%d"
x,y);
B.scanf("
x,&
y);
C.scanf("
%d%f"
D.scanf("
%f%d"
25.10十进制整数-1的补码表示为_____A_______。
(A)1111111111111111(B)1000000000000001
(C)0000000000000001(D)111111*********0
26下列常量中合法的是_____B________。
(A)1e4.0(B)0xabc(C)0128(D)∏
27.若有以下结构体定义,则下列哪项引用是正确的(A)。
structinfo
{ intm;
intn;
}v;
A.v.m=10;
v.n=20;
B.v={10,20};
C.v=10,20;
D.v->
m=10;
v->
n=20;
28.设有定义语句:
charc1=7,c2=7;
则以下表达式中值为零的是(A)。
A.c1^c2
B.c1&
c2
C.~c2D.c1|c2
29定义intx;
正确的输入语句是_____C_____。
(A)scanf("
(B)scanf("
(C)scanf("
(D)scanf("
30.在C语言中,int型数据在内存中以(A)形式存放。
A.补码
B.BCD码
C.反码
D.原码
31.在C语言中,用关键字(A)定义无符号型变量。
A.unsigned
B.signed
C.sign
D.unsign
32.有以下定义语句doublea,b;
intw;
longc;
若各变量已正确赋值,则下列选项中错误的表达式是(A)。
A.a=a+b=b++B.w%(int)(a+b)C.(c+w)%(int)aD.w=a==b
33.以下不正确的用户标识符是(C)。
A._char
B.Double
C.*m
D._0_
34.在C语言的if语句中,用作判断的表达式为(B)。
A.关系表达式B.逻辑表达式C.算术表达式D.任意表达式
35printf()函数的格式说明符中,要输出单个字符应使用说明符(D)。
A.%d
B.%f
C.%s
D.%c
36.下列语句序列是判别变量x、y的大小,若x<
y则交换它们的值,其中正确的是(C)。
A.if(x<
y){x=y;
y=z;
}
B.if(x<
y)x=y;
y=x;
C.if(x<
y){t=x;
x=y;
y=t;
}D.if(x<
y)t=x;
37.do-while语句的循环体(B)。
A.可能一次也不执行
B.至少要被执行一次
C.由循环条件决定循环次数
D.任意多次
38.在C语言中while语句与do-while语句的主要区别是(A)。
A.do-while的循环体至少无条件执行一次
B.do-while允许从外部转到循环体内
C.do-while的循环体不能是复合语句
D.while的循环控制条件比do-while的循环控制条件严格
39.以下不正确的数值常量是(C)。
A.0.23E1
B.2.3e-1
C.1E3.6
D.2.3e0
40.C语言中主函数的个数是(A)。
A.1个
B.2个
C.6个
D.任意多个
41.下列函数定义中正确的是(D)。
A.doubleadd(doublex,y)
{returnx+y;
}
B.minus(doublex,doubley)
{returnx-y;
C.doublediv(doublex,doubley)
{returnx%y;
D.doublemultiply(doublex,doubley)
{returnx*y;
42.若有宏定义:
#definef(x)x*x,则表达式f(4+4)/f(2+2)的值为(D)。
A.3
B.4
C.16
D.28
43.若有定义inta,*b;
表达式(C)可以使指针b指向变量a。
A.b=&
a
B.b=a
C.b=&
a
D.*b=&
44.若有定义:
int
n1=0,n2,*p=&
n2,*q=&
n1;
以下赋值语句中与n2=n1;
语句等价的是(A)。
A.*p=*q;
B.p=q;
C.*p=&
D.p=*q;
45.以下对数组元素的初始化,错误的是(D)。
A.floatweight[5]={67.5,34};
B.floata[]={0};
C.inta[]={1,2,2};
D.inta[5]={};
46.若要定义a为3*4的二维数组,正确的定义语句是(B)。
A.floata(3,4);
B.floata[1+2][2+2];
C.floata(3)(4);
D.floata[3,4];
47.能正确判断字符串s1大于字符串s2的是(C)。
A.if(s1>
s2)B.if(strlen(s1)>
strlen(s2))
C.if(strcmp(sl,s2)>
0)D.if(strcmp(s1,s2)==0)
48.以下能正确定义一维数组的选项是(B)。
A.int
a[5]={0,1,2,3,4,5};
B.int
a[]={0,1,2,3,4,5};
C.int
a[2+3]={};
D.int
x=5,a[x]={0};
49.若要定义b为5*10的二维数组,正确的定义语句为(D)。
A.floatb(5,10) B.floatb[5,10]
C.float[5][10] D.floatb[5][10]
50.若有以下说明和语句,则输出结果是(C)。
charstr[]="
x:
\\abc.dat\"
%s"
str);
A.字符串中有非法字符B.\"
C."
\abc.dat"
D."
\\abc.dat"
51.表达式strcmp("
box"
,"
boss"
)的值是一个(A)。
A.正数
B.负数
C.0
D.不确定的数
52.已知inta[]={1,2,3,4,5,6},*p=a+2;
则p[2]的值是(C)。
A.3
B.4
C.5
D.6
53.若有定义:
inta[8],*p;
则与p=a;
等价的语句是(A)。
A.p=&
a[0];
B.p=a[0];
C.p=*a;
D.*p=&
54.若有定义:
inti=10,j=20,*p=&
i,*q=&
j;
p=q;
则执行printf("
%d%d\n"
*p,*q);
的结果是(B)。
A.1020B.2020C.1010D.2010
55.有语句chars[]="
EGIK"
*p=s;
则printf("
%c"
*p+2);
的输出结果是(B)。
A.E
B.G
C.I
D.K
56.C语言中可以处理的文件类型是(B)。
A.文本文件和数据文件
B.文本文件和二进制文件
C.数据文件和二进制文件
D.任何类型文件
57定义intx=10,y=20;
执行printf("
%d,"
x++);
--y);
的结果是______C_____。
(A)10,20(B)11,20(C)10,19(D)11,19
58执行intx=-1,y=-1,z=-1;
++x||++y&
++z;
printf("
%d%d%d\n"
x,y,z);
的结果是___C____。
(A)-1-1-1(B)0-1-1(C)00-1(D)000
59下列语句序列判别变量x、y大小,若x<
y则交换它们的值,其中正确的是_____C____。
(A)if(x<
}(B)if(x<
(C)if(x<
}(D)if(x<
60.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(A)。
A.auto
B.static
C.extern
D.register
61对于语句for(i=0;
;
i++)printf("
*"
);
可理解为_____A____________。
(A)条件恒为真(B)条件恒为假(C)错误表达式(D)该循环不会被执行
62下列程序段中,功能与其它程序段不同的是___C________。
(A)for(i=1,s=0;
i<
=10;
i++)s+=i;
(B)i=1;
s=0;
do{s+=i;
i++;
}while(i<
=10);
(C)for(i=1;
=5;
){s=1;
s+=i;
i++;
}(D)i=1;
while(i<
=10){s+=i;
63定义函数:
intadd(inta,intb){return(a+b);
}并将其放在调用语句之后,则在调用之前应该声明,以下选项中错误的声明是_____A____。
(A)intadd(inta,b);
(B)intadd(int,int);
(C)intadd(inta,intb);
(D)intadd(intx,inty);
64以下一维数组的定义正确的是____A_______。
(A)inta[10+20](B)intx=10,a[x];
(C)inta[5.0](D)inta[i=10]
65.有结构定义如下:
structstudent
{intstu_num;
charname[10];
charsex;
intscore;
}*p;
则用p对成员变量sex的引用正确的是(A)。
A.p->
sex
B.(*p)->
C.p.sex
D.(&
p)->
66下面对数组赋初值错误的是_____B______。
(A)inta[]={1,2,3,4}(B)inta[5]={0,1,2,3,4,5}
(C)inta[2][3]={1,2,3,4,5,6}(D)inta[2][3]={{1},{2}}
67以下能正确进行字符串赋值的是__D_______。
(A)char*sp;
*sp="
hello"
(B)chars[10];
s="
(C)chars[10];
*s="
(D)char*sp="
68能判断字符串s1是否与字符串s2相等的是_____D_____。
(A)if(s1=s2)(B)if(s1==s2)
(C)if(strcmp(sl,s2)=0)(D)if(strcmp(s1,s2)==0)
69定义intx;
经过下列____C____语句后,执行赋值语句*p=8;
可将x值置为8。
(A)intp=x;
(B)int*p=x;
(C)int*p=&
x;
(D)p=x;
70.若文本文件f1.txt中原有内容good,则运行以下程序后文件f1.txt中的内容为(C)。
main()
{FILE
*fp1;
fp1=fopen("
f1.txt"
"
w"
fprintf(fp1,"
abc"
fclose(fp1);
A.goodabc
B.abcd
C.abc
D.abcgood
71定义FILE*fp;
以“只写”方式打开文件C:
\aa.dat的正确语句是___C___。
(A)fp=fopen("
C:
\aa.dat"
"
w"
(B)fp=fopen("
r"
(C)fp=fopen("
\\aa.dat"
(D)fp=fopen("
72以下选项中能作为合法常量的是____B________。
(A)1.234e4.0(B)'
(C)0128(D)'
VisualC++'
73C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符______C_____。
(A)必须为字母(B)必须为下划线
(C)必须为字母或下划线(D)可以是字母、数字和下划线中任一种字符
74以下选项中值为1的表达式是______B____。
(A)1-'
0'
(B)1-'
\0'
(C)'
1'
-0(D)'
-'
75设charch;
,表示ch是小写字母的表达式是___C_______。
(A)'
a'
≤ch≤'
z'
(B)'
<
=ch<
='
(C)ch>
andch<
(D)ch>
&
ch<
76下列关系表达式中结果为假的是__C_____。
(A)1!
=2(B)8<
=10(C)4>
3>
2(D)-1
77以下能正确地定义三个整型变量a,b和c,并赋初值为5的语句是____C____。
(A)inta=b=c=5;
(B)inta,b,c=5;
(C)inta=5,b=5,c=5;
(D)a=b=c=5;
78执行intx=0,y=0,z=0;
的结果是____B______。
(A)000(B)100(C)110(D)111
79下列条件语句中,功能与其他语句不同的是_____D______。
(A)if(a)printf("
elseprintf("
#"
(B)if(a==0)printf("
(C)if(a!
=0)printf("
(D)if(a==0)printf("
80若有以下说明和定义语句:
{intage;
charnum[8];
structstudentstu[3]={{20,"
200701"
},{21,"
200702"
},{19,"
200703"
}};
structstudent*p=stu;
引用结构体变量成员的表达式错误的是__D_____。
(A)(p++)->
num(B)p->
num(C)(*p).num(D)stu[3].age
81C语言中,数学表达式
,正确的表达方式是___D____。
(A)(ax*2+bx+c)/a*b(B)(ax*x+b*x+c)/ab
(C)(a*x*x+b*x+c)/a*b(D)(a*x*x+b*x+c)/a/b
82下列关系表达式中结果为真的是__D______。
=2>
1(B)4>
2(C)4&
0(D)4||0
83下列表达式中结果为假的是____C________。
=10(C)(a=2*2)==2(D)x=(1+1)==2
84定义charc1=92,c2=92;
则以下表达式中值为零的是____A_____。
(A)c1^c2(B)c1&
c2(C)~c2(D)c1|c2
85定义FILE*fp;
以“只读”方式打开文件C:
\aa.dat的正确语句是_____D____。
(B)fp=fopen("
(D)fp=fopen("
86.执行for(inti=1;
10&
i%2;
i++)printf("
将输出(A)个*号。
A.1
B.4
D.10
87.C语言源程序要正确地运行,必须有(C)。
A.printf函数B.自定义的函数C.main函数D.空函数
88.有函数定义:
voidfun(intn,doublex){……},若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是(C