C语言期末复习资料.docx

上传人:b****7 文档编号:11423704 上传时间:2023-03-01 格式:DOCX 页数:292 大小:123.95KB
下载 相关 举报
C语言期末复习资料.docx_第1页
第1页 / 共292页
C语言期末复习资料.docx_第2页
第2页 / 共292页
C语言期末复习资料.docx_第3页
第3页 / 共292页
C语言期末复习资料.docx_第4页
第4页 / 共292页
C语言期末复习资料.docx_第5页
第5页 / 共292页
点击查看更多>>
下载资源
资源描述

C语言期末复习资料.docx

《C语言期末复习资料.docx》由会员分享,可在线阅读,更多相关《C语言期末复习资料.docx(292页珍藏版)》请在冰豆网上搜索。

C语言期末复习资料.docx

C语言期末复习资料

所有单选题

1、C语言中下列叙述正确的是______。

A:

不能使用do-while语句构成的循环

B:

do-while语句构成的循环,必须用break语句才能退出

C:

do-while语句构成的循环,当while语句中的表达式值为非零时结束循环

D:

do-while语句构成的循环,当while语句中的表达式值为零时结束循环

答案:

D

评析:

本题的考查点是do-while语句。

选项A是错误的,C语言支持do-while语句;选项B是错误的,do-while构成的循环,当while语句中的表达式值为零时结束循环,而不是非零;选项C也是错误的。

故本题答案为D。

知识点:

知识点/循环结构程序设计/WHILE和DOWHILE循环结构

2、以下选项中属于C语言的数据类型是______。

A:

复数型

B:

逻辑型

C:

双精度型

D:

集合型

答案:

C

评析:

本题的考查点是C语言的数据类型。

C语言的数据类型分为基本类型,构造类型,指针类型,空类型四大类。

其中,基本类型分为整型,字符型,实型三类。

实型又称浮点型,包括单精度型和双精度型两种类型。

故本题答案为C。

知识点:

知识点/数据类型及其运算/C的数据类型及其定义方法

3、下列描述中不正确的是______。

A:

字符型数组中可以存放字符串

B:

可以对字符型数组进行整体输入、输出

C:

可以对整型数组进行整体输入、输出

D:

不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值

答案:

C

评析:

本题的考查点是对数组的理解。

C语言规定只能逐个引用数组元素而不能一次引用整个数组。

字符数组的输入、输出可以将整个字符串一次输入或输出。

所以,选项C的说法是不正确的。

故本题答案为C。

知识点:

知识点/基本语句/数据的输入与输出,输入输出函数的调用

4、以下程序的输出结果是______。

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++i)

printf("%d%d",x--,y);

}

A:

10192

B:

9876

C:

10990

D:

101091

答案:

D

评析:

本题的考查点是for循环语句。

for语句的一般格式为:

for(表达式1;表达式2;表达式3)语句执行中只要表达式2为真,则执行for语句中指定的内嵌语句。

所以,本题在条件为真的情况下,先执行printf函数。

x--是先使用后运算。

故本题答案为D。

知识点:

知识点/循环结构程序设计/FOR循环结构

5、以下程序的输出结果是______。

main()

{chara[10]={'1','2','3','4','5','6','7','8','9',0},*p;

inti;

i=8;

p=a+i;

printf("%s\n",p-3);

}

A:

6

B:

6789

C:

'6'

D:

789

答案:

B

评析:

本题的考查点是通过指针引用数组元素。

指针p指向数组中第8个元素,即a[8]='9'。

输出时,输出字符串,且指针把a[8]作为初始位置往前指3个元素,也就是共有4个字符输出。

最后指向a[5]为'6',所以输出为6789。

故本题答案为B。

知识点:

知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数

6、能正确表示a和b同时为正或同时为负的逻辑表达式是______。

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

答案:

D

评析:

本题的考查点是对逻辑表达式的判断。

逻辑表达式是指用逻辑运算符将关系表达式或逻辑量连接起来。

选项A中,表达式表示的是a,b为异号;

