C语言知识考试复习题库(附答案)_第1页
C语言知识考试复习题库(附答案)_第2页
C语言知识考试复习题库(附答案)_第3页
C语言知识考试复习题库(附答案)_第4页
C语言知识考试复习题库(附答案)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言知识考试复习题库(附答案)

单选题

1.以下哪个运算符优先级最高?

A、十

B、>二

C、&&

D、!

参考答案:D

2.文件操作模式'"r+八表示?

A、以只读方式打开,如果不存在则报错

B、以读写方式打开,如果不存在则创建

C、以读写方式打开,文件必须存在

D、以追加方式打开

参考答案:C

3.若inta[5]={0};则以下哪个对数组元素的访问是非法的?

A、a[5]

B、a[4]

C、*(a+4)

D、&a[0]

参考答案:A

4.以下哪个函数用于打开一个文件进行写入?

1st

A、fopen("fiIe.txt',"r")

B、fopen(HfiIe.txt',"w")

C、fopen("fiIe.txt',"a")

D、openC'fiIe.txt",0_WR0NLY)

参考答案:B

5.下列哪个不是C语言的关键字?

A^typedef

B、char

C、float

D、String

参考答案:D

6.执行'intx=10;whiIe(x-)printf("%d",x);'的输出是?

A、1098...0

B、987...0

C、0

D、987...-1

参考答案:B

7.若有结构体定义如下:structNode{intdata;structNode*next;1;,则

sizeof(structNode)的值通常是多少?

A、4

B、8

C、12

2nd

D、16

参考答案:B

8.'FILE'类型通常用于什么操作?

A、文件读写

B、内存分配

C、字符串处理

D、数学计算

参考答案:A

9.执行以下代码后的输出是:intx=10;x+=x-=x*x;printf("%d",x);

A、-10

B、20

C、0

D、10

参考答案:A

10.声明语句的含义是?

A、定义了一个名为p的整型变量

B、定义了一个名为p的整型指针变量

C、定义了一个指向整型的变量

D、声明了一个数组

参考答案:B

11.若有定义intarr[5]={1,2,3};则未初始化的元素值为?

A、0

3rd

B、随机值

C、1

D、没有值

参考答案:A

12.执行'intx=5;x+=2;'后,'x'的值是?

A、2

B、5

C、7

D、10

参考答案:C

13.执行、printf("%d”,10<<2);'的结果是?

A、2

B、5

C、40

D、12

参考答案:C

14.下列关于'goto'语句的描述,正确的是?

A^'goto'语句只能用于函数内部跳转

B、使用'got。'语句可以跳出多层嵌套循环

C、'g。to'语句是结构化程序设计中不鼓励使用的语句

D、'goto'语句不能跳转到循环内部

参考答案:C

4th

15.执行、inta⑶=⑴;'后,数组元素的值是?

A,{1,1,1)

B、{1,0,0)

C、{1,随机值,随机值}

D、{1,0,1)

参考答案:B

16.表达式'strIen("HeIIo")'的返回值是?

A、5

B、6

C、7

D、4

参考答案:B

17.若g七2二10廿102世二3.5;则表达式2分的值是?

A、2

B、2.857

C、2.0

D、2.857142857142857

参考答案:C

18.下列宏定义中,没有语法错误的是?

A、#defineSQR(x)x*x

B、#defineMAX(a,b)a>b?a:b

C、#definePI3.14+

5th

D、#definePRINTprintf("HeiIo")

参考答案:D

19.以下代码的输出结果是:printf("%d",sizeof('a'));

A、1

B、2

C、4

D、8

参考答案:A

20.'#include<stdio.h>'中的尖括号'◊'和双引号''的区别是?

A、没有区别

B、'<>'包含标准库,包含用户自定义文件

C、'◊、包含用户文件,包含标准库

D、编译速度不同

参考答案:B

21.若要定义一个函数使其能够修改main函数中定义的int变量,函数

原型应写为?

A、voidfunc(inta)

B^intfunc(inta)

C、voidfunc(int*a)

D、int*func(int*a)

参考答案:C

22.'void'类型的指针可以指向什么类型的数据?

6th

A、任何数据类型

B、只有int类型

C、只有char类型

D、只有float类型

参考答案:A

23.下列关于指针数组和数组指针的说法,错误的是?

A、指针数组是一个数组,数组里存的是指针

B、数组指针是一个指针,指向一个数组

C、'int*p[5]'定义的是一个数组指针

D、'int(*p)[5]'定义的是一个指针数组

参考答案:C

24.执行charstr[]=",ABC";str[0]=,a';printf("%s",str);的输出是?

A、ABC

B、aBC

Ca

D、编译错误

参考答案:B

25.表达式'4&&5'的值是?

A、0

B、1

C、5

D、4

7th

参考答案:B

26.若指针p指向数组arr的首地址,则、*(p+3)、表示访问数组中的哪个

元素?

A、arr[O]

B、arr[1]

C、arr[3]

D、arr[4]

参考答案:C

27.以下哪个是合法的C语言变量名?

A、2var

B、my-var

C、user_name

D、cIass

参考答案:C

28.语句'printfsizeof('A'));'的输出结果是?

A、1

B、2

C、3

D、4

参考答案:A

29.下列关于函数参数传递的描述,正确的是?

A、数组作为参数传递时,传递的是数组的全部元素

8th

B、结构体作为参数传递时,传递的是副本

C、指针作为参数传递时,可以在函数内部修改原变量的值

D、函数的形参和实参必须类型完全一致

参考答案:C

30.以下哪个头文件包含了对字符串操作函数(如strlen)的定义?

A、stdio.h

B^stdIib.h

C、string.h

D、ctype.h

参考答案:C

31.若p是一个指针变量,'*p++'的含义是?

A、指针p的值加1

B、指针指向的值加1

C、先获取p指向的值,然后p指针后移

D、先p指针后移,再获取p指向的值

参考答案:D

32.字符串"HeiIo”在内存中占用多少字节?

A、5

B、6

C、7

D、4

参考答案:B

9th

33.以下哪个是C语言中合法的字符串常量?

A、'HeiIo'

B、"HeiIo',

C、,H','e','I','I','o'

D、"HeiIo'

参考答案:B

34.C语言中,宏定义与函数的主要区别不包括以下哪项?

A、宏定义不进行类型检查

B、宏定义在编译前进行替换,函数在运行时调用

C、函数调用会有栈内存开销

D、宏定义生成的代码效率一定高于函数

参考答案:D

35.若有intarr[]={10,20,30};int*ptr=arr;'printf("%d",*(ptr+1));

'的结果是?

A、10

B、20

C、30

D、0

参考答案:B

36.若有定义'intarr口[3]={1,2,3,4,5,6};\则、arr[2]、的值是?

A、3

B、4

10th

C、5

D、6

参考答案:C

37.执行'intx=3;printf("%x",x);'的输出是?

A、3

B、33

C、10

D、11

参考答案:A

38.若有定义则'a'在内存中占用的字节数是?

A、4

B、5

C、10

D、20

参考答案:B

39.C语言中,用于定义一个整型指针变量的关键字是?

A、integer

B、int

C、pointer

D、addr

参考答案:B

40.若有intx=5;inty=10;y=(x<3)?(x++):(++x);则x和y的值分别是?

llth

A、x—5,y二5

B、x=6,y=5

C、x=6,y=6

D、x=5,y=6

参考答案:B

41.执行语句'inta=3,b=2,c;c=a>b?a:b;'后,变量'c'的值是?

A、3

B、2

C、5

D、0

参考答案:A

42.执行、char*p:"Heilo";p[1]='e';、会导致什么结果?

A、程序正常运行并修改了字符串

B、编译错误

C、运行时错误(段错误)

D、输出“HelIo"

参考答案:C

43.在C语言中,'main'函数的返回类型通常是?

A、void

B、int

C、char

D、float

12th

参考答案:B

44.指针变量'p'指向数组'a'的首地址,则、*(p+1)'表示?

A、'p+1'的地址

B、'a'的第0个元素

C、'a'的第1个元素

D、'p'的值加1

参考答案:C

45.执行'inta=3,b=2;a=a"b;b=a"b;a=a'b;'后,a和b的值分别是?

A、a=2,b=3

B、a=3,b=2

C、a=1,b=4

D、a=4,b=1

参考答案:A

46.在C语言中,数组名在大多数表达式中被退化为指向数组第一个元素

的指针,以下哪项例外?

A、sizeof(array)

B、&array

C^array+1

D、array[0]

参考答案:B

47.下列关于'typedef'的描述,正确的是?

A、'typedef'是为类型定义一个新的变量名

13th

B、'typedef'不能定义结构体

C、'typedef'定义的新类型不能用于变量声明

D、'typedef'只是取一个别名,不分配内存

参考答案:D

48.以下代码的输出是:inti;for(i=0;i<10;i++);printf("%d",i);

A、0

B、9

C、10

D、11

参考答案:C

49.'whiIe'循环与'do-whiIe'循环的主要区另I是?

A、'do-whiIe'执行效率更高

B、'do-whiIe'至少执行一次循环体

C、'whiIe'必须初始化条件

D、'd。-whiIe、不能用于死循环

参考答案:B

50.若'inta=5;',则表达式'!a&&b'在'b'未定义的情况下,结果是?

A、0

B、1

C、错误

D、随机值

参考答案:A

14th

51.若函数声明为'voidfunc(int*p)',则以下哪种调用是错误的?

A、func(&a)

B、func(arr)

C、func(0)

D、func(&arr[0])

参考答案:C

52.在'for'循环'for(inti=0;i<10;i++)'中,变量'i'作用域是?

A、整个程序

B、整个函数

C、当前代码块

D、循环体内部

参考答案:C

53.以下哪个关键字用于定义一个常量指针?

A、constint*

B^int*const

C、constintconst

D、staticconstint

参考答案:B

54.设、inta=10;、,表达式'a++'的值是?

A、11

B、10

C、12

15th

D、1

参考答案:B

55.若有定义'5{2[3]={1,2,3};',则'a[2]'的值是?

A、0

B、1

C、2

D、3

参考答案:D

56.以下哪个函数用于向文件写入数据?

A、fscanf

B、fprintf

C、fwrite

D、fgets

参考答案:C

57.以下宏定义中,正确的是?

A、#definePI3.14

B、#definePI=3.14

C、#definePI3.14;

D、#definePI+3.14

参考答案:A

58.若有定义、inta[3][3]={{1,2},{3,4,5},{6}}则、a[1][2]'的值

是?

16th

A、4

B、5

C、0

D、2

参考答案:B

59.若p是一个有效的指针,'p=NULL;'后,下列说法正确的是?

A、'*p'可以正常使用

B、'p'可以与任何指针比较

C、'p'可以用于关系运算

D、'p'不能用于数组下标

参考答案:C

60.若inta=10;int*p=&a;'(*p)++'等价于?

A、a++

B、p++

C^++a

D、*++p

参考答案:A

多选题

1.下列关于内存管理的描述,哪些是正确的?

A、'malloc'函数用于在堆区分配指定字节数的内存

B、'free'函数释放的内存必须是指针变量当前指向的内存

17th

C、内存泄漏是指申请了内存但未释放,导致内存资源浪费

D、'calloc'函数用于分配内存并初始化为0

参考答案:ACD

2.关于C语言中的预处理指令'#undef',下列描述正确的是?

A、用于取消之前定义的宏

B、必须紧跟在被取消宏的定义之后

C^'#undef'只能取消使用'#define'定义过的宏

D、取消宏定义后,该宏在后续代码中不可用

参考答案:ACD

3.关于C语言预处理指令,下列哪些描述是正确的?

A、'#define'只是简单的文本替换,不进行语法检查

B、'#include'指令会将指定文件的内容完全复制到当前文件

C、'#ifdef'和'#ifndef'用于条件编译,可以控制代码的编译范围

D、'#pragma'指令通常用于给编译器传递特定的指示或警告

参考答案:ABCD

4.下列关于C语言const关键字的用法,哪些是正确的?

A、'constinta=10;'表示变量a的值不可改变

B、'intconst*p:'表示指针p指向的内容不可改变

C、'constint*p;'与'intconst*p;'等价

D、'int*constp;'表示指针p本身(地址)不可改变

参考答案:ABCD

5.下列关于C语言中'volatiIe'关键字的描述,哪些是正确的?

18th

A、告诉编译器不要对该变量进行优化

B、用于修饰硬件寄存器或共享内存中的变量

C、编译器每次读取该变量都会去内存中重新读取

D、'volatiIe'变量的值不能修改

参考答案:ABC

6.下列关于结构体(struct)的描述,哪些是正确的?

A、结构体变量可以相互赋值

B、结构体数组可以直接使用'二'进行整体赋值

C、结构体指针可以通过运算符访问成员

D、结构体的大小是其所有成员大小之和

参考答案:AC

7.关于C语言中的枚举(enum),下列描述正确的是?

A、枚举常量的默认值从0开始,依次递增

B、枚举类型是一种用户定义的数据类型

C、枚举变量只能被赋值为该枚举定义的常量

D、可以在定义枚举时手动指定某个常量的值

参考答案:ABCD

8.下列关于函数的描述,哪些是正确的?

A、C语言支持函数重载(Overloading)

B、函数可以调用自身(递归调用)

C、函数的参数传递可以是值传递或地址传递

D、'void'函数可以没有返回值

19th

参考答案:BCD

9.下列关于C语言数组的使用,哪些是正确的?

A、数组名在大多数表达式中被视为指向数组首元素的指针

B、访问数组元素时,下标可以是负数

C、字符数组可以包含字符串结束符'\0'

D、定义数组时,长度必须是一个常量表达式

参考答案:ACD

10.关于C语言中的结构体嵌套,下列描述正确的是?

A、结构体可以包含其他结构体作为成员(嵌套)

B、嵌套结构体的成员访问需要使用'.'或多级操作符

C、嵌套结构体的定义可以嵌套多层

D、结构体不能包含指向自身的指针(自引用结构体)

参考答案:ABC

11.下列关于'switch'语句的描述,哪些是正确的?

A、'case'后面的值必须是常量表达式

B、'break'语句用于跳出switch语句

C、'default'分支是可选的

D^'switch'后面的表达式可以是任何类型

参考答案:ABC

12.下列关于'sizeof'运算符的描述,哪些是正确的?

A、'sizeof'是一个运算符,不是函数

B、数组名作为'sizeof'操作数时,返回数纽总字节数

20th

C、字符串字面量作为'sizeof'操作数时,包含字符串结束符''0'

D、'sizeof'的结果在编译时确定

参考答案:ABCD

13.下列关于C语言中指针的描述,哪些是正确的?

A、指针变量本身占用内存空间来存储地址

B、空指针(NULL)表示指针未指向任何有效地址

C、指针只能指向基本数据类型变量

D、指针变量的值可以被重新赋值以指向新的地址

参考答案:ABD

14.下列关于C语言中的'goto'语句的描述,哪些是正确的?

A、'goto'语句可以跳转到同一函数内的任意代码行

B、过度使用'goto'会导致代码逻辑混乱,难以维护

C、'goto'常用于跳出深层嵌套的循环或错误处理

D、'goto'语句在C语言中被完全禁止使用

参考答案:ABC

15.关于C语言中的函数指针,下列描述正确的是?

A、函数指针可以存储函数的入口地址

B、通过函数指针可以调用该函数

C、函数指针的类型必须与指向函数的返回值和参数类型完全一致

D、函数指针本身占用内存空间来存储地址

参考答案:ABCD

16.下列关于'do...whiIe'循环的描述,哪些是正确的?

21st

A、'do...whiIe'循环至少会执行一次循环体

B、'do...while'循环是先判断条件,再执行循环体

C、'do...whiIe'循环常用于需要至少执行一次的场景

D、'do...whiIe'循环必须以'whiIe(0)结尾

参考答案:ACD

17.关于C语言中的类型转换,下列描述正确的是?

A、强制类型转换不会改变原变量的类型,只改变临时值类型

B、'void*'指针可以赋值给任意类型的指针变量

C、整数到浮点数的转换可能会丢失精度

D、'int'到'char1'的转换会截断高位数据

参考答案:ABCD

18.下列关于C语言文件操作的描述,哪些是正确的?

A、'fopen'函数用于打开文件,成功返回文件指针,失败返回NULL

B、'fscanf'函数从标准输入流读取数据

C、'千eof'函数用于判断文件是否读取到末尾

D、'fclose'函数用于关闭文件,释放缓冲区资源

参考答案:ABCD

19.关于C语言标准库'<string.h>'中的函数,哪些描述是正确的?

A、'strlen'函数返回字符串的长度,不包含结束符'\0'

B、'strcpy'函数用于字符串复制,会将源字符串的''0'也复制过去

C、'strcmp'函数用于字符串比较,相等返回0

D、'strstr'函数用于在字符串中查找子串

22nd

参考答案:ABCD

20.下列关于位运算符的描述,哪些是正确的?

A、'&'(按位与)可以用于清零特定位

B、(按位或)可以将特定位设置为1

C、'八(按位异或)可以用于交换两个变量的值(不使用临时变量)

D、'(按位取反)的结果总是比原数大

参考答案:ABC

判断题

1.'constint*p'表示指针所指向的内容是常量,不能通过p修改该内容。

A、正确

B、错误

参考答案:A

2.在C语言中,break语句只能用于switch语句或循环语句中,不能用

于if语句。

A、正确

B、错误

参考答案:A

3.字符串常量如'"HelIo”'在内存中存储时末尾会自动包含一个空字符'

\0\

A、正确

B、错误

23rd

参考答案:A

4.指针变量可以存放任何类型变量的地址。

A、正确

B、错误

参考答案:A

5.C语言的预处理指令#include"fiIe.«和#includediIe.h>在功能上

是完全等价的,都可以包含用户自定义头文件或系统头文件。

A、正确

B、错误

参考答案:B

6.预处理指令'#5311€^<5{50』>'查找头文件时,首先在当前源文件目

录下查找。

A、正确

B、错误

参考答案:B

7.数组名作为函数参数传递时,传递的是数组元素的个数。

A、正确

B、错误

参考答案:B

8.'volatiIe'关键字可以确保变量的值在编译时每次读取都去内存中获

取。

A、正确

24th

B、错误

参考答案:A

9.'unsignedchar'类型可以表示的整数范围是0到255。

A、正确

B、错误

参考答案:A

10.'#definePI3.14'是一条C语言语句,PI是一个预定义的常量。

A、正确

B、错误

参考答案:B

11.'malloc'和'calIoc'的主要区别在于初始化内存的方式不同。

A、正确

B、错误

参考答案:A

12.'sizeof(int*)'和'sizeof(int)'的值在32位和64位系统上可能是

相同的。

A、正确

B、错误

参考答案:A

13.'int*p=NULL;if(p!=NULL)*p=10;、不会导致程序崩溃。

A、正确

B、错误

25th

参考答案:B

14.'#definePI3.14'这行代码是声明了一个名为PI的常量。

A、正确

B、错误

参考答案:B

15.'strIen("heIIo")'的返回值是6O

A、正确

B、错误

参考答案:B

16.在C语言中,'char'类型在内存中始终占用1个字节。

A、正确

B、错误

参考答案:B

17.在C语言中,变量必须先声明后使用。

A、正确

B、错误

参考答案:A

18.'inta=10;a=a++;'执行后,a的值仍然是10。

A、正确

B错误

参考答案:B

19.一个C程序总是从文件中第一个定义的函数开始执行。

26th

A、正确

B、错误

参考答案:A

20.结构体变量的定义、赋值和初始化是分开进行的。

A、正确

B、错误

参考答案:B

21.'structStudent{charname[10];};'变量的大小等于'sizeof(char[1

0])\

A、正确

B、错误

参考答案:A

22.一个被调用函数可以返回一个指向栈内存的指针。

A、正确

B、错误

参考答案:B

23.宏定义、#defineSQUARE(x)x*x'在使用'SQUARE(2+3)'时结果为25o

A、正确

B、错误

参考答案:A

24.'a&&b'和'a&b'在运算结果上完全相同。

A、正确

27th

B、错误

参考答案:B

25.在C语言中,'二二'运算符用于判断两个变量的值是否相等,而'二'运

算符用于给变量赋值,

A、正确

B、错误

参考答案:A

26.两个指针变量可以进行算术运算,因此可以相减来计算两个指针之间

的元素个数。

A、正确

B、错误

参考答案:A

27.C语言中,'typedef'关键字主要用于给已有的数据类型定义一个新的

名称,而不是用于定义新类型。

A、正确

B、错误

参考答案:A

28.、if(x)等价于、if(x!=0){♦..}、<>

A、正确

B错误

参考答案:A

29.函数返回类型如果不指定,默认为'int'。

28th

A、正确

B、错误

参考答案:A

30.'floata=1.0/3.0;'将a的值赋值为0.3333333...o

A、正确

B、错误

参考答案:B

31.全局变量和静态变量的初始化值未指定时,其默认值均为0o

A、正确

B、错误

参考答案:A

32.函数参数的传递方式在C语言中全部是按值传递的。

A、正确

B、错误

参考答案:A

33.'FILE*fp;fp=fopen("data.txt","w");'如果文件不存在,fopen会创

建文件。

A、正确

B、错误

参考答案:A

34.在C语言中,任何类型的指针都可以直接赋值给void*类型的指针,

无需强制类型转换。

29th

A、正确

B、错误

参考答案:A

35.C语言中,结构体指针作为函数参数传递时,实际上是值传递,因此

函数内修改结构体成员不会影响原结构体。

A、正确

B、错误

参考答案:B

36.使用strlen()函数计算字符串长度时,它统计的是字符数组中字符的

个数,不包含字符串结束符'\0'。

A、正确

B、错误

参考答案:A

37.'intarr[5]={1,2}3数组初始化后,'arr[3]'的值是0。

A、正确

B、错误

参考答案:A

38.'floata=0.1f;if(a=0.1)'的判断结果为假。

A、正确

B、错误

参考答案:A

39.二维数组在内存中是按行优先顺序连续存储的。

30th

A、正确

B、错误

参考答案:A

40.'struct'和'union'在内存分配上的主要区别在于对齐方式。

A、正确

B、错误

参考答案:A

41.'static'关键字修饰局部变量时,该变量在函数结束后不会被释放。

A、正确

B、错误

参考答案:A

42.在'for'循环中,'break'语句可以跳出当前循环体,但无法跳出整个

多层循环结构。

A、正确

B、错误

参考答案:A

43.'#incIude'和'#define'都是在编译之前处理的。

A、正确

B、错误

参考答案:A

44.定义二维数组、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论