谭浩强《C程序设计》(第4版)章节专项练习及详解(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-09 18:32:31

点击下载

作者:圣才电子书

出版社:圣才电子书

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

谭浩强《C程序设计》(第4版)章节专项练习及详解

谭浩强《C程序设计》(第4版)章节专项练习及详解试读:

第1章 程序设计和C语言

1C语言编译程序的功能是(  )。

A.执行一个C语言编写的源程序

B.把C源程序翻译成ASCII码

C.把C源程序翻译成机器代码

D.把C源程序与系统提供的库函数组合成一个二进制执行文件【答案】C【解析】编译程序的功能是将“高级语言”翻译为“机器语言”。每条C语言语句,经过编译最终都将转换成二进制的机器指令。答案选择C选项。

2计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是(  )。

A.C语言程序仅可以编译执行

B.C语言程序仅可以解释执行

C.C语言程序既可以编译执行,又可以解释执行

D.以上说法都不对【答案】A【解析】编译执行是指程序执行前需要一个专门的编译过程把程序编译成机器语言的文件,再次运行时不需要重新翻译,执行效率高;解释执行是指每个语句都是执行的时候才翻译,执行效率低。用C语言编写的程序必须经过编译器编译后,转换为二进制的机器指令来运行。答案选择A选项。

3以下叙述中错误的是(  )。

A.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

B.C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件

C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中

D.C语言源程序经编译后生成后缀为.obj的目标程序【答案】A【解析】A项错误,注释语句不会被翻译成二进制的机器指令。C源程序经过C编译程序编译之后生成后缀为.obj的二进制文件(称为目标文件),然后由“链接程序”(Link)的软件把.obj文件与各种库函数连接起来生成一个后缀为.exe的可执行文件。答案选择A选项。

4以下叙述中错误的是(  )。

A.C语言的可执行程序是由一系列机器指令构成的

B.用C语言编写的源程序不能直接在计算机上运行

C.通过编译得到的二进制目标程序需要连接才可以运行

D.在没有安装C语言集成开发环境的机器上不能运行C源程序生成的exe文件【答案】D【解析】A项正确,C语言的可执行程序是由一系列机器指令组成的;BC项正确,用C语言编写的源程序必须经过编译,生成二进制目标代码,再经过连接才能运行;D项错误,C语言经过编译链接后的二进制目标代码可以脱离C语言集成开发环境独立运行。答案选择D选项。

5以下叙述正确的是(  )。

A.C编译程序把文件后缀为.c的源程序文件编译成文件后缀为.obj的二进制文件

B.C编译程序把文件后缀为.c的源程序文件编译成文件后缀为.exe的可执行文件

C.C编译程序把文件后缀为.obj的二进制文件编译成文件后缀为.exe的可执行文件

D.链接程序把文件后缀为.c的源程序文件链接成文件后缀为.exe的可执行文件【答案】A【解析】C编译程序把文件后缀为C的源程序文件编译成文件后缀为.obj的二进制文件,链接将一个或多个目标文件与程序用到的库文件连接起来,形成一个可以在操作系统直接运行的执行程序.exe,故排除B、C、D项,答案选择A选项。

6计算机能直接执行的程序是(  )。

A.源程序

B.目标程序

C.汇编程序

D.可执行程序【答案】D【解析】C语言是一种高级语言,C语言源程序经过C语言编译程序编译之后,生成一个后缀为.obj的二进制文件(称为目标程序),最后还要由“连接程序”(Link)软件,把此.obj文件与C语言提供的各种库函数连接在一起,生成后缀.exe的可执行程序。汇编程序是由汇编语言写成的程序,计算机不能直接执行。计算机能直接执行的程序是经过编译器处理转换为机器语言的程序。答案选择D选项。

7针对简单程序设计,以下叙述的实施步骤正确的是(  )。

A.确定算法和数据结构、编码、调试、整理文档

B.编码、确定算法和数据结构、调试、整理文档

C.整理文档、确定算法和数据结构、编码、调试

D.确定算法和数据结构、调试、编码、整理文档【答案】A【解析】简单程序设计的步骤是首先要确定算法和数据结构,然后编码、调试,最后整理相关文档。答案选择A选项。

8以下叙述中正确的是(  )。

A.程序设计的任务就是编写程序代码并上机调试

B.程序设计的任务就是确定所用数据结构

C.程序设计的任务就是确定所用算法

D.以上三种说法都不完整【答案】D【解析】程序设计是指设计、编程、调试程序的方法和过程,通常分为4个阶段:①问题建模;②算法设计;③编写代码;④编译调试。其工作内容涉及有关的基本概念、工具、方法及方法学,是目标明确的智力活动。答案选择D选项。

9以下叙述中错误的是(  )。

A.C程序在运行过程中所有计算都以十进制方式进行

B.C程序在运行过程中所有计算都以二进制方式进行

C.所有C程序都需要编译链接无误后才能运行

D.C程序中字符变量存放的是字符的ASCII值【答案】A【解析】C程序在运行过程中所有计算都以二进制方式进行。答案选择A选项。

10C语言源程序名的后缀是(  )。

A.c

B.exe

C.obj

D.cp【答案】A【解析】由C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。源程序经过C编译程序编译生成后缀为“.obj”的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件把目标文件与C语言提供的各种库函数连接起来,生成后缀为“.exe”的可执行文件。答案选择A选项。

11关于程序设计基本概念,以下叙述错误的是(  )。

A.计算机可以直接执行由任意高级语言编写的程序

B.高级语言都有与之对应的编译程序或解释程序

C.用任何一种计算机高级语言都可以把算法转换为程序

D.结构化算法可以解决任何复杂的问题【答案】A【解析】A项计算机只能识别机器语言,不能直接识别由高级语言编写的程序。结构化的程序是由三种基本的结构组成的:顺序结构、选择结构和循环结构,使用这三种结构能够解决任何问题。答案选择A选项。

12以下关于算法的叙述中错误的是(  )。

A.算法可以用伪代码、流程图等多种形式来描述

B.一个正确的算法必须有输入

C.一个正确的算法必须有输出

D.用流程图可以描述的算法可以用任何一种计算机高级语言编写成程序代码【答案】B【解析】算法可以使用自然语言、伪代码、流程图等多种不同的方法来描述。故选项A、D说法正确。一个正确的算法可以有零个或者多个输入,必须有一个或者多个输出。故选项C说法正确,B说法错误。答案选择B选项。

13以下叙述中错误的是(  )。

A.算法正确的程序最终一定会结束

B.算法正确的程序可以有零个输出

C.算法正确的程序可以有零个输入

D.算法正确的程序对于相同的输入一定有相同的结果【答案】B【解析】算法的5个特性:①有穷性;②确定性;③可行性;④有零个或多个输入;⑤有一个或多个输出。答案选择B选项。

14以下选项中叙述正确的是(  )。

A.C程序中的语句要经过编译才能转换成二进制机器指令

B.算法需要包含所有三种基本结构

C.有些算法不能用三种基本结构来表达

D.简单算法的操作步骤不能超过20步【答案】A【解析】编译就是把高级语言变成计算机可以识别的二进制语言,不经过编译的源程序是不能运行的,A项正确。算法不一定要包含所有三种基本结构,B项错误。结构化程序主要由3种基本控制结构组成,循环结构、选择结构、顺序结构,它们组成的算法结构可以解决任何复杂的问题,C项错误。算法的复杂程度不是由操作步骤多少决定的,而是由时间复杂度与空间复杂度来衡量,D项错误。答案选择A选项。

15流程图是描述算法的很好的工具,一般的流程图中由几种基本图形组成。其中判断框的图形是(  )。

A.菱形

B.长方形

C.平行四边形

D.椭圆型【答案】A【解析】传统的流程图由下图所示的几种基本图形组成。

答案选择A选项。

16构成C程序的三种基本结构是(  )。

A.顺序结构、转移结构、递归结构

B.顺序结构、嵌套结构、递归结构

C.顺序结构、选择结构、循环结构

D.选择结构、循环结构、嵌套结构【答案】C【解析】结构化程序由三种基本结构组成:顺序结构、选择结构和循环结构。已经证明,由三种基本结构组成的算法可以解决任何复杂的问题。答案选择C选项。

17C语言主要是借助以下(  )功能来实现程序模块化的。

A.定义函数

B.定义常量和外部变量

C.三种基本结构语句

D.丰富的数据类型【答案】A【解析】C程序的模块化主要通过函数来实现。C语言允许对函数单独进行编译,从而可以实现模块化。

18以下选项中叙述正确的是(  )。

A.结构化程序的三种基本结构是循环结构、选择结构、顺序结构

B.C语言源程序不编译也能直接运行

C.使用N-S流程图不能描述复杂算法

D.计算机能够直接运行C语言源程序,不必进行任何转换【答案】A【解析】编译就是把高级语言变成计算机可以识别的二进制语言,不经过编译的源程序是不能运行的,B项错误。算法可以用各种描述方法进行描述,N-S流程图把算法的每一步都用一个矩形框来表示,把一个个矩形框按执行的次序连接起来就是一个算法描述,无论算法复杂与否都能用N-S流程图描述,C项错误。C语言源程序需要经过编译和连接生成目标文件和可执行文件后才能运行,D项错误。答案选择A选项。

19以下选项中关于程序模块化的叙述错误的是(  )。

A.把程序分成若干相对独立的模块,可便于编码和调试

B.把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块

C.可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序

D.可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序【答案】C【解析】把一个大程序分解成若干相对独立的子程序,大大提高了程序编制的效率。软件编制人员在进行程序设计时,首先应当集中考虑主程序中的算法,写出主程序后再动手逐步完成子程序的调用。对于这些子程序也可用调试主程序的同样方法逐步完成其下一层,就是自顶向下、逐步细化、模块化的程序设计方法。答案选择C选项。

20以下关于结构化程序设计的叙述中正确的是(  )。

A.一个结构化程序必须同时由顺序、分支、循环三种结构组成

B.结构化程序使用goto语句会很便捷

C.在C语言中,程序的模块化是利用函数实现的

D.由三种基本结构构成的程序只能解决小规模的问题【答案】C【解析】A项,一个结构化程序可以由顺序、分支、循环三种结构组成,但不是必须同时都包括,可以包括其中的一个或多个;B项,goto语句会破坏程序的结构性、可读性,应尽量不用;D项,三种基本结构构成的程序也可以解决大规模的问题;C项,在C语言中,利用函数来实现程序的模块化。答案选择C选项。

21以下叙述中错误的是(  )。

A.使用三种基本结构构成的程序只能解决简单问题

B.结构化程序由顺序、分支、循环三种基本结构组成

C.C语言是一种结构化程序设计语言

D.结构化程序设计提倡模块化的设计方法【答案】A【解析】结构化程序由顺序、分支和循环三种基本结构组成,选项B正确。由三种基本结构组成的算法可以解决任何复杂的问题,而不只是解决简单问题,选项A错误。由三种基本结构所构成的算法称为结构化算法;由三种基本结构所构成的程序称为结构化程序,C语言是一种结构化程序设计语言。结构化程序通过函数实现模块化的设计方法。选项C、D正确。答案选择A选项。

22以下叙述中正确的是(  )。

A.在算法设计时,可以把复杂任务分解成一些简单的子任务

B.在C语言程序设计中,所有函数必须保存在一个源文件中

C.只要包含了三种基本结构的算法就是结构化程序

D.结构化程序必须包含所有的三种基本结构,缺一不可【答案】A【解析】A项正确,把复杂任务分解成一些简单的子任务是程序模块化的思想;B项错误,C语言中,函数可以放在不同的源文件中;CD两项错误,由三种基本结构所构成的程序称为结构化程序,三种基本结构可以任意组合。答案选择A选项。

23以下选项中叙述正确的是(  )。

A.使用三种基本结构就可以实现任何复杂算法

B.只要程序包含了三种基本结构中的任意一种,就是结构化程序

C.程序语法错误要在运行时才能发现

D.C语言程序不需要包含main()函数【答案】A【解析】结构化程序主要由循环结构、选择结构、顺序结构三种基本控制结构组成,它们组成的算法结构可以解决任何复杂的问题,A项正确。结构化程序设计是以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,而不是说包含了三种基本结构就是结构化程序,B项错误。程序语法错误是在编译过程中发现的,一般来说编译器只能检查语法和最简单的语义错误,而不检查程序的逻辑错误,C项错误。C程序总是从main函数开始执行,其他函数由main函数直接或间接调用执行,所以C语言程序必须包含main函数,D项错误。答案选择A选项。

24结构化程序由顺序、选择、循环三种基本结构组成,以下相关叙述错误的是(  )。

A.三种基本结构不可以嵌套使用

B.顺序结构是按语句在程序中的先后顺序逐条执行,没有分支,没有转移

C.选择结构是根据不同的条件执行不同分支中的语句

D.循环结构是根据条件决定是否重复、重复执行多少次循环体语句【答案】A【解析】结构化程序主要由3种基本控制结构组成,顺序结构是最基本的算法结构,当执行由这些语句构成的程序时,将按这些语句在程序中的先后顺序逐条执行,没有分支,没有转移,没有步骤之间的相互约束,没有对某一步骤的多次使用,完全按照步骤的原有次序依次执行,B选项叙述正确。选择结构根据不同的条件去执行不同分支中的语句,C选项叙述正确。循环结构就是根据各自的条件,使同一组语句重复执行多次,D选项叙述正确。三种结构可以嵌套使用,A选项叙述错误,答案选择A选项。

25以下选项中叙述正确的是(  )。

A.复杂任务可以分解成简单子任务

B.C语言程序中的所有函数必须保存在同一个源文件中

C.全部三种基本结构都包含的才是结构化程序

D.C语言程序可以定义多个不同内容的main函数【答案】A【解析】结构化程序设计把一个复杂的问题的求解过程分成阶段进行,即复杂任务可以分解成简单的任务,A项正确。C语言程序中的函数不一定要保存在同一个源文件中,外部函数可以被同程序中其他源文件中调用,B项错误。结构化程序主要由3种基本控制结构组成,循环结构、选择结构、顺序结构,它们组成的算法结构可以解决任何复杂的问题。算法不一定要包含所有三种基本结构,也可以只包含一种或两种,C项错误。C程序由一个或若干个函数构成,程序中有且只能有一个主函数,即main函数,D项错误。答案选择A选项。

26以下叙述错误的是(  )。

A.在进行模块化程序设计的时候,应首先完成每个模块的编写调试,再集中考虑主程序中的算法

B.同一程序各模块可由不同人员同时进行编写调试,可提高编写程序的效率

C.模块化的程序设计是采用自顶向下、逐步细化的原则

D.程序的每个模块都可通过三种基本结构实现【答案】A【解析】进行模块化设计时,首先设计框架,并定义和调试好各个模块之间的输入输出关系,完成各个模块的编写调试后再集中编译,A项错误;各个模块可以由不同人员同时进行编写调试,提高编写程序的效率,B项正确;模块化的程序设计采用自顶向下、逐步细化的原则,C项正确;结构化程序使用三种基本结构可以解决任何复杂的问题,D项叙述正确。答案选择A选项。

27以下叙述正确的是(  )。

A.只使用三种基本结构即可解决任何复杂问题

B.C语言程序并不是必须要定义main()函数

C.只要程序包含了任意一种基本结构,就肯定是结构化程序

D.程序中的语法错误只能在运行时才能显现【答案】A【解析】A项正确,程序设计语言仅仅使用顺序、选择和循环三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。B项错误,C语言程序必须要定义main()函数;C项错误,结构化程序设计是以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,而不是说包含了三种基本结构就是结构化程序;D项错误,程序中的语法错误在编译时能显现。答案选择A选项。

第2章 算法——程序的灵魂

1以下叙述中正确的是(  )。

A.在C语言程序中,main函数必须放在其他函数的最前面

B.每个后缀为.c的C语言源程序都可以单独进行编译

C.在C语言程序中,只有main函数才可以单独进行编译

D.每个后缀为.c的C语言源程序都应该包含一个main函数【答案】B【解析】main函数可以在程序的任何位置。每一个可执行的C程序都必须有一个且只能有一个主函数。后缀名为.c的C语言源程序都可以单独进行编译。main函数只是让执行程序的系统知道该从哪里开始执行程序(从主函数处执行),其他有关这个程序的子函数是通过函数调用来实现其功能(不需main函数)。答案选择B选项。

2以下叙述中错误的是(  )。

A.C语言编写的函数源程序,其文件名后缀可以是.c

B.C语言编写的函数都可以作为一个独立的源程序文件

C.C语言编写的每个函数都可以进行独立的编译并执行

D.一个C语言程序只能有一个主函数【答案】C【解析】C源程序经过C编译程序编译之后生成一个后缀为.obj的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件,把此.obj文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。只有含有main函数的经过编译链接才能执行。答案选择C选项。

3以下叙述中错误的是(  )。

A.一个C程序可以包含多个不同名的函数

B.一个C程序只能有一个主函数

C.C程序在书写时,有严格的缩进要求,否则不能编译通过

D.C程序的主函数必须用main作为函数名【答案】C【解析】一个C程序有且只有一个主函数main。一个C程序可以包含多个不同名字的子函数。C程序在书写时没有严格的缩进要求。答案选择C选项。

4以下叙述中正确的是(  )。

A.C语言规定必须用main作为主函数名,程序将从此开始执行

B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行

C.C语言程序将从源程序中第一个函数开始执行

D.main的各种大小写拼写形式都可以作为主函数名,如:MAIN,Main等【答案】A【解析】用户不能指定某函数为主函数,C语言规定,程序从main函数开始执行,从main函数退出,C语言函数名区别大小写。答案选择A选项。

5下列叙述中错误的是(  )。

A.C程序可以由一个或多个函数组成

B.C程序可以由多个程序文件组成

C.一个C语言程序只能实现一种算法

D.一个C函数可以单独作为一个C程序文件存在【答案】C【解析】一个C程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C语言程序可以实现多种算法,答案选择C选项。

6下列叙述中错误的是(  )。

A.C程序在运行过程中所有的计算都以二进制方式进行

B.C程序在运行过程中所有的计算都以十进制方式进行

C.所有的C程序都需要在连接无误后才能运行

D.C程序中整型变量只能存放整数,实型变量只能存放浮点数【答案】B【解析】在C程序运行过程中,编译器的作用是将程序转换为目标代码,目标代码都是二进制的。答案选择B选项。

7以下叙述正确的是(  )。

A.C语言程序是由过程和函数组成的

B.C语言函数可以嵌套调用,例如:fun(fun(x))

C.C语言函数不可以单独编译

D.C语言中除了main函数,其他函数不可作为单独文件形式存在【答案】B【解析】一个函数的返回值可以作为参数然后传给另一个函数,因此函数是可以嵌套调用的。A项错误,C语言程序只有函数构成,没有过程;C项错误,编译系统的任务在于检查语法错误,只要符合语法规则的C程序都可以通过编译,就算是单独的函数也可以;D项错误,在C语言中除main()函数以外的其他函数可以和main()函数在同一个C文件中,也可以单独处于其他的C文件,只要在使用到这些函数的main()函数的C文件中用预编译指令“#include”包含进来即可。答案选择B选项。

8对于一个正常运行的C程序,以下叙述中正确的是(  )。

A.程序的执行总是从程序的第一个函数开始,在main函数结束

B.程序的执行总是从main函数开始

C.程序的执行总是从main函数开始,在程序的最后一个函数中结束

D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束【答案】B【解析】一个正常运行的C程序总是从main函数开始执行,最后返回到main函数结束。答案选择B选项。

9下列叙述中正确的是(  )。

A.每个C程序文件中都必须要有一个main函数

B.在C程序中main函数的位置是固定的

C.C程序中所有函数之间都可以相互调用

D.在C程序的函数中不能定义另一个函数【答案】D【解析】在C程序中,main函数的位置可以任意,而且不管main函数位置怎么变化,程序都会以main函数作为入口,选项B错误;每个C程序(而不是每个C程序文件)必须有且只能有一个main函数,选项A错误;main函数不能被其他函数调用,选项C错误;函数的定义不能放在另一个函数体内,但是声明可以,答案选择D选项。

10以下叙述正确的是(  )。

A.C程序总是以main()作为程序执行的起始行

B.main()函数若不带参数,其后面的一对圆括号可省略

C.函数体内的定义语句和可执行语句允许任意穿插出现

D.C语言中的语句之间必须用分号作为分隔符【答案】A【解析】main函数后面的括号告诉编译器这是一个函数,不可以省略,排除B选项;在复合语句中,不仅可以有执行语句,还可以有定义语句,定义语句应该出现在执行语句的前面,故排除C选项;C语言中的某些语句可以不用分号,例如if语句,宏定义,故D选项错误。答案选择A选项。

11以下关于C语言的叙述中正确的是(  )。

A.C语言中的注释不可以夹在变量名或关键字的中间

B.C语言中的变量可以在使用之前的任何位置进行定义

C.在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致

D.C语言的数值常量中夹带空格不影响常量值的正确表示【答案】A【解析】A项正确,C语言中,程序中的注释可以出现在程序中任何合适的地方,但是,不能写在变量名或关键字的中间,一旦写在其中间,将会失去变量名或关键字的意义,导致报错;B项错误,条件没有说全,应该是在有效的范围内,变量可以在任何位置定义,例如注释中定义无效。C项错误,在C语言的算术运算符中,取余运算符“%”的两个运算分量必须是整数,但对于其他运算符,如“+”,“-”来说,两侧的运算符类型也可以不一样,例如左侧为一个字符类型,右侧为一个整数类型,系统在执行程序时会自动将字符类型转换为ASCII值进行运算;D项错误,C语言的数值表示时各个数位必须紧靠在一起,否则编译系统只会识别紧靠运算符的一部分数值,另一部分数值会发生语法错误。答案选择A选项。

12以下叙述中正确的是(  )。

A.C程序的基本组成单位是语句

B.C程序中的每一行只能写一条语句

C.简单C语句必须以分号结束

D.C语言必须在一行内写完【答案】C【解析】C程序的基本组成单位是函数,A项错误;C程序以分号作为每个语句结尾,一行能写多条语句,也可以将一条语句分几行书写,B、D两项错误;C语言中语句分为简单语句和复合语句。简单语句以分号作为结束。其中简单语句里面又有赋值语句、声明语句、结构化语句、函数调用语句和空语句。复合语句指用花括号{}将简单语句甚至另一些复合包起来,所以就以}作为语句结束的标记。答案选择C选项。