选项B中,表达式表示的是0,因为没有满足条件的值;

选项C中,表达式表示的是0,因为没有满足条件的值;

选项D表示的是a和b为同号。

故本题答案为D。

知识点:

知识点/基本语句/表达式语句,空语句,复合语句

7、以下程序的输出结果是______。

main()

{intn=4;

while(n--)printf("%d",--n);

}

A:

20

B:

31

C:

321

D:

210

答案:

A

评析:

本题的考查点是while语句的判断。

n--是先使用后运算,--n是先运算后使用。

n=4时,执行n--后,n变为3,执行--n后,n变为2,所以,第一次输出时,n为2;同上过程,第二次输出时,n为0。

故本题答案为A。

知识点:

知识点/循环结构程序设计/WHILE和DOWHILE循环结构

8、以下程序的输出结果是______。

main()

{intk=17;

printf("%d,%o,%x\n",k,k,k);

}

A:

17,021,0x11

B:

17,17,17

C:

17,0x11,021

D:

17,21,11

答案:

D

评析:

本题的考查点是不同格式的数据输出。

printf函数对不同类型的数据用不同的格式字符,"%d"是以带符号的十进制形式输出整数(正数不输出符号);"%o"以8进制无符号形式输出整数(不包括前导符0);"%x"以16进制无符号形式输出整数(不包括前导符0x)。

本题答案为D。

知识点:

知识点/数据类型及其运算/C的数据类型及其定义方法

9、若有说明:

long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是______。

A:

*p=&a;scanf("%ld",p);

B:

