1、C 程序设计 (第三版),新世纪计算机基础教育丛书 主编 谭浩强,我的联系方式,王华 电话:22165323981192(家) E-mail: QQ: 345521553,上机安排,总 目 录,第1章 C语言概述 第2章 程序的灵魂算法 第3章 数据类型、运算符与表达式 第4章 最简单的C程序设计顺序程序设计 第5章 选择结构程序设计 第6章 循环控制 第7章 数组 第8章 函数,第9章 预处理命令 第10章 指针 第11章 结构体与共用体 第12章 位运算 第13章 文件 第14章 常见错误和程序调试,第1章 C语言概述,1.1 C语言出现的历史背景 1.2 C语言的特点 1.3 简单的C
2、程序介绍 1.4 C程序的上机步骤 1.5 习题,1.1 C语言出现的历史背景,C语言是国际上广泛流行的计算机高级语言,既可用来写系统软件,也可用来写应用软件。 C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL 60。三个阶段: K&R C(1973)K&R:1978,ANSI C(1983) ANSI C(1987)C 99 (1999),早期C、UNIX的发展,BCPL,B,New B,早期C,1965-1967,1969,1971,1972-3,UNIX (汇编语言PDP-7),UNIX (汇编语言PDP-11),UNIX (C),1.2 C语言的特点,一种语言之所以能存
3、在和发展,并具有生命力,总是有其不同于(或优于)其他语言的特点。C语言的主要特点如下。(1) 语言简洁、紧凑,使用方便、灵活。C语言一共只有32个关键字,9种控制语句,程序书写形式自由,主要用小写字母表示,压缩了一切不必要的成分。(2) 运算符丰富。C的运算符包含的范围很广泛,共有34种运算符。C把括号、赋值、强制类型转换等都作为运算符处理,从而使C的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其他高级语言中难以实现的运算。,(3) 数据结构丰富,具有现代化语言的各种数据结构。C的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂
4、的数据结构(如链表、树、栈等)的运算。尤其是指针类型数据,使用起来比PASCAL更为灵活、多样。(4) 具有结构化的控制语句(如ifelse语句、while语句、dowhile语句、switch语句、for语句、goto、continue、break、return)。用函数作为程序的模块单位,便于实现程序的模块化。C是良好的结构化语言, 符合现代编程风格的要求。,(5) 语法限制不太严格,程序设计自由度大。“限制”与“灵活”是一对矛盾。限制严格,就失去灵活性;而强调灵活,就必然放松限制。一个不熟练的编程人员,编一个正确的C程序可能会比编一个其他高级语言程序难一些。也就是说,对用C语言的人,要求
5、对程序设计更熟练一些。价值2000万的bugx=2; C语言能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此C既具有高级语言的功能,又具有低级语言的许多功能,可用来写系统软件。C语言的这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言。 生成目标代码质量高,效率高(嵌入式系统),有人把C称为“高级语言中的低级语言” 或“中级语言”,意为兼有高级和低级语言的特点。按此观点可将各语言分类如下: 高级: BASIC,FORTRAN,COBOL,PASCAL,Ada,Modula-2; 中级: C,FORTH,宏汇编; 低级: 汇编语言 一般仍习惯将C语言称
6、为高级语言,因为C程序也要通过编译、连接才能得到可执行的目标程序,这是和其他高级语言相同的。 C的以上特点,读者现在也许还不能深刻理解,待学完C以后再回顾一下,就会有比较深的体会。,从掌握语言的难易程度来看,C语言比其他语言难一些。BASIC是初学者入门的较好的语言,FORTRAN也比较好掌握。对科学计算多用FORTRAN或PL/;对商业和管理等数据处理领域,用COBOL为宜。C语言虽然也可用于科学计算和管理领域,但并不理想,C的特长不在这里。对操作系统和系统实用程序以及需要对硬件进行操作的场合,用C语言明显地优越于其他高级语言,有的大型应用软件也用C语言编写。 国家计算机等级考试(NCRE)
7、:二级(C、C+、Java、VB、Delphi、VF、Access)三级PC技术信息管理技术数据库技术网络技术,1.3 简单的C程序介绍,下面先介绍几个简单的C程序,然后从中分析C程序的特性。 例 1.1#include void main ( )printf (“This is a C program.n“); 本程序的作用是输出以下一行信息:This is a c program. 其中 main 表示“主函数”。每一个C程序都必须有一个 main 函数。函数体由大括弧括起来。本例中主函数内只有一个输出语句,printf是C语言中的输出函数(详见第4章)。双引号(双括号)内的字符串原样输出
8、。“n”是换行符,即在输出“This is a c program.”后回车换行。语句最后有一分号。,例 1.2 #include main ( )/*求两数之和*/ int a,b,sum; /*这是定义变量*/a=123; b=456; /* 以下3行为C语句 */sum=a+b;printf (“sum is %d/n“, sum); 本程序的作用是求两个整数a和b之和sum。sum is 579,例1.3 #include main ( )/ 主函数 int a, b, c; /声明部分,定义变量/scanf (“%d,%d“, /*将z的值返回,通过max带回调用处*/ ,通过以上几
9、个例子,可以看到: (1) C程序是由函数构成的。一个C源程序至少包含一个main函数,也可以包含一个main函数和若干个其他函数。因此,函数是C程序的基本单位。被调用的函数可以是系统提供的库函数(例如printf和scanf函数),也可以是用户根据需要自己编制设计的函数,(2) 一个函数由两部分组成: 函数的首部,即函数的第一行。包括函数名、函数类型、函数属性、函数参数(形参)名、参数类型。 例如,例1.3中的max函数的首部为 int max (int x , int y ) 函数类型 函数名 函数参数类型 函数参数名 函数参数类型 函数参数名,一个函数名后面必须跟一对圆括弧, 函数参数可
10、以没有,如main( )。 函数体,即函数首部下面的大括弧内的部分。如果一个函数内有多个大括弧,则最外层的一对 为函数体的范围。 函数体一般包括: 声明部分:在这部分中定义所用到的变量,如例1.3中main函数中的“int a,b,c;”。 在第8章中还将会看到,在声明部分中要对所调用的函数进行声明。 执行部分:由若干个语句组成。,当然,在某些情况下也可以没有声明部分(例如,例1.1)。甚至可以既无声明部分,也无执行部分。如: void a ( ) 它是一个空函数,什么也不干,但这是合法的。 (3) 一个C程序总是从main函数开始执行的。 (4) C程序书写格式自由,一行内可以写几个语句,
11、一个语句可以分写在多行上。,(5) 每个语句和数据定义的最后必须有一个分号。分号是C语句的必要组成部分。例如:c=a+b;分号不可少。即使是程序中最后一个语句也应包含分号。 (6) C语言本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成的。 (7) 可以用/*/或者/(表示从/开始到本行末尾)对C程序中的任何部分作注释。,1.4 C程序的上机步骤,程序( program ):就是一组计算机能识别和执行的指令。每一条指令使计算机执行特定的操作。程序可以用高级语言(例如QBASIC,FORTRAN,PASCAL,C等)编写。源程序(source program)
12、 :用高级语言编写的程序称为“源程序” 。编译软件(compile):为了使计算机能执行高级语言源程序,必须先用一种称为“编译程序”的软件,把源程序翻译成二进制形式的“目标程序”, 然后将该目标程序与系统的函数库和其他目标程序连接(link)起来,形成可执行的目标程序。,图1.1,下面分别就三种不同的环境下运行C程序作一简单介绍。 1. 用Turbo C 运行C程序的步骤 Turbo C是在微机上广泛使用的编译程序。它具有方便、直观、易用的界面和丰富的库函数。它向用户提供一个集成环境,把程序的编辑、编译、连接和运行等操作全部集中在一个界面上进行,使用十分方便。 为了能使用Turbo C,必须先
13、将Turbo C编译程序装入磁盘的某一目录下,例如放在C盘根目录下一级TC子目录下。,图1.2,(1) 调用 Turbo C程序。如果用户的当前目录是Turbo C编译程序所在的子目录(例如TC子目录),只需从键盘键入“tc” 命令即可:,C:TCtc 屏幕上出现Turbo C集成环境,见图1.2所示。从图1.2可以看到在集成环境的上部,有一行“主菜单”, 其中包括下面8个菜单项: File Edit Run Compile Project Option Debug break/watch 用户可以通过以上菜单项来选择使用Turbo C集成环境所提供的Turbo C的各项主要功能。以上8个菜单
14、项分别代表:文件操作、编辑、运行、编译、项目文件、选项、调试、中断/观察等功能。 用键盘上的“”和“”键可以选择菜单条中所需要的菜单项,被选中的项以“反相”图1.3形式显示,(例如主菜单中的各项原来以白底黑字显示,被选中时改为以黑底白字显示)。 此时若按回车键,就会出现一个下拉菜单。例如在选中“File”菜单并按回车键后,屏幕上“File”下面出现下拉菜单,见图1.3所示。它是一个子菜单,提供多项选择。可以用“”键选择所需要的项。例如选择“New”处, 并按回车键,表示要建立一个新的C源程序。,图1.3,如果选择“Load” , 并按回车键, 表示要调入一个已有的源文件,此时屏幕上出现一个对话
15、框(见图1.4)。要求你输入该文件的名字。用户可输入该文件名,例如:tc1.c,如果已存在此文件,则系统会将此文件调入内存并显示在屏幕上。此时自动转为编辑(Edit)状态。 如果原来不存在此文件名,则系统会建立一个以指定的名字命名的新文件。,图1.4,(2) 编辑源文件。在编辑(Edit) 状态下可以根据需要输入或修改源程序。 (3) 编译源程序。选择“Compile”菜单并在其下拉菜单中选择“Compile to OBJ” ,则进行编译,得到一个后缀为.obj的目标程序(为方便起见,在一般书刊中,以上菜单的选择以“Compile/Compile to OBJ”表示)。然后再选菜单“Compi
16、le/Link EXE file”, 进行连接操作,可得到一个后缀为.exe的可执行文件。也可以将编译和连接合为一个步骤进行。选菜单“Compile/Make EXE file” 或按“F9”键,即可一次完成编译和连接。在屏幕上会显示编译或连接时有无错误和有几个错误,见图1.5所示。此时按任何一个键, 图1.5所显示的“编译信息框”会,图1.5,消失,屏幕上会恢复显示源程序,光标停留在出错之处。在屏幕的下半部分显示出有错误的行和错误的原因。根据此信息修改源程序。修改完毕认为无错后,再按“F9”,再次进行编译和连接,如此反复进行到不显示出错为止。,(4) 执行程序。按“F10”键, 在窗口上部的
17、主菜单中某一项处出现“反相”显示(黑色亮块)。 File Edit Run Compile Project Option Debug Break/watch 用“”键将亮块移到“Run”,按回车键, 在其下拉菜单中选择“Run”项,或直接按Ctrl + F9键, 系统就会执行已编译好的目标文件。此时, TC集成环境窗口消失,屏幕上显示出程序运行时输出的结果。如果程序需要输入数据(如例1.3),则应在此时,从键盘输入所需数据,然后程序会接着执行,输出结果。 如果发现运行结果不对,要重新修改源程序,可以再按“F10”键,并用“”使亮块移到“Edit”处,,2VC上机步骤,VC6全称Visual C
18、+ 6.0 本质上是微软32位Windows应用开发平台,C语言基础课仅仅使用它编写控制台应用程序。 按照VC6的设计思路,编写一个软件需要生成若干文件,不仅仅是源代码。 1、工作空间(workspace):一个容器,用来包含生成软件所需要的所有原始内容。体现为一个文件夹,内含.dsw工作空间文件,以及所有其他相关文件。 2、工程(project):二级容器,用来包含生成一个最终产品文件(一般是.exe、.dll或.lib)所需要的所有原始内容。根据软件规模,一个工作空间可以包含一个或者多个工程,每个工程体现为一个.dsp工程文件,放在相应的工作空间文件夹内。 根据C语言基础课的教学需要,编写
19、的都是相对短小简单的小程序,因此一般情况下都是建立一个工作空间,包含唯一工程并且与工作空间同名,工程内包含唯一的源代码文件。具体步骤如下: 1、打开VC 2、“文件”菜单-新建(图1)-工程-Win32 Console Application-输入工程名称并选定位置-确定(图2)-完成(图3)-确定 3、“文件”菜单-新建(图1)-文件-C+ Source File-取名-确定(图4) 4、输入源代码-F7(Build)(图5)-若有错误则修改之(图5)/若无错误则Ctrl+F5(Run)运行之(图6),以下叙述正确的是 A)C程序中,main函数必须位于程序的最前面 B)C程序的每一行只能写一条语句 C)C语言本身没有输入输出语句 D)对C程序进行编译的过程中,可以发现注释中的拼写错误,上机作业: 1.5 请参照本章例题,编写一个C程序,输出以下信息: *Very good! *1.6 编写一个C程序,输入a、b、c 3个值,输出其中最大者。,