13以下选项中叙述正确的是(  )。

A.函数体必须由{开始

B.C程序必须由main语句开始

C.C程序中的注释可以嵌套

D.C程序中的注释必须在一行完成【答案】A【解析】函数体是函数首部下面的花括号内的部分,所以函数体必须由{开始,A选项正确。一个源程序文件可以包括预处理命令、全局声明、函数定义,程序总是从main函数开始执行的,不是main语句,B选项错误。函数可以嵌套,注释不能嵌套,C选项错误。C程序中允许两种注释,以//开头的单行注释;以/*开始,以*/结束的块式注释,D选项错误。答案选择A选项。

14以下叙述中正确的是(  )。

A.C程序中的注释只能出现在程序的开始位置和语句的后面

B.C程序书写格式严格,要求一行内只能写一个语句

C.C程序书写格式自由,一个语句可以写在多行上

D.用C语言编写的程序只能放在一个程序文件中【答案】C【解析】C程序的注释可以出现在C程序的任何位置,注释符号:“//”或“/*…*/”,选项A错误。C程序中,一行内可写多个语句,每条语句用分号“;”结束,选项B错误,选项C正确。用C语言编写的程序可以放在多个程序文件中,用#include命令行实现文件包含功能,选项D错误。答案选择C选项。

15以下叙述中错误的是(  )。

A.书写风格良好的程序执行效率高

B.书写风格良好的程序易读性好

C.C程序可以在一行上写多条语句

D.C程序允许将一条语句分写在多行上【答案】A【解析】书写风格与程序执行效率无关,程序执行效率与程序的数据结构有关,由算法的时间复杂度和空间复杂度决定,但书写风格会深刻地影响软件的质量和可维护性,良好的程序设计风格可以使程序结构清晰合理。良好的书写习惯一般一行写一条语句,这样方便阅读,但是一行写多条语句或者将一条语句分写在多行上是符合C程序编写规则的。答案选择A选项。

19以下四个程序中,完全正确的是(  )。

A.

#include main(){  /*/programming/*/  printf("programming!\n");}

B.

#include main(){  /*programming*/  printf("programming!\n");}

C.

#include main(){  /*/*programming*/*/  printf("programming!\n");}

D.

include main(){  /*programming*/  printf("programming!\n");}【答案】B【解析】A项中,“main()”函数后面不能加分号;C语言中注释语句的注释方法是:/*注释内容*/或//注释一行,且“/*”和“*/”不能嵌套使用,C项错误;D选项中预编译命令“include ”前缺少“#”号。答案选择B选项。

17有以下程序

#include main(){  int a=0,b=0;  /*给a赋值a=10;  b=20;给b赋值*/  printf("a+b=%d\n",a+b);/*输出计算结果*/}

程序运行后的输出结果是(  )。

A.a+b=0

B.a+b=30

C.a+b=10

D.出错【答案】A【解析】注释/*和*/之间的代码不参与编译,所以a、b的值仍为0。答案选择A选项。

18关于C语言的变量名,以下叙述正确的是(  )。

A.变量名不可以与关键字同名

B.变量名不可以与预定义标识符同名

C.变量名必须以字母开头

D.变量名是没有长度限制的【答案】A【解析】合法的标识符由字母(大、小写均可)、数字和下划线组成,并且必须以字母或下划线开头。关键字是指被C语言保留的,不能用作其他用途的标识符,它们在程序中都代表着固定的含义,用户不可重新定义,A项正确、BC两项错误。变量名没有长度限制,但不可超过编译器可以辨识的范围,D项错误。答案选择A选项。

19以下选项中叙述正确的是(  )。

A.C语言的标识符可分为关键字、预定义标识符和用户标识符三类

B.C语言的标识符可分为语句、变量和关键字三类

C.C语言的标识符可分为函数名、变量和预定义标识符三类

D.C语言的标识符可分为运算符、用户标识符和关键字三类【答案】A【解析】C语言的标识符可分为关键字、预定义标识符和用户标识符三类,答案选择A选项。

20C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述中正确的是(  )。

A.预定义标识符(如库函数中的函数名)可用作用户标识符,但失去原有含义

B.用户标识符可以由字母和数字任意顺序组成

C.在标识符中大写字母和小写字母被认为是相同的字符

D.关键字可用作用户标识符,但失去原有含义【答案】A【解析】C语言允许把预定义标识符重新定义另作他用,但这将失去预先定义的原意。B项,标识符的第一个字符必须为字母或下划线;C项,标识符区分大小写;D项,关键字是指被C语言保留的,不能用作其他用途的标识符。答案选择A选项。

21关于C语言标识符,以下叙述错误的是(  )。

A.标识符可全部由数字组成

B.标识符可全部由下划线组成

C.标识符可全部由小写字母组成

D.标识符可全部由大写字母组成【答案】A【解析】C语言标识符只能由字母、数字、下划线构成,且只能以字母、下划线开头,故答案选择A选项。

22按照C语言规定的用户标识符命名规则,不能出现在标识符中的是(  )。

A.大写字母

B.连接符

C.数字字符

D.下划线【答案】B【解析】C语言中标识符只能由下划线、字母和数字组成,且不能以数字开头。答案选择B选项。

23以下C语言用户标示符中,不合法的是(  )。

A._1

B.AaBc

C.a_b

D.a--b【答案】D【解析】C语言中的标识符只能由字母、数字和下画线构成,且第一个字符必须是字母或下画线,同时不能与C语言中的关键字相同。D项还有非法字符“-”。答案选择D选项。

24以下选项中,能用作用户标识符的(  )。

A.void

B.8_8

C._0_

D.unsigned【答案】C【解析】标识符是由若干个字符组成的字符序列,用来命名程序的一些实体。C语言定义标识符应遵循以下六种规则:①标识符由字母、数字或下划线组成;②第一个字符必须是字母或下划线;③标识符最多由274个字符组成;④在标识符中严格区分大小写字母;⑥关键字不能作为自定义的标识符在程序中使用。A、D项皆为C语言的关键字,B项第一个字符为数字,错误。答案选择C选项。

25以下选项中可用作c语言中合法用户标识符的是(  )。

A._123

B.void

C.-abc

D.2a【答案】A【解析】合法标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,其中,关键字在程序中都代表着固定的含义,不能另作他用。B项中void是关键字,不合法。C项和D项没有以字母或下划线开头,不合法。答案选择A选项。

26以下选项中合法的标识符是(  )。

A.1_1

B.1-1

C._11

D.1_ _【答案】C【解析】C语言的标识符命名规则为:①只能由字母、数字和下划线3种字符组成;②标识符首位必须是字母或下划线;③不能与C语言中的关键字或保留字相同。AD两项,标识符首位不能为数字;B项,标识符首位不能为数字且“-”为不合法的字符。答案选择C选项。

27以下选项中不合法的标识符是(  )。

A.print

B.FOR

C.&a

D._00【答案】C【解析】标识符是由若干个字符组成的字符序列,用来命名程序的一些实体。语法规则为:①标识符由字母、数字或下划线组成;②第一个字符必须是字母或下划线;③标识符最多由274个字符组成;④在标识符中严格区分大小写字母;⑤关键字不能作为自定义的标识符在程序中使用。C中有非法字符&。答案选择C选项。

28下列定义变量的语句中错误的是(  )。

A.double int_;

B.float US$;

C.char For;

D.int _int;【答案】B【解析】标识符由字母、数字、下划线组成。$是非法字符,不能出现在标识符中。答案选择B选项。

29以下叙述中错误的是(  )。

A.非零的数值型常量有正值和负值的区分

B.常量是在程序运行过程中值不能被改变的量

C.定义符号常量必须用类型名来设定常量的类型

D.用符号名表示的常量叫符号常量【答案】C【解析】在C语言程序中,可以用一个符号名来代表一个常量,称为符号常量,符号常量在定义是不需要类型,其本身就能表达其类型。答案选择C选项。

30以下选项中关于C语言常量的叙述错误的是(  )。

A.所谓常量,是指在程序运行过程中,其值不能被改变的量

B.常量分为整型常量、实型常量、字符常量和字符串常量

C.常量可分为数值型和非数值型常量

D.经常被使用的变量可以定义为常量【答案】D【解析】常量是指在程序运行过程中其值不能被改变的量。在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。整型常量和实型常量又称数值型常量,它们有正值和负值的区分。所谓变量是指在程序运行过程中其值可以改变的量。C语言规定,程序中所有变量都必须先定义后使用。变量和常量有明显的区分。D项,常量指在程序运行过程中,其值不能被改变的量,而变量是指在程序运行过程中,其值能被改变的量,因此变量不可以定义成常量。答案选择D选项。

31以下选项中不能用作C程序合法常量的是(  )。

A.1,234

B."\123"

C.123

D."\x7D"【答案】A【解析】常量分为数值常量和字符串常量,A项错误。BD两项为字符常量;C项为数值常量。答案选择A选项。

32以下选项中能表示合法常量的是(  )。

A.整数:1,200

B.实数:1.5E2.0

C.字符斜杠:'\'

D.字符串:"\007"【答案】D【解析】A项错误,表达错误;B项错误,E后面应为整数,不能是小数;C项错误;字符斜杠的表示方法为'\\',因为第一个\表示是转义字符;D项正确,表示空字符串,第一个字符为"\0",正确。答案选择D选项。

33以下选项中不能作为C语言合法常量的是(  )。

A.'cd'

B.0.1e+6

C."a"

D.'\011'【答案】A【解析】常量包括整型常量、实型常量、字符常量和字符串常量等。单引号表示字符常量,但不能包含字符串。表达字符串常量时需用双引号。A项,在C语言中,字符常量是用单引号括起来的一个字符,'cd'包含了2个字符;B项,0.1e+6是实型常量的指数形式,代表60.1×10;C项,"\a"是合法的字符串常量,\a是一个非打印的转义字符表示响铃;D项,'\011'是一个字符常量,\011是一个用3位八进制表示的转移字符。答案选择A选项。

34以下选项中,合法的C语言常量是(  )。

A.1.234

B.'C++'

C."\2.0

D.2Kb【答案】A【解析】C语言中的常量:①整型常量,用不带小数点的数字表示;②实型常量,用带小数点的数字表示;③字符型常量,用带有单引号的一个字符表示;④字符串常量,用一对双引号括起来的一串字符。1.234为实型常量,A项正确;'C++'不合法,若改成"C++"则为字符串常量,B项错误;"\2.0不合法,不是任何类型常量,C项错误;2Kb不合法,若加上双引号"2Kb"为字符串常量,D项错误。答案选择A选项。

35以下选项中,能用作数据常量的是(  )。

A.115L

B.0118

C.1-5e1.5

D.o115【答案】A【解析】C语言中实型常量有两种表示:小数形式和指数形式。在指数形式中,字母e(或E)之前必须要有数字,且e或E后面的指数必须为整数,故C项错误;八进制整数常量以数字0开始,而不是o,故D项错误。在八进制数中的有效数字为0~7,故B项错误;L是长整型数据标识,115L为长整型常数即long int,A项正确。答案选择A选项。

36以下选项中,合法的数值型常量是(  )。

A.3.2

B.'X'

C.099

D.0xEH【答案】A【解析】A项正确,3.2是合法的实型常量;B项错误,'X'为字符型常量不是数值型常量;C项错误,以0开头,表示八进制,但八进制的每位由0~7中的一个组成;D项错误,0x和H冲突,都是表示十六进制。答案选择A选项。

37以下选项中,合法的一组C语言数值常量是(  )。

A.12. 0Xa23 4.5e0

B.028 .5e-3 -0xf

C..177 4e1.5 0abc

D.0x8A 10,000 3.e5【答案】A【解析】A项,C语言中小数必须要有小数点,但是小数部分可以省略,12.是合法的常量;C语言中十六进制数以0X或0x开头,0Xa23是指十六进制数a23;在C语言中,“e”或“E”后跟一个整数来表示以10为0底的幂数,4.5e0表示4.5*10。B项,028表示的是八进制,以0开头,0后面的数字只能在0~7之间。C项,4e1.5,e后面只能跟整数,0abc表示八进制,0后面的数字只能在0~7之间;D项,10,000中不能有逗号。答案选择A选项。

38以下选项中正确的定义语句是(  )。

A.double a;b;

B.double a=b=7;

C.double a=7,b=7;

D.double,a,b;【答案】C【解析】同一类型变量的定义时,不同变量之间需要用“,”分隔,选项A错误;定义变量时初始化赋值不能用等号连接,选项B错误;变量类型说明后面不能用逗号,而是用空格分离,选项D错误。答案选择C选项。

39以下定义语句中正确的是(  )。

A.int a=b=0;

B.char A=65+1,b='b';

C.float a=1,*b=&a,*c=&b

D.double a=0.0;b=1.1;【答案】B【解析】A项错误,变量定义的时候不能用连续用等号,等号在定义是初始化的一种;C项错误,b是指针变量,*c=&b表示将一个二级指针赋值给一个一级指针,应该为*c=b或者**c=&b;D项,变量前为分号“;”表示前面的语句定义完毕,变量b的定义没有指明变量类型。答案选择B选项。

40以下关于C语言数据类型使用的叙述中错误的是(  )。

A.若只处理“真”和“假”两种逻辑值,应使用逻辑类型

B.若要保存带有多位小数的数据,可使用双精度类型

C.若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型

D.整数类型表示的自然数是准确无误差的【答案】A【解析】A项错误,C语言中没有逻辑类型,在C++中才引入的;B项正确,float类型称为单精度类型,double类型称为双精度类型,一般系统中,为float类型的变量分配4个字节的存储单元,为double类型的变量分配8个字节的存储单元。C项正确,struct结构体,可以用来描述包含多种基本类型的复杂对象。D项正确,整数的表示是不存在误差的。答案选择A选项。

41设有两行定义语句:

int scanf;

float case;

则以下叙述正确的是(  )。

A.两行定义语句都不合法

B.两行定义语句都合法

C.第1行语句不合法

D.第2行语句不合法【答案】D【解析】预定义标识符是系统已经有过定义的标识符,用户可以重新定义,可以作为变量名。scanf为库函数名,属于预定义标识符,可以被用户重定义,第一行语句合法。C语言关键字是被保留的,不能用作其他用途的一些标识符,它们在程序中都代表着固定的含义,用户不可重新定义。case是选择结构switch语句中的关键字,不可被用户重定义,第二行语句不合法。答案选择D选项。

42阅读以下程序:

#include main(){  int case;  float printF;  printf("请输入2个数:");  scanf("%d %f",&case,&printF);  printf("%d %f\n",case,printF);}

该程序编译时产生错误,其出错原因是(  )。

A.定义语句出错,case是关键字,不能用作用户自定义标识符

B.定义语句出错,printF不能用作用户自定义标识符

C.定义语句无错,scanf不能作为输入函数使用

D.定义语句无错,printf不能输出case的值【答案】A【解析】在C语言中,关键字又称保留字,它是系统预先定义的,具有特定含义的标识符,故不允许用户重新定义。case为C语言中的关键字,因此用户不能再定义标识符为case的变量。答案选择A选项。

43C语言中,最基本的数据类型包括(  )。

A.整型、实型、逻辑型

B.整型、字符型、数组

C.整型、实型、字符型

D.整型、实型、结构体【答案】C【解析】C语言中,最基本的数据类型包括整型、实型、字符型,答案选择C选项。

44C语言整数不包括(  )。

A.带小数点的整数

B.正整数

C.负整数

D.无符号整数【答案】A【解析】C语言整数包括正整数,负整数,无符号整数,不含带小数点的整数。答案选择A选项。

45C源程序中不能表示的数制是(  )。

A.二进制

B.八进制

C.十进制

D.十六进制【答案】A【解析】C语言中整型常量可以用十进制、八进制数、十六进制数来表示。虽然计算机只能识别二进制数,但二进制不能用源程序表示。答案选择A选项。

46有以下程序:

#includemain(){  int x=011;  printf("%d\n",++x);}

程序运行后的输出结果是(  )。

A.12

B.11

C.10

D.9【答案】C【解析】x=011表示按照八进制赋值,则十进制数为9,所以输出++x的结果为10。答案选择C选项。

47有以下程序,其中k的初值为八进制数

#includemain(){  int k=011;  printf("%d\n",k++);}

程序运行后的输出结果是(  )。

A.12

B.11

C.10

D.9【答案】D【解析】整型变量k的值“011”是用八进制表示的,即十进制的“9”,而输出格式为%d,即十进制格式,所以输出为“9”,然后k自增1。答案选择D选项。

48有如下程序:

#includemain(){  int x=072;  printf("%d\n",x+1);}

程序运行后的输出结果是(  )。

A.59

B.73

C.115

D.72【答案】A【解析】整型常量有3种,①十进制整常量,没有前缀,输出格式控制符为%d;②八进制整常量,以0作为前缀,输出格式控制符为%o;③十六进制整常量,以0X或0x作为前缀,输出格式控制符为%x。八进制数072表示成十进制数为58,即x=072=58,以十进制格式输出x+1=59,答案选择A选项。

49有如下程序:

#includemain(){  int x=0x13;  printf("%d\n",x+1);}

程序运行后的输出结果是(  )。

A.12

B.14

C.20

D.13【答案】C【解析】整型常量中,十进制整常量没有前缀,输出格式控制符为%d;八进制整常量以0作为前缀,输出格式控制符为%o;十六进制整常量以0X或0x作为前缀,输出格式控制符为%x。十六进制数0x13表示成十进制数为19,以十进制格式输出x+1=19+1=20,答案选择C选项。

50有以下程序:

#includemain(){  int x=0x13;  printf("INT:%d\n",x+1);}

程序运行后的输出结果是(  )。

A.INT:14

B.INT:13

C.INT:12

D.INT:20【答案】D【解析】0x13是十六进制数,%d需要输出十进制数,换算成十进制:016×1+16×3=16+3=19,输出INT=x+1=20,因此答案选择D选项。

51若函数中有定义语句:

int k;

则(  )。

A.系统将自动给k赋初值0

B.这时k中的值无定义

C.系统将自动给k赋初值-1

D.这时k中无任何值【答案】B【解析】int k;这条语句是定义一个整型变量k,这是动态定义,编译程序仅为k开辟存储单元,而没有在存储单元中存放任何初值,此时变量中的值时无意义的。若是静态定义,则会自动初始化,其默认值为0。答案选择B选项。

52有以下程序

#includemain(){  int s,t,A=10;  double B=6;  s=sizeof(A);  t=sizeof(B);  printf("%d,%d\n",s,t);}

在VC++2010平台上编译运行,程序运行后的输出结果是(  )。

A.2,4

B.4,4

C.4,8

D.10,6【答案】C【解析】sizeof的作用就是返回一个对象或者类型所占的内存字节数。在VC++2010中整型占4个字节,双精度实型占8个字节。答案选择C选项。

53关于C语言中数的表示,以下叙述中正确的是(  )。

A.只有整型数在允许范围内能精确无误地表示,实型数会有误差

B.只要在允许范围内整型和实型都能精确表示

C.只有实型数在允许范围内能精确无误地表示,整型数会有误差

D.只有八进制表示的数才不会有误差【答案】A【解析】实型数据在内存中存储的二进制位数是有限的,而一个十进制实数转化为二进制实数时,其有效数字位数有可能会超过尾数的存储长度,从而导致有效数字丢失而产生误差。在整型数允许范围之内,二进制可以表示任意一个整数。答案选择A选项。

54下列形式中不合法的常量是(  )。

A.2.E8

B.-.28

C.-028

D.2e-8【答案】C【解析】-028表示的是八进制的整型常量,但八进制的数字只能用0~7表示。AD两项为指数形式的实数表示,在e或E的前面必须要有数字,且e或E后面的指数必须为整数;B项,为整数常量。答案选择C选项。

55以下选项中表示一个合法的常量是(说明:符号u表示空格)(  )。

A.9u9u9

B.0Xab

C.123E0.2

D.2.7e【答案】B【解析】十六进制数用0x或0X开头。0Xab是指十六进制数,是合法的常量,B项正确。A项多位数字之间不能用空格间隔,A项错误;当用指数形式表示浮点数据时,E的前后都要有数据,并且E的后面数要为整数,C、D错误。答案选择B选项。

56以下选项中可用作C程序合法实数的是(  )。

A..1e0

B.3.0e0.2

C.E9

D.9.12E【答案】A【解析】C程序的合法实数有小数和指数两种表示形式。其中,对于用指数形式表示的实数来说,字母e或E之前必须要有数字,且字母e或E后面的指数必须为整数。B项,e后的指数不能为小数形式;C项,E前必须要有数字;D项,E后缺少整数形式的指数。答案选择A选项。

57以下选项中,能用作数据常量的是(  )。

A.o115

B.0118

C.1-5e1.5

D.115L【答案】D【解析】C语言中实型常量有两种表示:小数形式和指数形式。在指数形式中,字母e(或E)之前必须要有数字,且e或E后面的指数必须为整数,故C项错误;八进制整数常量以数字0开始,而不是o,故A项错误。在八进制数中的有效数字为0~7,故B项错误;L是长整型数据标识,115L为长整型常数即long int,D项正确。答案选择D选项。

58以下选项中,合法的C语言实数是(  )。

A.3.1e0.4

B..2e0

C.E13

D.7.12E【答案】B【解析】实型常量指数形式由十进制数加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。.2e0为指数形式实数,B项正确。3.1e0.4,阶数不是整数,A项错误。E13阶码标志前缺少十进制数,C项错误。7.12E缺少阶码,D项错误。答案选择B选项。

59以下不合法的数值常量是(  )。

A.8.0E0.5

B.1e1

C.011

D.0xabcd【答案】A【解析】实型常量指数形式中,字母e(或E)前后必须都要有数字,且e(或E)后面的指数必须为整数。答案选择A选项。

60以下选项中,合法的数值型常量是(  )。

A.3.1415

B."A"

C.092

D.0xDH【答案】A【解析】数值型常量包括整型常量和实型常量。整型常量有三种:①十进制常量,用0~9表示,不能以0开头;②八进制常量,用0~7表示,必须用0开头;③十六进制常量,用0~9和A~F(a~f)表示,必须以0x或0X开头。实型常量:用带小数点的数字表示,其值有两种表达形式,分别为十进制小数形式和指数形式。3.1415为实型常量,A项正确。"A"为长度为1的字符串常量,B项错误。092按照格式来说是八进制整型常量,但是八进制不会出现9,C项错误。0xDH按照格式说是十六进制整型常量,但是不应该出现H,D项错误。答案选择A选项。

61在C语言中,以下选项中不能正确表示10×1000之值的是(  )。

A.1.0E4.0

B.1.E4

C.10E3

D.1.0e4【答案】A【解析】实型常量用带小数点的数字表示,其值有两种表达形式,分别为十进制小数形式和指数形式。指数形式由十进制数加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成,而A项中阶码4.0是浮点数,所以A项不能正确表示10×1000之值,B、C、D项都表示正确并且值为10000,答案选择A选项。

62若有定义语句:

int a=10;double b=3.14;

则表达式'A'+a+b值的类型是(  )。

A.char

B.int

C.double

D.float【答案】C【解析】在多目运算符相关联的运算数中,如果类型不一致,系统将自动进行类型转换,使两边的类型达到一致后,再进行运算,转换的规则是由“低到高”。'A'是字符型,a是整型,b是double型。字符型数据占1个字节,整型占2个字节,doub1e型占8个字节,故三者相加后为double型,答案选择C选项。

63若有定义:

int a=1,b=2,c=3;

则执行表达式(a=b+c)||(++b)后,a、b、c的值依次为(  )。

A.1,2,3

B.5,3,2

C.5,2,3

D.5,3,3【答案】C【解析】||表示或运算,当第一个表达式为真时,第二个表达式不执行。根据运算符的优先级规则,先计算(a=b+c),将b+c的值赋值给a,则a=5,而||右边的括号不会被执行,所以b=2,c=3。答案选择C选项。

64C语言程序中,运算对象必须是整型数的运算符是(  )。

A.&&

B./

C.%

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载