p=(long*)malloc(8);scanf("%ld,p);

C:

scanf("%ld",p=&a);

D:

scanf("%ld",&a);

答案:

A

评析:

本题的考查点是格式输入函数Scanf()的使用。

scanf函数输入形式为:

scanf(格式控制,地址表列);

选项B中,p=(long*)malloc(8)是分配8个字节的long型存储单元,所以能通过scanf语句正确给输入项读入数据;

选项C中,p=&a,求出变量a的内存地址并赋给p;

选项D中,能正确给输入项读入数据;

故本题答案为A。

知识点:

知识点/基本语句/数据的输入与输出,输入输出函数的调用

10、以下选项中,能定义s为合法的结构体变量的是______。

A:

typedefstructabc

{doublea;

charb[10];

}s;

B:

struct

{doublea;

charb[10];

}s;

C:

structABC

{doublea;

charb[10];

}

ABCs;

D:

typedefABC

{doublea;

charb[10];

}

ABCs;

答案:

B

评析:

本题的考查点是结构体变量的定义。

定义一个结构体类型的变量,可采用三种方法:

(1)先定义结构体类型再定义变量名;

(2)在定义类型的同时定义变量;

(3)直接定义结构类型变量,即不出现结构体名;

选项B符合第三种定义方法。

故本题答案为B。

知识点:

知识点/结构体(即"结构")与共用体(即"联合")/结构体和共用体类型数据的定义方法和引用方法

11、请读程序:

#include

main()

{

inta,b;

for(a=1,b=1;a<=100;a++){

if(b>=20)break;

if(b%3==1){b+=3;continue;}

b-=5;

}

printf("%d\n",a);

}

上面程序的输出结果是______。

A:

7

B:

8

C:

9

D:

10

答案:

B

评析:

本题的考查点是break语句和continue语句。

"%"是求余运算符,执行第一次循环时,条件(b%3==1)为真,b=4,继续下一次循环,如此反复,当b=22时,条件(b>=20)为假,跳出循环,此时共循环8次,即a=8。

故本题答案为B。

知识点:

知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构

12、请选出合法的C语言赋值语句______。

A:

a=b=58

B:

i++;

C:

a=58,b=58

D:

k=int(a+b);

答案:

B

评析:

本题的考查点是赋值语句。

选项A和C没有用分号表示语句结束,不合法;

选项D,函数名和C语言的关键字重名,不合法。

故本题答案为B。

知识点:

知识点/基本语句/表达式语句,空语句,复合语句

13、请选出可用作C语言用户标识符的一组标识符______。

①void②a3_b3③For④2a

define_123_abcDO

WORDIFcasesizeof

A:

B:

C:

D:

答案:

B

评析:

本题的考查点是C语言的标识符。

C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。

①中的void和define都和C语言的关键字重名,不合法;

③中的case和C语言的关键字重名,不合法;

④中的2a是数字打头而且sizeof和C语言的关键字重名,不合法。

故本题答案为B。

知识点:

知识点/数据类型及其运算/C的数据类型及其定义方法

14、若x和y都是int型变量,x=100、y=200,且有下面的程序片段

printf("%d",(x,y));

上面程序片段的输出结果是______。

A:

200

B:

100

C:

100200

D:

输入格式符不够,输出不确定的值

答案:

A

评析:

本题的考查点是逗号表达式。

在(x,y)中的","是一个特殊的运算符,叫做逗号运算符,它的一般形式为:

表达式1,表达式2,求解过程为:

先求解表达式1,再求解表达式2,整个表达式的值是表达式2的值,(x,y)的值为200,所以输出结果为200。

故本题答案为A。

知识点:

知识点/基本语句/数据的输入与输出,输入输出函数的调用

15、若x是int型变量,且有下面的程序片段

for(x=3;x<6;x++)printf((x%2)?

("**%d"):

("##%d\n"),x);

上面程序片段的输出结果是______。

①**3②##3③##3④**3##4

##4**4**4##5**5

**5##5

A:

B:

C:

D:

答案:

D

评析:

本题的考查点是条件运算符。

这种条件表达式的一般形式为:

表达式1?

表达式2:

表达式3,条件运算符的执行顺序为:

先求解表达式1,若非0则求解表达式2,此时表达式2的值就是整个条件表达式的值,若表达式1的值为0,则求解表达式3,此时表达式3的值就是整个条件表达式的值。

故本题答案为D。

知识点:

知识点/数据类型及其运算/C运算符的种类、运算优先级和结合性

16、若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是______。

A:

pb=&x;

B:

pb=x;

C:

*pb=&x;

D:

*pb=*x

答案:

A

评析:

本题的考查点是赋值表达式。

选项A是将变量x的地址赋给指针变量pb,使pb指向x,故为正确的赋值表达式。

选项B是将x的值当作地址赋给指针pb,pb指向一个地址等于x值的内存单元;

选项C是将x的地址赋给指针pb指向的那个地址等于x值的内存单元;

选项D是不正确的语句;

本题答案为A。

知识点:

知识点/基本语句/表达式语句,空语句,复合语句

17、若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元

int*p;

p=______malloc(sizeof(int));

则应填入______。

A:

int

B:

int*

C:

(*int)

D:

(int*)

答案:

D

评析:

本题的考查点是强制类型转换。

不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型*)。

故本题答案为D。

知识点:

知识点/数据类型及其运算/不同类型数据间的转换与运算

18、若有以下说明和语句,请选出哪个是对c数组元素的正确引用______。

intc[4][5],(*cp)[5];

cp=c;

A:

cp+1

B:

*(cp+3)

C:

*(cp+1)+3

D:

*(*cp+2)

答案:

D

评析:

本题的考查点是数组元素的引用。

cp=c这个语句是将数组c的首地址赋给了指针数组cp的第一个数组元素。

选项A,cp+1是指将数组c的首地址加1,不是对数组元素的引用;

选项B,*(cp+3)是地址等于数组c的首地址加3的那个内存单元的内容,不是对数组元素的引用;

选项C,*(cp+1)+3是地址等于数组c的首地址加1的那个内存单元中存放的值加3,不是对数组元素的引用。

故本题答案为D。

知识点:

知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数

19、若执行下面的程序时从键盘上输入3和4,

main()

