C语言程序设计第1章概论第2章数据类型、运算符与表达式第3章顺序结构程序设计第4章选择结构程序设计第5章循环结构程序设计第6章数组第7章函数第8章指针第9章结构体与共用体第10章文件第11章综合应用实例第1章概论C语言是美国贝尔实验室于20世纪70年代初研制出来的,早期主要用于UNIX操作系统,到了20世纪80年代,C语言开始用于其它操作系统,并很快在各类大、中、小和微型计算机上广泛使用,成为国际上广为流行的计算机程序设计高级语言。本章主要介绍C语言的特点,C语言程序的结构与书写规则,C程序上机步骤,编译预处理,算法的概念及表示。1-1返回目录1.1语言的特点1.语言简洁、紧凑,使用方便、灵活2.运算符丰富3.数据类型丰富4.程序设计结构化、模块化5.语法限制不太严格,程序设计自由度大6.C语言允许直接访问物理地址,能进行位(bit)操作7.生成的目标代码质量高,程序执行效率高8.可移植性好1-21.2C语言程序的结构与书写格式1.2.1C语言程序举例1.2.2C语言程序的结构1.2.2.1函数是C语言程序的基本单位。1.2.2.2函数的一般结构任何函数(包括main()函数)都是由函数首部和函数体两部分组成。1.函数首部:函数首部即函数第一行,由函数类型、函数名和函数参数表三部分组成。2.函数体:函数体为函数首部下面的花括号{……}内的部分。函数体一般由声明部分和执行部分构成:声明部分定义所用到的变量,声明所调用的函数等;执行部分有若干语句组成。1-31.2.2.3C语言程序的执行C语言程序总是从main()函数的第一条执行语句开始执行,执行完main()函数的最后一条语句,则整个程序执行结束,而其他函数则通过嵌套调用得以执行。1.2.3C语言程序书写格式1.行的书写格式自由,可从一行的任何位置开始书写。2.一行可书写多条语句,一条语句也可分写在几行上。3.所有语句都必须以分号“;”结束。4.允许使用注释。C语言的注释格式有两种://,/*……*/。5.在书写程序时,通常采用缩格形式书写分层结构的程序。1-41.3C程序上机步骤C源程序编好后,要经过编辑、编译、连接,生成可执行文件后,才可运行。1-5运行集成开发软件编辑源程序编译连接运行结束有错?无有结果正确?正确不正确1.4编译预处理编译预处理是指,在C编译程序对C源程序进行编译之前,由编译预处理程序对源程序中的预处理命令进行处理的过程。1.4.1宏定义用一个标识符来表示一个字符串,称为“宏”,标识符称为“宏名”。在程序中用宏名替代字符串称为“宏调用”。在编译预处理时,将对程序中所有出现的“宏名”,都用宏定义中的字符串代换,这个过程称为“宏展开”。1.4.1.1不带参数的宏定义格式为:#define标识符字符串1.4.1.2带参数的宏定义格式为:#define宏名(参数表)字符串1.4.2文件包含文件包含是指在一个文件中,去包含另一个文件的全部内容。格式为:#include文件名或#include文件名1-61.5算法的概念及表示1.5.1算法的概念为解决一个问题而采取的方法和步骤,称为算法。计算机能够执行的算法,称为计算机算法,它有以下特性:⑴有穷性。⑵确定性。⑶输入。⑷输出。⑸有效性。1.5.2算法的表示1.5.2.1用自然语言表示算法自然语言就是人们日常使用的语言。1.5.2.2用流程图表示算法流程图是用一些图框表示各种操作,用图形表示算法。1-7第2章数据类型、运算符与表达式数据是程序处理的基本对象,由数据和运算符一起组成的表达式是计算机语言中最基本的计算成分。本章主要介绍基本数据类型:整型,实型,字符型;常用运算符:算术运算符,赋值运算符,逗号运算符,以及相应的表达式。2-1返回目录2.1数据类型C语言的数据类型非常丰富,可分为:基本数据类型,构造数据类型,指针类型,空类型四大类。2-2基本类型构造类型指针类型空类型(void)整型实型字符型(char)枚举类型(enum)数组类型结构体类型(struct)共用体类型(union)单精度(float)双精度(double)长双精度(用的很少)短整型(short)整型(int)长整型(long)数据类型2.2常量与变量2.2.1标识符标识符是用来标识符号常量名、变量名、函数名、数组名、类型名、文件名的有效字符序列,由字母、数字、下划线组成,且第一个字符必须为字母或下划线。2.2.2常量2.2.2.1字面常量(直接常量)字面常量是直接表示的常量。2.2.2.2符号常量符号常量是用一个标识符代表一个常量,使用编译预处理命令#define定义,定义格式为:#define常量名字面常量2-32.2.3变量在程序运行过程中,其值可以改变的量称为变量。C语言规定,变量要先定义后使用。变量的定义一般在函数的声明部分,格式为:数据类型变量名1,变量名2,……;变量的三个要素:⑴变量名。⑵变量值。⑶变量的地址.2.2.4变量的初始化在定义变量的同时给变量赋以初值,称为变量初始化,出现在函数体的声明部分,格式为:数据类型变量1=值1,变量2=值2,……;2-42.3整型数据2.3.1整型常量在C语言中,整型常量有三种表示形式:⑴十进制,数码为0~9。⑵八进制(以数字0开头),数码为0~7。⑶十六进制(以数字0x或0X开头),数码为0~9,A~F或a~f。在C语言中,整型常量可分为三种类型:⑴基本整型。⑵无符号基本整型(在数值后面加U或u)。⑶长整型(在数值后面加L或l。2-52.3.2整型变量根据占用内存字节数的不同,整型变量分为三类:(1)基本整型,以int表示。(2)短整型,以shortint或short表示。(3)长整型,以longint或long表示。根据在内存中的存储形式,整型数据又分为有符号和无符号两种。2-6整型数据的分类类型标识符字节数存储位数值范围整型int216-32768~32767短整型short216-32768~32767长整型long432-2147483648~2147483647无符号整型unsignedint2160~65535无符号短整型unsignedshort2160~65535无符号长整型unsignedlong4320~42949672952.3.3整型数据的溢出如果在数据处理时,超出了变量的取值范围,就会发生“溢出”现象。2.4实型数据2.4.1实型常量实型常量即实数,在C语言中又称浮点数,其值有两种表达形式。⑴十进制小数形式,有数字和小数点组成,要求小数点的两边必须有数。⑵指数形式,格式为尾数E(e)整型指数2-72.4.2实型变量C语言的实型变量分为三种:单精度型(float)、双精度型(double)、长双精度型(longdouble),实型数据在内存中是按指数形式存储的。2-8实型数据的分类类型标识符字节数存储位有效数字数值范围单精度型float4326~73.4×10-38~3.4×1038双精度型double86415~16-1.7×10-308~1.7×103082.5字符型数据2.5.1字符常量用一对单引号括起来的单个字符,称为字符常量。C语言中有一种称为“转义字符”的特殊形式的字符常量,转义字符以反斜杠“\”开头,将“\”后面的字符转换为另外的含义。2-9转义符字符形式含义\n换行,从当前位置移到下一行开头\t水平制表(跳到下一个Tab位置)\b退格,将当前位置移到前一列\r回车,将当前位置移到本行开头\'单撇号字符\\反斜杠字符\双撇号字符\ddd1~3位八进制数所代表的字符\xhh1~2位十六进制数所代表的字符2.5.2字符变量字符变量用来存放字符常量,关键字为char,只能存放一个字符,占用1个字节内存单元。字符数据在内存中存储的是字符的ASCII码(一个无符号整数),其形式与整数的存储形式一样,表示范围是:0~255。在C语言中允许字符型数据与整型数据之间通用。2-102.6算术运算符和算术表达式2.6.1运算符及表达式简介2.6.1.1运算符C语言中的运算符具有2个特点:⑴运算符的优先级C语言中,运算符的优先级共分为15级,1级最高,15级最低。⑵运算符的结合性C语言中各运算符的结合性分为左结合性(从左到右)和右结合性(从右到左)。2.6.1.2表达式表达式是由常量、变量、函数和运算符组成的式子。表达式求值是按运算符的优先级和结合性规定的顺序进行的。2-112.6.2算术运算符和算术表达式2.6.2.1基本的算术运算符基本算术运算符均为双目运算,有5种:加法运算符“+”、减法运算符“-”、乘法运算符“*”、除法运算符“/”、求余运算符或模运算符“%”。用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子称为算术表达式,运算对象包括常量,变量、函数等。如果一个运算符两侧的运算对象数据类型不同,要先利用自动类型转换或强制类型转换,使运算对象具有同一种数据类型,然后才能进行运算。2-122.6.2.2类型转换数据的类型是可以转换的。1.自动转换如果一个运算符两侧运算对象的数据类型不同,则系统按“先转换、后运算”的原则,首先将数据自动转换成同一类型,然后在同一类型数据间进行运算。2.强制类型转换强制类型转换是通过类型转换运算符来实现的,一般形式为(类型名)(表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。2-13doublefloatunsignedlongintchar,short高低自动转换规则2.6.2.3自增(++)、自减(--)运算符自增运算符(++)使单个变量的值增1,自减运算符(--)使单个变量的值减1,格式为前置:++i,--i在使用i之前,使i的值加(减)1后置:i++,i--在使用i之后,使i的值加(减)12-142.7赋值运算符和赋值表达式2.7.1赋值运算符赋值运算符是“=”,它的作用是将一个数据或一个表达式的值赋给一个变量,赋值运算符的一般形式如下:变量=表达式2.7.2复合的赋值运算符复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的,一般格式如下:变量双目运算符=表达式它等价于:变量=变量双目运算符(表达式)。5个复合算术运算符:和赋值“+=”,差赋值“-=”,积赋值“*=”,商赋值“/=”,模赋值“%=”。由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式,它的一般形式为变量赋值运算符表达式赋值表达式的值为被赋变量的值。2-152.8逗号运算符和逗号表达式在C语言中,逗号“,”也是一种运算符,称为逗号运算符,它把若干个表达式连接起来组成一个表达式,称为逗号表达式,一般形式为表达式1,表达式2,…,表达式n逗号表达式的求解过程是:从左到右,依次计算各表达式的值,最后一个表达式的值即为整个逗号表达式的值。2-16在第一章介绍了C语言程序的结构,在第二章介绍了构成程序的基本成份:常量、变量、基本数据类型、常用运算符及表达式,本章将介绍C语句概述,数据的输入与输出,顺序结构程序设计。3-1第3章顺序结构程序设计返回目录3.1C语句概述C语句用“;”做为结束,其作用是向计算机系统发出操作指令。3.1.1控制语句C语言有9种控制语句。⑴if()~else~(条件语句)⑵switch(开关语句)⑶for()~(循环语句)⑷while()~(循环语句)⑸do~while()(循环语句)⑹continue(结束循环语句)⑺break(中止执行switch语句或结束本次循环语句)⑻goto(无条件转向语句)⑼return(从函数返回语句)3-23.1.2函数调用语句函数调用语句由一次函数调用加一个分号“;”组成。3.1.3表达式语句表达式语句由表达式加一个分号“;”组成,其一般形式如下:表达式;3.1.4复合语句复合语句由花括号{}把多条语句括起来组成。3.1.5空语句只有一个分号“;”组成的语句,称为空语句,它什么也不执行,用作被转向点或循环语句中的循环体。3-33.2数据的输入输出3.2.1字符数据的输入输出3.2.1.1putc