1、面面 向向 21 世世 纪纪高高 等等 学学 校校 系系 列列 教教 材材21西安电子科技大学出版社西安电子科技大学出版社xduph 新编C语言程序设计教程(第第 二二 版版)New C Language Programming Course周学毛周学毛 编著编著 第第1 1章章 C C语言基础语言基础 第第2 2章章 基本数据类型基本数据类型 第第3 3章章 表达式表达式 第第4 4章章 顺序结构程序设计顺序结构程序设计 第第5 5章章 选择结构程序设计选择结构程序设计 第第6 6章章 循环结构程序设计循环结构程序设计 第第7 7章章 函数函数 第第8 8章章 数组类型数组类型 第第9 9章
2、章 结构体类型与共用体类型结构体类型与共用体类型第第1010章章 指针类型指针类型 第第11 11章章 文件类型文件类型 第第1212章章 编译预处理和图形处理编译预处理和图形处理 第第1313章章 C C到到C+C+第第1414章章 C C语言程序设计实例语言程序设计实例目目 录录 第 1章 C 语 言 基 础 第第 1章章 C 语语 言言 基基 础础 1.1 C语言概述语言概述 1.2 基本语法成份基本语法成份 1.3 C语言程序的结构语言程序的结构 1.4 C语言语言程序的实现程序的实现习习 题题 一一 第 1章 C 语 言 基 础 1.1 C语言概述语言概述 1.1.1 C语言的产生与
3、发展语言的产生与发展 1.C语言的产生语言的产生 C语言于1972年1973年间,诞生于美国的贝尔实验室,由Denis.M.Ritchie创建。C语言的产生基于两个方面的需要。一是为满足UNIX操作系统开发的需要。UNIX操作系统是一个通用的、复杂的计算机管理系统。二是为拉近高级语言与硬件之间距离的需要。C语言集高级语言与汇编语言优点于一身。C语言面对实际应用的需要而产生,直至今日仍不改初衷。第 1章 C 语 言 基 础 2.C语言的发展语言的发展 1960年出现的ALGOL语言是一种面向问题的高级语言,远离硬件,不适于开发系统软件。1963年,英国剑桥大学推出CPL语言,CPL语言比ALGO
4、L语言更接近硬件一些,但规模较大,难以实现。1969年,剑桥大学的Martin Richards对CPL语言进行简化,推出BCPL语言。1970年,贝尔实验室的Ken Thompson为DEC公司的PDP-7计算机上运行的一种早期UNIX操作系统设计了一种类BCPL语言,称为B语言。B语言规模小,接近硬件,1971年在PDP-11计算机上实现。BCPL语言和B语言都是无类型的语言,过于简单,功能有限。第 1章 C 语 言 基 础 1972年1973年间,贝尔实验室的D.M.Ritchie在保留B语言优点的基础上,创建了C语言。1973年,UNIX操作系统被用C语言改写,称为UNIX第五版。最初
5、的C语言只是一种UNIX操作系统的工作语言,依附于UNIX系统,主要在贝尔实验室内部使用。UNIX以后的第六版、第七版、SYSTEM 和SYSTEM都是在第五版的基础上发展起来的。这期间C语言也被多次改进。1975年,UNIX的第六版公布,C语言开始受到人们的普遍关注。第 1章 C 语 言 基 础 UNIX操作系统的广泛使用,促进了C语言的迅速发展与普及,C语言的发展与普及反过来又促进了UNIX操作系统的推广。1978年,出现了独立于UNIX和PDP计算机的C语言,从此C语言 被 迅 速 移 植 到 大、中、小 型 与 微 型 机 上。当 年,B.W.Kernighan和D.M.Ritchie
6、以UNIX第七版的C编译程序为基础,出版了影响深远的名著The C Programming Language。C+语言是C语言发展的新阶段,是一种更好的C语言,是应用广泛的面向对象的程序设计语言。目前,C语言已经发展成为迄今为止最流行的计算机程序设计语言。第 1章 C 语 言 基 础 3.C语言的标准与方言语言的标准与方言 C语言的广泛应用还是在不同的开发团体之间出现了问题,各机构推出了自己的C语言版本,某些执行过程的微小差别却不时引起C程序之间的不兼容。美国国家标准协会(ANSI)从1983年开始经过长达五年的努力,制定了C语言的新标准ANSI C。现在提及C语言的标准都是指新标准。ANSI
7、 C比原标准C有很大的发展,解决了经典定义中的二义性,给出了C语言的新特点。Kernighan和Ritchie也以新标准改写了他们的经典著作。任何C程序都必须遵循ANSI C标准,本教材的主体也以ANSI C作为基础。第 1章 C 语 言 基 础 1.1.2 C语言的特点语言的特点 (1)C语言简洁、紧凑,压缩了一切不必要的成份。(2)C语言运算丰富,将括号、赋值、强制类型转换、取变量地址等都以运算实现。(3)C语言数据类型丰富,具有现代语言的各种数据类型;用户能扩充数据类型,能够实现各种复杂的数据结构,完成各种问题的数据描述。(4)C语言是一种结构化程序设计语言,具有结构化语言所要求的三种基
8、本结构。第 1章 C 语 言 基 础 (5)C语言是高级语言中的低级语言。C语言允许直接访问物理地址,能进行位运算,能实现汇编语言的大部分功能,能直接对硬件进行操作。(6)C语言提供编译预处理机制,有利于大程序的编写和调试。(7)C语言编译系统小,生成的目标代码质量高,程序的执行效率高。(8)C语言的输入和输出功能用库函数实现,编写的程序移植性好。(9)C语言语法限制不太严格,程序设计自由度大,对程序员要求较高。第 1章 C 语 言 基 础 1.2 基本语法成份基本语法成份 1.2.1 字符集字符集 字符是可以区分的最小符号,构成程序的原始基础。C语言字符集是ASCII字符集的一个子集,包括英
9、文字母、数字及特殊字符:英文字母:az和AZ 数字:09 特殊字符:空格!%&*-+=/,:;?()由字符集中的字符可以构成C语言进一步的语法成份,如标识符、关键字、特殊的运算符等。第 1章 C 语 言 基 础 1.2.2 标识符标识符 标识符在程序中用来标识各种程序成份,命名程序中的一些实体,如变量、常量、函数、类型、标号等对象的名字。C语言规定,标识符必须以英文字母或下划线开头,是字母、数字、下划线的序列。以下是合法的标识符:i,j,k,x,c,a1,a2,op,y_1,zhou_prg,radius,prime,program,sort,max,min,prg_1,cout,sun,da
10、y 第 1章 C 语 言 基 础 以下是不合法的标识符:a.1,1computer,x+y,!abc,99999,$100,3c C语言中的标识符严格区分字母的大小写,标识符abc与标识符ABC是不同的标识符。习惯上,符号常量用大写字母表示,变量名称用小写字母表示。标准C中,标识符的长度可以任意,一般有效长度为8个字符,Turbo C中标识符最大长度为32个字符。第 1章 C 语 言 基 础 标识符取名时不能与关键字同名,也不要与系统预先定义的标准标识符(如标准函数)同名。系统使用的一些内部标识符往往以下划线开头,为避免与系统使用的内部标识符发生冲突,用户定义的标识符一般也不要用下划线开头。标
11、识符的名称一般选用相应的英文单词或拼音形式缩写,尽量不要使用简单代数符号,如a、b、c、x、y、z等。最好能“见名知义”,以提高程序的可读性。标识符大多数采用“匈牙利”表示法,即每个单词第一个字母大写,如StudentName、YearMonthDate。由系统预先定义的标识符称为标准标识符,由用户定义的标识符称为自定义标识符。程序设计中往往需根据实际需要定义大量的标识符。标识符必须先定义,后使用。第 1章 C 语 言 基 础 1.2.3 关键字关键字 关键字又称为保留字,由系统提供,用以表示特定的语法成份,如类型名称int、float,语句特征if、switch、while,运算符号size
12、of等,是构成C语言的语法基础。常见关键字有31个,参见附录A。关键字有特定的语法含义,不允许用户重新定义。关键字在程序中像国家的名字一样,绝对不能拼错。第 1章 C 语 言 基 础 1.2.4 运算符运算符 运算符实际上可以认为是系统定义的函数名字,这些函数作用于运算对象,得到一个结果值。运算符通常由1个或多个字符构成。C语言沿用了大量的常规运算符,如加法运算符“+”、减法运算符“”、地址运算符“&”、大于运算符“”、不等运算符“!=”、逻辑与运算符“&”、条件运算符“?:”、点运算符“.”、字节数运算符“sizeof”等。根据运算对象的个数不同,可分为单目运算符、双目运算符和三目运算符,又
13、称为一元运算符、二元运算符和三元运算符。第 1章 C 语 言 基 础 1.3 C程序的结构程序的结构例例1-1 在屏幕上输出“C语言程序设计”。/*程序 1-1,输出C语言程序设计*/include stdio.hmain()printf(C语言程序设计);运行结果:C语言程序设计 第 1章 C 语 言 基 础 例例1 2 求两个整数之和。/*程序1-2,求两个整数之和*/include stdio.h main()int a,b;int sum;printf(请输入两个整数a,b:);scanf(%d,%d,&a,&b);sum=a+b;printf(和=%dn,sum);输入数据:2019
14、,5运行结果:和=2019第 1章 C 语 言 基 础 例例1-3 求两个数的最大值。/*程序1-3,求两个数的最大值*/include stdio.h float max(x,y)/*求最大值函数*/float x,y;float t;if (xy)t=x;else t=y;return(t);第 1章 C 语 言 基 础 main()/*主函数*/float a,b;float m;printf(请输入两个数:);scanf(%f,%f,&a,&b);m=max(a,b);/*调用求最大值的函数*/printf(最大值=%6.2f n,m);输入数据:12.1,3.45运行结果:最大值=1
15、2.10 第 1章 C 语 言 基 础 1.3.1 C程序的结构程序的结构 1函数 (1)C语言程序由若干函数组成。必须有一个且只能有一个主函数main(),主函数的名字为main。可以是系统预定义的标准函数,如scanf函数、printf函数等,参见附录C。大多数函数由程序员根据实际问题的需要进行定义,函数之间是平行的关系。基于此,C语言被称为函数式语言。第 1章 C 语 言 基 础 (2)函数由函数头(函数的说明部分)与函数体(函数的语句部分)两部分组成。函数头给出函数的特征描述,包括函数的属性、类型、名字、参数及参数类型。如例 1-3 中的求最大值函数的函数头:float max(x,y
16、)float x,y;/*函数属性缺省,函数类型实型,函数名字max,函数参数x,y,实型*/第 1章 C 语 言 基 础 函数体给出函数功能实现的数据描述和操作描述,是程序中用花括号括起的若干语句。如例 1-1 中的函数体:printf(C语言程序设计);第 1章 C 语 言 基 础 例1-3中求两个数的最大值函数max的函数体:float t;if (xy)t=x;else t=y;return(t);函数体可以为空,可以没有数据描述部分。由此可以给出理论上最小的C语言程序:main()第 1章 C 语 言 基 础 2.语句语句 (1)语句是组成程序的基本单位,函数功能的实现由若干条语句完
17、成。说明性语句完成数据描述,执行性语句完成操作描述。(2)语句由若干关键字加以标识,如ifelse语句、dowhile语句等。(3)C语言本身没有输入输出语句,C语言的输入输出操作由scanf函数和printf函数等库函数完成。(4)C语言语句必须以分号结束。第 1章 C 语 言 基 础 3.其它其它 1)预处理命令 C程序开始往往含有以“”开头的命令,它们是预处理命令。如例1-1中includestdio.h,用以指明包含文件。2)程序注释 在程序中还有以“/*”开始,以“*/”结束的内容,它们是程序中的注释部分,用以帮助阅读程序。第 1章 C 语 言 基 础 1.3.2 C程序的书写程序的
18、书写 (1)一行一般写一条语句。当然一行可以写多条语句,一条语句也可以写在多行上。(2)整个程序采用紧缩格式书写。表示同一层次的语句行对齐,缩进同样多的字符位置。如循环体中的语句要缩进对齐,选择体中的语句要缩进对齐。(3)花括号的书写方法较多,本书采用花括号对齐的书写方式,左边花括号处于第一条语句的开始位置,右边花括号独占一行,与左边花括号对齐。(4)在程序中恰当地使用空行,分隔程序中的语句块,增加程序的可读性。第 1章 C 语 言 基 础 1.4 C程序的实现程序的实现 1.4.1 实现步骤实现步骤 C程序在计算机上的实现与其它高级语言程序的实现一样,一般要经过编辑、编译、连接、运行四个步骤
19、,如图1-1 所示。图 1-1 编辑源程序编译目标文件连接执行文件运行头文件库文件(*Turbo C*)第 1章 C 语 言 基 础 1.4.2 程序的执行程序的执行 C程序的执行总是从主函数main()开始,不管主函数在程序中什么位置。其它函数通过被调用执行。函数中的语句依先后顺序执行,除非改变了程序的执行流程。第 1章 C 语 言 基 础 1.4.3 TURBO C上机操作上机操作 1启动Turbo C 只需执行TC.EXE文件,即可启动Turbo C,进入Turbo C的操作界面。TC是DOS程序,现在一般运行在Windows下的DOS环境。如需使用中文,还需先将计算机置于中文操作系统管
20、理下。用TC加源程序文件名可快速启动Turbo C,立即进入编辑操作。第 1章 C 语 言 基 础 2.TURBO C操作界面操作界面图1-2 Turbo C的主操作界面 第 1章 C 语 言 基 础 1)主操作界面 Turbo C主操作界面由主菜单区、编辑窗口区、信息窗口区及热键区四部分组成。Turbo C的操作采用菜单驱动,主菜单包括File(文件操作)、Edit(编辑操作)、Run(运行操作)、Complie(编译操作)、Project(工程文件)、Options(编译选择)及Debug(跟踪排错)各项。热键区提供常用操作的快速功能键方式,如F1(帮助)、F2(保存文件)、F3(装入文件
21、)、F5(缩放窗口)、F6(切换窗口)、Alt+F5(用户屏幕)、Alt+X(退出Turbo C)等。第 1章 C 语 言 基 础 2)主窗口 当前操作窗口为主窗口(工作窗口),主窗口为双线框表示,按F6可切换主窗口,按F5可缩放主窗口。3)菜单选择 方式一:按F10进入主菜单区,通过菜单项的大写字母选择相应菜单项,或通过光标控制键(、)移动高亮度光棒至相应菜单项,按回车选择相应菜单项。方式二:用热键ALT加相应菜单项的大写字母,选择相应菜单项。对子菜单项的选择,操作方法类似。第 1章 C 语 言 基 础 3.编辑编辑 编辑在编辑窗口中进行,有多种方式进入编辑环境:方式一:选择Edit项。方式
22、二:选择File项的子项New,用于编辑新程序。方式三:选择File项的子项Load,装入要修改的程序,用于修改程序。方式四:启动时采用快速启动方式。TURBO C的编辑操作是Wordstar、WPS等字处理软件编辑操作的子集,它与Wordstar、WPS的编辑操作完全类似。第 1章 C 语 言 基 础 4.编译编译 TURBO C将编译、连接一道完成。按热键F9或选择Compile项进入编译。编译时发生错误,返回编辑步骤,修改程序后,再编译程序。第 1章 C 语 言 基 础 5.运行运行 按热键CTRL+F9或选择Run项下的子项Run,运行计算机中的程序。按ALT+F5键或选择Run项下的
23、子项User Screen进入用户屏幕,查看程序运行结果。运行时发生错误,返回编辑步骤,修改程序后,再编译、运行程序。对于没编译的程序,选择运行会先自动进行编译操作,再运行程序。第 1章 C 语 言 基 础 6.退出退出 上机过程完成后,按热键ALT+X或选择File项的子项Quit退出TURBO C,返回操作系统状态。退出TURBO C后还可用操作系统命令来显示源程序和运行程序。第 1章 C 语 言 基 础 习习 题题 一一 1.简述C语言的主要特点。2.简述标识符的命名方法,并与关键字进行比较。3.简述C语言程序的结构。4.简述C语言程序的实现步骤。5.C语言程序的书写有何特点?6.注释在
24、程序中有什么作用?第 1章 C 语 言 基 础 7.下列标识符中,哪些是不正确的标识符?为什么?C SUM 3S Co.Ltd OK!com language for_c prg*1do¥123 (xyz)printf max PI 8.抄写例1-3中的程序,注意C语言程序的结构与书写格式。9.上机运行例1-1、例1-2、例1-3的程序,了解上机方法与步骤,熟悉实习环境。10.模仿例1-1编写程序,输出自己的姓名、性别及年龄。第 1章 C 语 言 基 础 11.模仿例1-2编写程序,求两个整数的积。12.模仿例1-3编写程序,求两个数的最小值。13.编写一个最小的C语言程序,并请上机运行。14.浏览C语言程序设计的相关网站。