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