《谭浩强C程序设计第三.pptx》由会员分享,可在线阅读,更多相关《谭浩强C程序设计第三.pptx(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、会计学1谭浩强谭浩强 C程序设计程序设计(chn x sh j)第三第三第一页,共25页。n n第7章数组n n第8章函数n n第9章预处理命令n n第10章指针n n第11章结构(jigu)体与共用体n n第12章位运算n n第13章文件n n第14章常见错误和程序调试第2页/共25页第二页,共25页。第第1章章 C语言概述语言概述(i sh)n n1.1 C1.1 C语言出现的历史背景语言出现的历史背景n n1.2 C1.2 C语言的特点语言的特点n n1.3 1.3 简单的简单的C C程序介绍程序介绍n n1.4 1.4 运行运行(ynxng)C(ynxng)C程序的步骤程序的步骤与方法
2、与方法第3页/共25页第三页,共25页。1.1 C语言出现语言出现(chxin)的历史背景的历史背景n n在在C C语言诞生以前,系统软件主要语言诞生以前,系统软件主要(zh(zh yo)yo)是用汇编语言是用汇编语言编写的。由于汇编语言程序依赖于计算机硬件,其可读性编写的。由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;一般的高级语言又难以实现对计算机和可移植性都很差;一般的高级语言又难以实现对计算机硬件的直接操作,于是人们希望有一种兼有汇编语言和一硬件的直接操作,于是人们希望有一种兼有汇编语言和一般高级语言特性的新语言。般高级语言特性的新语言。C C语言在这种情况下应运而生。语
3、言在这种情况下应运而生。n nC C语言是贝尔实验室于语言是贝尔实验室于7070年代初研制出来的,后来又被多年代初研制出来的,后来又被多次改进,并出现了多种版本。次改进,并出现了多种版本。8080年代初,美国国家标准化年代初,美国国家标准化协会(协会(ANSIANSI),根据),根据C C语言问世以来各种版本对语言问世以来各种版本对C C语言的语言的发展和扩充,制定了发展和扩充,制定了ANSI CANSI C标准。目前流行的标准。目前流行的C C语言编译语言编译系统大多是以系统大多是以ANSI CANSI C为基础进行开发的。为基础进行开发的。第4页/共25页第四页,共25页。C C语言是国际
4、上广泛流行的计算机高级语言。它适合作为语言是国际上广泛流行的计算机高级语言。它适合作为系统描述语言,既可以用来编写系统软件,也可以来编写应系统描述语言,既可以用来编写系统软件,也可以来编写应用软件。用软件。C C语言的前身是语言的前身是B B语言语言1960 ALGOL60 1960 ALGOL60 离硬件远,不宜编写系统程序离硬件远,不宜编写系统程序1963 CPL 1963 CPL 离硬件近,但规模较大,难以实现离硬件近,但规模较大,难以实现1967 BCPL 1967 BCPL 对对CPLCPL做了简化做了简化1970 1970 贝尔实验室以贝尔实验室以BCPLBCPL语言为基础,进一步
5、简化语言为基础,进一步简化,设计设计 出出了很简单的而且很接近硬件的了很简单的而且很接近硬件的B B语言,并用语言,并用B B语言编写了一个语言编写了一个(y(y )UNIX)UNIX操作系统,在操作系统,在PDPTPDPT上实现,此时的上实现,此时的B B语言过于简语言过于简单,功能有限单,功能有限19721973 19721973 年间,贝尔实验室的年间,贝尔实验室的D.M.RitchieD.M.Ritchie在在B B语言的基础上设语言的基础上设计出了计出了C C语言(语言(BCPL)BCPL)第5页/共25页第五页,共25页。C C语言既保持了语言既保持了BCPLBCPL和和B B语言
6、的优点(精炼,接近硬件)又语言的优点(精炼,接近硬件)又克服了它们的缺电(过于简单,数据无类型等)。克服了它们的缺电(过于简单,数据无类型等)。最近的最近的C C语言只是为描述和实现语言只是为描述和实现UNIXUNIX操作系统提供一种工操作系统提供一种工作语言而设计的,作语言而设计的,UNIXUNIX原用汇编写的,后原用汇编写的,后90%90%用用C C编写。编写。后来,后来,C C语言多次作了改进,但主要还是在贝尔实验室内部语言多次作了改进,但主要还是在贝尔实验室内部使用。直到使用。直到19751975年年UNIXUNIX第第6 6版发布后,版发布后,C C语言的突出优点才语言的突出优点才引
7、起人们的普遍注意。引起人们的普遍注意。1997 1997年出现了不依赖于具体机器的年出现了不依赖于具体机器的C C语言便以文本可移植语言便以文本可移植(yzh)C(yzh)C语言编译程序,使语言编译程序,使C C语言移植语言移植(yzh)(yzh)到其他机器时到其他机器时所需做的工作大大简化了,这也推动了所需做的工作大大简化了,这也推动了UNIXUNIX操作系统迅速操作系统迅速的在各种机器上实现。的在各种机器上实现。随着随着UNIXUNIX的日益广泛使用,的日益广泛使用,C C语言也迅速得到推广。语言也迅速得到推广。C C语语言和言和UNIXUNIX可以说是一对孪生兄弟,在发展过程中相辅相成。
8、可以说是一对孪生兄弟,在发展过程中相辅相成。第6页/共25页第六页,共25页。1978 1978年以后,年以后,C C语言先后移植到大、中、小型计算机上,已独语言先后移植到大、中、小型计算机上,已独立于立于UNIXUNIX和和PDPPDP了。了。C C语言便很快风靡全世界,成为世界上语言便很快风靡全世界,成为世界上应用最广泛的几种计算机语言之一。应用最广泛的几种计算机语言之一。1983 1983年,美国国家标准化协会(年,美国国家标准化协会(ANSIANSI)根据)根据C C语言问世以来语言问世以来各种版本对各种版本对C C语言的发展和补充,制定了新的标准,成为语言的发展和补充,制定了新的标准
9、,成为ANSI ANSI C C。ANSI CANSI C比后来的标准比后来的标准C C有了很大的发展。有了很大的发展。1987 1987年,年,ANSIANSI又公布了新标准又公布了新标准-87 ANSI C-87 ANSI C 1990 1990年,国际标准组织年,国际标准组织ISOISO接受接受87 ANSIC87 ANSIC为为ISOISO的标准。的标准。1994 1994年,年,ISOISO修订了修订了C C语言标准。语言标准。目前流行的目前流行的C C语言编译系统大多是以语言编译系统大多是以ANSI CANSI C为基础进行开发为基础进行开发的,但不同版本的的,但不同版本的C C编
10、译系统所实现的语言功能编译系统所实现的语言功能(gngnng)(gngnng)及及语法规则又略有差别,本书基本上已语法规则又略有差别,本书基本上已ANSI CANSI C为基础。为基础。第7页/共25页第七页,共25页。1.2 C语言的特点语言的特点(tdin)一种语言之所以存在和发展,并具有较强的生命力,总之有起不同于(或优于)其他语言的特点.C语言的主要特点如下:语言简洁、紧凑,使用方便、灵活。C语言一共只有32个关键字,9种控制语句,程序书写形式自由,主要用小写字母表示,压缩了一切(yqi)不必要的成分。比其他许多高级语言简洁,源程序短,因此输入工程时工作量少.第8页/共25页第八页,共
11、25页。n n运算符丰富。C的运算符包含的范围(fnwi)很广泛,共有34种运算符。C把括号、赋值、强制类型转换等都作为运算符处理,从而使C的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其他高级语言中难以实现的运算.n n数据结构丰富,具有现代化语言的各种数据结构。C的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构(如链表、树、栈等)的运算。尤其是指针,只C存在于C语言和Pascal语言中。第9页/共25页第九页,共25页。具有结构化的控制语句(如ifelse语句、while语句、dowhile语句、switch语句
12、、for语句)。用函数作为程序的模块单位,便于实现程序的模块化。C是良好的结构化语言,符合现代编程风格的要求。生成目标(mbio)代码质量高,程序执行效率高。C语言一般只比汇编程序生成的目标(mbio)代码效率低10%-20%。第10页/共25页第十页,共25页。n n语法限制不太严格,程序设计自由度大。一般的高级语言语言语法检查比较严格,能检查出几乎所有的语法错误,而C语言允许程序员有较大的自由度,因此放宽了语法检查。程序员应当仔细检查程序,保证其正确,而不要过分依赖C语言编译程序去查错。n n “限制”与“灵活”是一对矛盾。一个不熟悉的人员,编一个正确的C语言程序可能比编一个其他高级语言程
13、序难一些。也就是对C语言的人,要求对程序设计更熟练一些。例如(lr)对数组下标越界不做检查,由程序编写者自己保证程序的正确。对变量的类型使用比较灵活,例如(lr)整型数据与字符型数据可以通用。第11页/共25页第十一页,共25页。n nC语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此C语言既有高级语言的功能,又具有低级语言的许多功能,可用来编写(binxi)系统软件。C语言的这种双重性,有人把它成为“高级语言中的低级语言”或“中级语言”。n n用C语言写的程序可移植性好(与汇编语言比)。基本上不作修改就能用于各种型号的计算机和各种操作
14、系统。第12页/共25页第十二页,共25页。从应用方面来看:语言较难学。初学者:BASIC FORTRAN科学计算:FORTRAN数据处理:COBOL(银行系统)系统软件:语言有些大型软件:C语言 教学角度:PASCAL(单一结构化语言)但大多数高校(goxio)已用C语言取代了PASCAL语言。第13页/共25页第十三页,共25页。目前C语言成了学习(xux)和使用人数最多的一种计算机语言。熟练掌握C语言成为计算机开发人员的一项基本功。近年来,面向对象的C+语言在我国逐渐得到推广。但是不应认为:C过时了,应学C+,不学C C+是为解决编写大型软件的问题而产生的,学起来比C语言困难得多。将来并
15、不是所有的人都去编写大型软件。因此,在发达国家的大学中,C语言仍是一门重要的课程,是大学生的一种基本的选择。掌握了C,日后再学C+是不会太困难的。第14页/共25页第十四页,共25页。1.3 简单简单(jindn)的的C程序介绍程序介绍 下面介绍几个简单的C语言程序,然后(rnhu)从中分析C语言程序的特点。【例 1.1】输出一行信息。本程序的作用是输出以下一行信息:This is a C program.#include void main()printf(This is a C program.n);第15页/共25页第十五页,共25页。【例 1.2】求两数之和。本程序的作用是求两个整数a
16、和b之和sum。程序运行时输出(shch)以下信息:sum is 579#include void main()/*求两数之和*/int a,b,sum;/*这是声明部分,定义变量(binling)a,b,sum为整型*/a=123;b=456;/*以下3行为C语句*/sum=a+b;printf(sum is%dn,sum);第16页/共25页第十六页,共25页。【例1.3】求2个数中较大(jio d)者。#include void main()/*主函数*/int max(int x,int y);/*对被调用函数max的声明*/int a,b,c;/*声明部分,定义变量*/scanf(%
17、d,%d,&a,&b);/*输入变量a和b的值*/c=max(a,b);/*调用max函数,将得到的值赋给c*/printf(max=%dn,c);/*输出c的值*/int max(int x,int y)/*定义max函数,函数值为整型*/int z;/*max函数中的声明部分*/if(xy)z=x;else z=y;return(z);/*将z的值返回,通过(tnggu)max带回调用函数的位置*/第17页/共25页第十七页,共25页。例例1.31.3中程序包括两个函数:主函数中程序包括两个函数:主函数mainmain和被调用的函数和被调用的函数maxmax。maxmax函数的作用是将函数
18、的作用是将x x和和y y中较大者的值赋给变量中较大者的值赋给变量z z。returnreturn语句语句将将z z的值返回给主调函数的值返回给主调函数mainmain。返回值是通过。返回值是通过(tnggu)(tnggu)函函数名数名maxmax带回到带回到mainmain函数的调用处。函数的调用处。程序第程序第4 4行是对被调用函数行是对被调用函数maxmax的声明。的声明。mainmain函数中的函数中的scanfscanf是是“输入函数输入函数”的名字。程序中的名字。程序中scanfscanf函数函数的作用是输入的作用是输入a a和和b b的值。的值。&a&a和和&b&b中的中的“&”
19、“&”的含义是的含义是“取取地址地址”,此,此scanfscanf函数的作用是将两个数值分别输入到变函数的作用是将两个数值分别输入到变量量a a和和b b的地址所标志的单元中,也就是输入给变量的地址所标志的单元中,也就是输入给变量a a和和b b。程序第程序第7 7行为调用行为调用maxmax函数,在调用时将实际参数函数,在调用时将实际参数a a和和b b的值分的值分别传送给别传送给maxmax函数中的形式参数函数中的形式参数x x和和y y。经过执行。经过执行maxmax函数函数得到一个返回值得到一个返回值(即即maxmax函数中变量函数中变量z z的值的值),把这个值赋,把这个值赋给变量给
20、变量c c。然后输出。然后输出c c的值。的值。printfprintf函数中双引号内的函数中双引号内的“max=%dn”“max=%dn”,在输出时,将,在输出时,将“max=”“max=”原样输出,原样输出,“%d”“%d”将由将由c c的值取代之,的值取代之,“n”“n”执行换行。执行换行。第18页/共25页第十八页,共25页。通过以上几个例子,可以通过以上几个例子,可以(ky(ky)看到:看到:C C程序是由函数构成的。一个程序是由函数构成的。一个C C源程序至少且仅包含一个源程序至少且仅包含一个mainmain函数,也可以函数,也可以(ky(ky)包含一个包含一个mainmain函数
21、和若干个其他函函数和若干个其他函数。因此,函数是数。因此,函数是C C程序的基本单位。程序的基本单位。被调用的函数可以被调用的函数可以(ky(ky)使系统提供的库函数,也可以使系统提供的库函数,也可以(ky(ky)是用户根据需要自己定义的函数。编写是用户根据需要自己定义的函数。编写C C程序就是程序就是编写一个个函数,编写一个个函数,ANSICANSIC提供一百多个库函数,提供一百多个库函数,TubocTuboc提提供三百多个库函数。供三百多个库函数。一个函数由两部分组成一个函数由两部分组成:1 1)函数的首部,即函数的第一行。包括函数名、函数类型、)函数的首部,即函数的第一行。包括函数名、函
22、数类型、函数属性、函数参数函数属性、函数参数(形参形参)名、参数类型。名、参数类型。例如,例例如,例1.31.3中的中的maxmax函数的首部为函数的首部为int max (int x,int max (int x,int y)int y)函数类型函数类型 函数名函数名 函数参数类型函数参数类型 函数参数名函数参数名 函数参数类型函数参数类型 函数参数名函数参数名 2 2)函数体,即函数首部下面的大括弧)函数体,即函数首部下面的大括弧内的部分。如内的部分。如果一个函数内有多个大括弧,则最外层的一对果一个函数内有多个大括弧,则最外层的一对 为函数为函数体的范围。体的范围。函数体一般包括:函数体一
23、般包括:声明部分;执行部分。声明部分;执行部分。第19页/共25页第十九页,共25页。n n一个一个C C程序总是从程序总是从mainmain函数开始执行的,而不论函数开始执行的,而不论mainmain函数在函数在整个程序中的位置整个程序中的位置(wi zhi)(wi zhi)如何如何(main(main函数可以放在程序最函数可以放在程序最前头,也可以放在程序最后,或在一些函数之前,在另一前头,也可以放在程序最后,或在一些函数之前,在另一些函数之后些函数之后)。n nC C程序书写格式自由,一行内可以写几个语句,程序书写格式自由,一行内可以写几个语句,一个语句可一个语句可以分写在多行上。没有行
24、号。以分写在多行上。没有行号。n n每个语句和数据定义的最后必须有一个分号。分号是每个语句和数据定义的最后必须有一个分号。分号是C C语句语句的必要组成部分。的必要组成部分。n nC C语言本身没有输入输出语句。输入和输出的操作是由库函语言本身没有输入输出语句。输入和输出的操作是由库函数数scanfscanf和和printfprintf等函数来完成的。等函数来完成的。n n可以用可以用/*/*/对对C C程序中的任何部分作注释。一个好的、程序中的任何部分作注释。一个好的、有使用价值的源程序都应当加上必要的注释,以增加程序有使用价值的源程序都应当加上必要的注释,以增加程序的可读性。的可读性。第2
25、0页/共25页第二十页,共25页。1.4 运行运行(ynxng)C程序的步骤与方法程序的步骤与方法n n在编好一个在编好一个C C源程序后,源程序后,如何上机运行呢如何上机运行呢?在纸上在纸上写好一个程序后,要经过写好一个程序后,要经过以下以下(y(y xi)xi)几个步骤:几个步骤:上机输入与编辑源程序上机输入与编辑源程序对源程序进行编译对源程序进行编译与库与库函数连接函数连接运行目标程序运行目标程序这样几个步骤。以上过程这样几个步骤。以上过程如图如图1.11.1所示。其中实线所示。其中实线表示操作流程,虚线表示表示操作流程,虚线表示文件的输入输出。文件的输入输出。图1.1第21页/共25页
26、第二十一页,共25页。一、运行一、运行C C程序的步骤:程序的步骤:上机输入程序对源程序变异与库函数链接运行目标程序。上机输入程序对源程序变异与库函数链接运行目标程序。源程序文件为源程序文件为.C.C,编译后得到,编译后得到(d do)(d do)目标文件目标文件.obj,.obj,与库函数连与库函数连接后,得到接后,得到(d do)(d do)可执行的目标程序为可执行的目标程序为.exe.exe 最后运行最后运行.exe.exe。二、上机运行程序的方法:二、上机运行程序的方法:机房已经安装机房已经安装Turbo CTurbo C环境以下按此版本讲授环境以下按此版本讲授V C+V C+等有导论
27、讲。等有导论讲。、进入、进入Turbo CTurbo C环境环境()点()点WindowsWindows桌面左下角的桌面左下角的“开始开始”按钮按钮()鼠标移到()鼠标移到“程序程序”按钮,在右边菜单中找按钮,在右边菜单中找c:c:命令提示命令提示符,单击或者移到运行单击,在窗口中输入符,单击或者移到运行单击,在窗口中输入cmdcmd,按确定。按确定。()此时在()此时在DOSDOS状态下。状态下。输入输入DOSDOS命令命令CD TC CD TC 按回车按回车TCTC按回车按回车进入进入TCTC环境按回车环境按回车第22页/共25页第二十二页,共25页。、编辑源文件、编辑源文件()新建一个源
28、程序()新建一个源程序 ()修改()修改(xig(xig i)i)已有源程序已有源程序()编译()编译 回车回车 回车回车 filenewopen.G:修改(xigi)Compile 第23页/共25页第二十三页,共25页。(4 4)连接)连接 回车回车 回车回车 compile link compile link(5 5)执行)执行 回车回车 也可以省掉(也可以省掉(3 3)()(4 4),直接执行),直接执行(6 6)推出)推出TCTC环境环境 file +Quit file +Quit 回到回到DOSDOS 输入输入(shr)exit+(shr)exit+回车回车 回到回到windowswindows 本章习题:本章习题:1.5 1.6 1.5 1.6 熟悉上机过程熟悉上机过程compileLink Run File+回车(hu ch)QUIT第24页/共25页第二十四页,共25页。感谢您的观看感谢您的观看(gunkn)!第25页/共25页第二十五页,共25页。