第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选项。