第1章程序设计基本概念可以连续执行的一条条指令的集合称为“程序”。可以说,程序就是人与机器“对话”的语言,也就是我们常说的“程序设计语言”。§1.1程序和程序设计考点01:C程序C语言的原型是ALGOL60语言,由B语言演变而来,1978年正式发表。C语言是一种面向过程的语言。早期的C语言主要是用于UNIX系统,后来在各类大、中、小和微型计算机上得到了广泛的使用。VC++是面向对象的语言。C语言的主要特点(1)简洁紧凑、灵活方便共有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。(2)运算符丰富运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。(3)数据结构丰富整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等,能用来实现各种复杂的数据类型的运算。(4)引入了指针概念,使程序效率更高。(5)C语言是结构式语言用函数作为程序模块,每个函数完成独立的功能来实现程序的模块化。(6)语法限制不太严格、程序设计自由度大。一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误,而C语言允许程序编写者有较大的自由度。(7)C语言允许直接访问物理地址,可以直接对硬件进行操作,属于高级语言。能够像汇编语言一样对位、字节和地址进行操作,而这三者是C语言最基本的工作单元,因此既具有高级语言的功能,又具有低级语言的许多功能,可以用来编写系统软件、应用软件。(8)C语言程序生成代码质量高,程序执行效率高。(9)C语言适用范围大,可移植性好。版本:MicrosoftC、TurboC、C#、C++、VisualC++等。C是C++的基础,它们是兼容的。我们把由高级语言编写的程序称为“源程序”,把由二进制代码表示的程序称为“目标程序”。为了把源程序转换成机器能接受的目标程序,软件工作者编制了一系列软件,通过这些软件可以把用户按规定语法写出的语句一一翻译成二进制的机器指令。这种具有翻译功能的软件称为“编译程序”。由C语言构成的指令序列称为C源程序,C源程序经过C编译程序编译之后生成一个后缀为.OBJ的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件,把此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。C程序的生成过程:编辑→编译→连接→运行。源程序*.C编译目标程序*.OBJ连接可执行程序*.EXEC编译程序Link程序历年真题精解1.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是(1103-11)。A)C语言程序仅可以编译执行B)C语言程序仅可以解释执行C)C语言程序既可以编译执行又可以解释执行D)以上说法都不对答案:A解析:C程序是先编译后执行的。2.以下叙述中错误的是(1103-12)。A)C语言的可执行程序是由一系列机器指令构成的B)用C语言编写的源程序不能直接在计算机上运行C)通过编译得到的二进制目标程序需要连接才可以运行D)在没有安装C语言集成开发环境的机器上不能运行C源程序生产的.exe文件答案:D解析:.exe文件是可执行文件,是不需要TC2.0或者是VC++6.0开发环境的。3.计算机能直接执行的程序是(0809-12)。A)源程序B)目标程序C)汇编程序D)可执行程序答案:D解析:计算机不能直接执行源程序、目标程序和汇编程序,必须通过编译器将C语言程序“翻译”为可执行程序后,才可以被计算机执行。4.C源程序中不能表示的数制是(0809-16)。A)二进制B)八进制C)十进制D)十六进制答案:A解析:机器语言是直接可以表示二进制的,但高级语言一般不能表示二进制。5.C语言源程序名的后缀是(0709-11)。A).exeB).CC).objD).cp答案:B解析:C程序一般由多个函数组成而这些函数可以保存在一个或多个源程序中。6.下列叙述中错误的是(0704-12)。A)计算机不能直接执行用C语言编写的源程序B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D)后缀为.obj和.exe的二进制文件都可以直接运行答案:D解析:.obj文件是目标文件,是不可以直接运行的,它必须和库函数连接成可执行文件(.exe)后方可运行。7.下列叙述中错误的是(0604-44)。A)C语言源程序经编译后生成后缀为.obj的目标程序B)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中D)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令答案:D解析:非执行语句最终是不会被转换成二进制的机器指令。考点02:程序设计1.确定数据结构。2.确定算法。3.编码(编程)。4.在计算机上调试程序。5.整理并写出文档资料。历年真题精解1.针对简单程序设计,以下叙述的实施步骤顺序正确的是(1203-11)。A)确定算法和数据结构、编码、调试、整理文档B)编码、确定算法和数据结构、调试、整理文档C)整理文档、确定算法和数据结构、编码、调试D)确定算法和数据结构、调试、编码、整理文档答案:A解析:先确定所用数据结构,再确定所用算法,然后编写程序代码并上机调试,最后整理并写出文档资料。2.以下关于简单程序设计的步骤和顺序的说法中正确的是(1009-12)。A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构答案:B解析:先确定所用数据结构,再确定所用算法,然后编写程序代码并上机调试,最后整理并写出文档资料。3.以下叙述中正确的是(0909-11)。A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整答案:D解析:先确定所用数据结构,再确定所用算法,然后编写程序代码并上机调试,最后整理并写出文档资料。1.概念:算法是指为解决某个特定问题而采取的确定且有限的步骤。程序=数据结构+算法考点03:算法§1.2算法2.简单算法示例例1-1求1+2+3+……+100=?S1:s=0S2:i=1S3:s=s+iS4:i=i+1S5:如果i不大于100,则重复执行步骤3,否则算法结束。#includestdio.hmain(){inti,s=0;for(i=1;i=100;i++)s=s+i;printf(%d\n,s);}运行结果为:50503.特点:有穷性、确定性、可行性(有效性)、有零个或多个输入、有一个或多个输出。4.表示方法(1)流程图:开始或终止框、输入输出框、判断框、处理框、流程线、连接点、注释框。(2)伪代码(3)计算机语言-C语言历年真题精解1.以下关于算法的叙述中错误的是(1203-13)。A)算法可以用伪代码、流程图等多种形式来描述B)一个正确的算法必须有输入C)一个正确的算法必须有输出D)用流程图描述的算法可以用任何一种计算机高级语言编写成程序代码答案:B解析:一个算法可以没有输入,因为如果变量的值全部直接指定或通过选择结构、循环结构来间接得到,就不需要调用输入函数。2.在算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的(0704-11)。A)正当性B)可行性C)确定性D)有穷性答案:C解析:算法的确定性是指算法中的每一步骤都必须有明确的定义,而不允许有模棱两可的解释,更不允许有多义性。3.下列叙述中错误的是(0604-45)。A)算法正确的程序最终一定会结束B)算法正确的程序可以有零个输出C)算法正确的程序可以有零个输入D)算法正确的程序对于相同的输入一定有相同的结果答案:B解析:算法有五个特征:有穷性、确定性、可行性、输入和输出。一个算法应该有零个或多个输入、一个或多个输出。§1.3结构化程序设计和模块化结构1.顺序结构顺序结构是由一组顺序执行的程序块所组成的。考点04:结构化程序2.选择结构选择结构是根据分支条件的取值来决定程序执行的走向。3.循环结构循环结构是一种对某一处理块反复执行指定次数的结构。条件语句真假1.仅由顺序、选择(分支)和重复(循环)结构构成的程序是【】程序(1009-4)。答案:结构化历年真题精解考点05:模块化结构C语言是一种结构化程序设计语言,它提供了三种基本结构的语句;提供了定义“函数”的功能,在C语言中没有子程序的概念,它提供的函数可以完成子程序的所有功能;C语言允许对函数单独进行编译,从而可以实现模块化。软件编制人员在进行程序设计的时候,首先应当集中考虑主程序中的算法,写出主程序再动手逐步完成子程序的调用。对于这些子程序也可用调试主程序的同样方法逐步完成其下一层子程序的调用。这就是自顶向下、逐步细化、模块化的程序设计方法。历年真题精解1.C语言主要是借助以下哪个功能来实现程序模块化(1209-14)。A)定义函数B)定义常量和外部变量C)三种基本结构语句D)丰富的数据类型答案:A解析:C语言允许对函数单独进行编译,从而可以实现模块化。2.以下选项中关于程序模块化的叙述错误的是(1203-11)。A)把程序分成若干相对独立的模块,可便于编码和调试B)把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块C)可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序D)可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序答案:C解析:先构建主函数,再构建子函数,所以只能是自顶向下。3.以下关于结构化程序设计的叙述中正确的是(1009-11)。A)一个结构化程序必须同时由顺序、分支、循环三种结构组成B)结构化程序使用goto语句会很便捷C)在C语言中,程序的模块化是利用函数实现的D)由三种基本结构构成的程序只能解决小规模的问题答案:B解析:A项中,三种结构均可单独出现;B项中goto语句限制使用,作用不大;D项中,程序可以解决各种问题。4.下列叙述中错误的是(0704-14)。A)C语言是一种结构化程序设计语言B)结构化程序由顺序、分支、循环3种基本结构组成C)使用3种基本结构构成的程序只能解决简单问题D)结构化程序设计提倡模块化的设计方法答案:C解析:C语言是一种结构化设计语言。结构化程序设计是以模块化设计为中心的,有三种基本模块结构:顺序、选择和循环结构。各模块相互独立,因而可将原来较为复杂的问题化简为一系列简单模块,并充分利用现有模块搭建新系统,提高程序的重用性和可维护性。