{inta,b,s;

scanf("%d%d",&a,&b);

s=a;

if(a

s=s*s;

printf("%d\n",s);

}

则输出是______。

A:

14

B:

16

C:

18

D:

20

答案:

B

评析:

本题的考查点是给变量赋值。

用户输入的3和4分别赋给了a和b,在if语句进行判断时,因为表达式的值为真,所以b的值将赋给s,s*s=16,最后的打印结果为16。

故本题答案为B。

知识点:

知识点/基本语句/表达式语句,空语句,复合语句

20、设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是______。

A:

'a'&&'b'

B:

a<=b

C:

a||+c&&b-c

D:

!

((a

c||1)

答案:

D

评析:

本题的考查点是几种运算符的使用。

该题需要弄清楚以下几点:

1、几种运算符的使用方法;

2、C语言中运算符的结合方向(结合性);

3、C语言中运算符的优先级。

根据以上规则进行表达式拆分,运算后即可得出正确答案。

本题答案为D。

知识点:

知识点/数据类型及其运算/C运算符的种类、运算优先级和结合性

21、设a=5、b=6、c=7、d=8、m=2、n=2,执行

(m=a>b)&&(n=c>d)

后n的值为______。

A:

1

B:

2

C:

3

D:

4

答案:

B

评析:

本题的考查点是逻辑与运算。

在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。

本题中,(m=a>b)的值为0,求出整个表达式的值为0,不需执行(n=c>d),所以n仍为2。

故本题答案为B。

知识点:

知识点/数据类型及其运算/C运算符的种类、运算优先级和结合性

22、设ch是char型变量,其值为A,且有下面的表达式

ch=(ch>='A'&&ch<='Z')?

(ch+32):

ch

上面表达式的值是______。

A:

A

B:

a

C:

Z

D:

z

答案:

B

评析:

本题的考查点是条件运算符。

条件表达式的一般形式为:

表达式1?

表达式2:

表达式3,条件运算符的执行顺序:

先求解表达式1,若非0则求解表达式2,此时表达式2的值就作为整个表达式的值,若表达式1的值为0,则求解表达式3,此时表达式3的值就作为整个表达式的值。

本题中,表达式1的值为1,所以整个表达式的值为表达式(ch+32)的值,即为a。

故本题答案为B。

知识点:

知识点/数据类型及其运算/C运算符的种类、运算优先级和结合性

23、设inta=12,则执行完语句a+=a-=a*a后,a的值是______。

A:

552

B:

264

C:

144

D:

-264

答案:

D

评析:

本题的考查点是赋值表达式的求解。

第一步:

a*a=144;(此时a=12)

第二步:

a-=144相当于a=a-144,a=a-144=-132;(此时a=-132)

第三步:

a+=a相当于a=a+a,a=a+a=-264;

所以该表达式最后的值应当为-264。

故本题答案为D。

知识点:

知识点/数据类型及其运算/C表达式类型和求值规则

24、设有如下枚举类型定义

enumlanguage{Basic=3,Assembly=6,Ada=100,COBOL,Fortran};

枚举量Fortran的值为______。

A:

4

B:

7

C:

102

D:

103

答案:

C

评析:

本题考查的是数据类型。

这个枚举中共有5个元素,前三个已有明确的赋值,而COBOL和Fortran没有明确的赋值,枚举的语法规定当枚举元素没有赋值时,其值为其前一个元素的值加一,所以COBOL的值为101,故Fortran的值应为102。

故答案为C。

知识点:

知识点/数据类型及其运算/C的数据类型及其定义方法

25、设有以下语句,其中不是对a数组元素的正确引用的是:

______(其中0≤i<10)

inta[10]={0,1,2,3,4,5,6,7,8,9,},*p=a;

A:

a[p-a]

B:

*(&a[i])

C:

p[i]

D:

*(*(a+i))

答案:

D

评析:

本题的考查点是通过指针引用数组元素。

观察程序可知,a实际上就是数组a的首地址,所以"*(a+i)"表示的就是数组a中的第i个元素的值,进而,我们可以知道*(*(a+i))必然不是对a数组元素的正确引用。

故本题答案为D。

知识点:

知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数

26、设有以下语句

chara=3,b=6,c;

c=a^b<<2;

则c的二进制值是______。

A:

00011011

B:

00010100

C:

00011100

D:

00011000

答案:

A

评析:

本题的考查点是位运算。

"<<"是C语言中规定的左移运算符,例如,a=a<<2,这个语句即是将a的二进制数左移两位,左移一位相当于该数乘以2,左移两位相当于该数乘以2的2次方;^是异或运算符,所以,c的二进制值应为00011011。

故本题答案为A。

知识点:

知识点/位运算/简单的位运算

27、设有语句inta=3;则执行了语句a+=a-=a*a;后,变量a的值是______。

A:

3

B:

0

C:

9

D:

-12

答案:

D

评析:

本题的考查点是赋值表达式的求解。

第一步:

a*a=9;(此时a=3)

第二步:

a-=9相当于a=a-9,a=a-9=-6;(此时a=-6)

第三步:

a+=a相当于a=a+a,a=a+a=-12;

所以该表达式最后的值应当为-12。

故本题答案为D。

知识点:

知识点/数据类型及其运算/C表达式类型和求值规则

28、下面程序

main()

{intx=100,a=10,b=20,ok1=5,ok2=0;

if(a

if(b!

=15)

if(!

ok1)x=1;

elseif(ok2)x=10;

x=-1;

printf("%d\n",x);

}

的输出是______。

A:

-1

B:

0

C:

1

D:

不确定的值

答案:

A

评析:

本题的考查点是判断语句的循环嵌套。

第一个判断值为真,过渡到下一个判断,第二个判断为真,过渡到第三个判断......如此循环,在打印输出语句的前一行,程序给变量x赋了值,为-1,所以,无论前期如何变化,最后的x值依然为-1。

故本题答案为A。

知识点:

知识点/循环结构程序设计/循环的嵌套

29、下面程序

main()

{

intx=32;

printf("%d\n",x=x<<1);

}

的输出是______。

A:

100

B:

160

C:

120

D:

64

答案:

D

评析:

本题的考查点是位运算。

<<是C语言中规定的左移运算符,例如,a=a<<2,这个语句即是将a的二进制数左移两位,左移一位相当于该数乘于2,左移两位相当于该数乘以2的2次方。

所以,x<<1=32*2=64。

故本题答案为D。

知识点:

知识点/位运算/简单的位运算

30、下面程序

main()

{

inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

printf("%d\n",*(p+2));

}

的输出是______。

A:

3

B:

4

C:

1

D:

2

答案:

A

评析:

本题的考查点是通过指针引用数组元素。

*p=a语句是使指针p指向数组a的第一个数组元素,因此*(p+2)即是数组a的第3个元素的值,即a[2]。

故本题答案为A。

知识点:

知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数

31、下面程序

main()

{

intx=10,y=3;

printf("%d\n",y=x/y);

}

的输出是______。

A:

0

B:

1

C:

3

D:

不确定的值

答案:

C

评析:

本题的考查点是除法运算。

x/y的结果约为3.33333,但是由于打印要求为整型,所以自动转换为整型(相当于截取整数位),打印结果为3。

故本题答案为C。

知识点:

知识点/数据类型及其运算/C的数据类型及其定义方法

32、下面程序

voidprtv(int*x)

{printf("%d\n",++*x);

}

main()

{inta=25;

prtv(&a);

}

的输出是______。

A:

23

B:

24

C:

25

D:

26

答案:

D

评析:

本题的考查点是指针变量作为函数参数。

观察程序,可以发现,函数prtv()的作用是将地址等于x的内存单元中值加1,因为我们在主函数中是将变量a的地址作为实参传递给了prtv()函数,所以,函数prtv()将地址等于变量a的地址的那个内存单元中值加一,打印结果自然就是25+1=26了。

故本题答案为D。

知识点:

知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数

33、下面的程序

main()

{intx=3;

do{

printf("%d\n",

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1