第1章程序设计语言和算法描述第2章C程序设计入门第3章C程序的控制结构第4章函数与程序结构第5章指针与函数第6章构造类型和指针第7章位运算第8章文件第9章C语言应用程序设计技术2.1C语言的发展简史2.2C程序的基本结构2.3C语言的基本数据类型2.4基本运算符和表达式2.5不同类型数据混合运算及数据转换2.6C程序设计初步第2章C程序设计入门1.发展简史2.C语言的特点C语言具有下列基本特点:①C语言简洁、紧凑,使用方便、灵活。②C语言是位于汇编语言和高级语言之间的一种程序设计语言。③C语言是一种结构化程序设计语言,④C语言数据类型丰富。⑤C语言运算符丰富。⑥C语言程序中可以使用预处理、宏定义、包含以及条件编译的预处理功能。⑦C语言程序可移植性好。第2章C程序设计入门2.1C语言的发展简史2.2C程序的基本结构2.3C语言的基本数据类型2.4基本运算符和表达式2.5不同类型数据混合运算及数据转换2.6C程序设计初步2.2.1C程序的基本结构C程序由函数组成。1)一个主函数2)0个或多个子函数函数是C程序的基本单位。函数由两部分组成:1)函数说明部分2)函数体C程序总是从主函数开始执行。C程序的书写自由。2.2.1C程序的基本结构例2.1从键盘输入三个实数,输出它们的平均值。程序如下:#includestdio.hvoidmain(){floatave,x,y,z;/*定义变量*/scanf(%f,%f,%f,&x,&y,&z);/*调用函数scanf对相应变量赋值*/ave=(x+y+z)/3;/*计算平均值*/printf(%f,ave);/*输出平均值*/}其中,main表示主函数,C语言规定每个程序必须有一个主函数,且主函数的函数名必须是main;程序里的一对花括号{}标识函数的开始和结束。花括号内的称为函数体。本例的函数体内只有一个语句;scanf是C语言中的输入函数,通过执行此函数从键盘输入相应的值;printf是C语言中的输出函数,通过执行此函数将相应的数据输出到屏幕。/**/是对程序的相应部分进行注释。2.2.1C程序的基本结构#includestdio.h#defineSIZE80voidmain(){voidmyputc(charch);charstr[SIZE];intj;gets(str);for(j=0;str[j]!=’\0’;j++)myputc(str[j]);}voidmyputc(charch){charcc;cc=(ch=’a’&&ch=’z’)?ch+’A’-’a’:ch;putchar(cc);}例2.2输入一个字符串,将其中的小写字母转化为大写字母2.2.1C程序的基本结构C程序的组成:源程序的组成:一个C语言源程序可以由一个或多个源文件组成;每个源文件可由一个或多个函数组成。C函数的组成:每一个函数由函数说明部分(函数头)和函数体组成。函数体也由若干C语句组成。主函数main():一个C程序中有且只有一个main()函数,可在任意位置,是程序运行开始和结束。2.2.1C程序的基本结构源程序中可以有预处理命令(include命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。每个语句后有“;”,函数说明部分除外。每一个说明,每一个语句都必须以分号“;”结尾。但预处理命令,函数头和花括号“}”之后不能加分号。书写格式自由:C程序的每一行可以写多个语句,一个语句也可以写在多行上,用“\”续行。C程序空格和回车符不计,没有行号。可在任意位置加注释/*……*/,可多行,不可嵌套。第2章C程序设计入门2.1C语言的发展简史2.2C程序的基本结构2.3C语言的基本数据类型2.4基本运算符和表达式2.5不同类型数据混合运算及数据转换2.6C程序设计初步2.3C语言的基本数据类型C语言数据类型概述数据类型是一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称。在程序设计语言中,一个数据的数据类型不仅规定了这个的变量的取值范围,而且定义了这个变量可用的操作,也确定了此数据在计算机中的存储形式。在程序中正确描述所处理数据的数据结构,必须先了解该程序设计语言所规定的数据类型。2.3.1C语言数据类型概述(1)C语言的标识符每种计算机程序设计语言都规定了允许使用的字符集,以便处理系统能正确识别它们。C语言字符集由以下91个字符组成:小写英文字母abc…z大写英文字母ABC…Z数字0123…9特殊字符+=-_()*&%$!|.,;:”’/?{}~[]^不可印出字符空格、换行、制表符等(1)C语言的标识符标识符是给程序中的变量、常量、函数、数据类型等取的名字。标识符的命名规则是:每个标识符由1~32个字母、数字或下划线组成,其中第一个字符必须是字母或下划线。标识符分为两大类:系统保留字和用户标识符。(1)C语言的标识符有些标识符严格说不属于系统保留字,但C语言把它们用于特定的地方,建议用户不要将它们在程序中随意使用,以免造成混淆,这些标识符是:defineundefincludeifdefifndefendiflineerrorelifpragma它们常用于C语言的预处理中。(1)C语言的标识符用户自定义标识符时,一方面要取得有意义,便于阅读;另一方面要注意避免含义上或书写时引起混淆。下面是合法用户标识符的:ab1file_name_buf下面是不合法的用户标识符:5c不是以英文字母开头int与系统保留字同名up.to标识符中出现了非法字符”.”filename标识符中间出现了非法字符空格(2)C语言的数据类型C语言提供的数据类型比一般高级语言丰富,除整型、实型、字符型等基本类型外,还提供了数组、指针、结构体、联合体、枚举、位、位段等数据类型,使用这些数据类型可以构成复杂的数据结构。(3)常量、变量与变量的定义常量——在程序的运行过程中,其值不能被改变的的量称为常量。C语言的常量有三类:数、字符和字符串,它们不必进行任何说明就可以在程序中直接使用。在C程序设计中,还可以使用标识符来代表一个常量,称为符号常量。[程序演示]变量——在程序的运行过程中,其值能够被改变的量,变量用标识符来表示。C语言中规定,程序中的变量在使用之前必须加以定义。程序中的每一个变量都应有确定的数据类型,在一个程序中一个变量只能属于一个类型,不能先后被定义为两个或多个不同类型。变量定义的一般格式如下:[存储类型]数据类型名变量名1[,变量名2……];或数据类型名变量名表;例如,floatradius,length,area;其中:数据类型名:用以指明变量名表中变量的类型,(如:int、float、char等);变量名表:由一个变量或若干个用逗号分隔的变量组成。2.3.2C语言的基本数据类型(1)整型数据(整型常量、整型变量)a.整型常量C语言的整型常量可以有三种表示形式:●十进制整数。如888,-123,0等。●八进制整数。以0开头的整数是八进制整型常量,如0777,-011等。●十六进制整数。以0x开头的整数是十六进制整型常量,如0x123,0xff等。b.整型变量整型变量可分为:基本型、短整型、长整型和无符号型四种。其类型名分别由int或者由限定词short、long、unsigned与int共同组成。其短整型占2字节,长整型占4字节。下面列出以IBM-PC微型计算机为例的整型变量类型名及其相应变量的取值范围:定义整型变量定义整型变量的语句行为:类型名变量列表;例如:inta,b;(定义变量a,b为整型变量)longx,y;(定义变量x,y为长整型变量)unsignedc,d;(定义变量c,d为无符号整型变量)见例2.1整型量的定义和输出。(2)实型数据a.实型常量(实型常量、实型变量)实型数在C语言中称为浮点数,实数有两种表示形式:●十进制数形式由数字和小数点组成,如:888.88,0.88等。●指数形式。如123e5表示123乘10的5次方等。b.实型变量C实型变量分为单精度型和双精度型,其类型名分别为float和double。单精度量提供6~7位有效十进制位,占4个字节,其中指数占8个二进制位,尾数占24个二进制位。双精度量提供15~16位有效十进制位,占8个字节。当单精度量不能满足运算要求时即可使用双精度量。定义实型变量的语句行为:float变量列表;或double变量列表;例如:floatx,y;(定义变量x,y为单精度实型变量)doublez;(定义变量z为双精度实型变量)见例2.2单精度量和双精度量的运算。(3)字符型数据a.字符常量C语言的字符常量分为两种:一种是由单引号括起来的一个可打印字符,如’a’、’?’、’A’等。另一种是由反斜杠’\’开头的字符序列,称作“转义字符”。转义字符一般表示一种控制功能。转义字符如表2.1所示:b.字符变量字符型变量可以存储和表示一个字符,占用一个字节。字符型变量的定义形式如下:char变量列表;例如:charch;(定义变量ch为字符型变量)特别要注意的是,在C语言中字符型变量和整型变量是兼容的,字符型数据可以与整型数据一起参与运算。见例2.3字符量的运算。例2.3字符量的运算。#includestdio.hvoidmain(){inta;charb;a=1;b=’A’;printf(”%c\n”,b+a);}该程序运行结果为:B(3)字符型数据c.字符串常量在C语言中没有专门的字符串变量,如果需要将字符串常量存放在变量中,则需要使用字符数组的形式。字符串常量是用双引号括起来字符序列。如:“Hello,World!”、“a”、“1”等都是字符串常量。其中双引号只是作为定界符使用,并不是字符串中的字符。字符常量与字符串常量的在表示形式上和存储性质上是不同的。如:'a'、a,前者是一个字符常量,而后者是一个字符串常量;前者在存储时占1个字节的存储空间,而后者(即为’a’和’\0’)要占2个字节的存储空间。(4)变量的初始化C语言中规定,可以在定义变量的同时给变量赋值,称为变量的初始化。变量初始化的一般格式:[存储类型]数据类型变量名[=初值][,变量名2[=初值2]……];例如:floatradius=2.5,length=6.5,area;inta=3,b=5;charc='a';如例2.3可修改为如下表示:#includestdio.hvoidmain(){inta=1;charb=’A’;printf(”%c\n”,b+a);}(5)符号常量在C语言中,常量可以用符号代替,代替常量的符号称为符号常量(或称为宏常量)。符号常量一般使用大写字母表示。符号常量在使用之前必须预先定义。其定义的一般格式为:#define符号常量常量例如:#definePI3.1415926#defineEOF-1在C语言中,每个符号常量表达式只定义一个符号常量,并且占据一个书写行。符号常量一经定义,它们就可以在程序中代替常量使用。第2章C程序设计入门2.1C语言的发展简史2.2C程序的基本结构2.3C语言的基本数据类型2.4基本运算符和表达式2.5不同类型数据混合运算及数据转换2.6C程序设计初步2.4基本运算符和表达式2.4.1运算符的分类、优先级别和结合规则C语言的运算符非常丰富,把除了控制语句和输入输出操作以外的几乎所有基本操作都作为运算符处理。C语言的运算符大致分为以下几类:●算术运算符●关系运算符●逻辑运算符●赋值运算符●条件运算符●位运算符●逗号运算符●指针运算符●其他运算符如:分量运算符、下标运算符、sizeof运算符、函数调用运算符、强制数据类型转换运算符等。2.4.1运算符的分类、优先级别和结合规则C语言把表达式中的各种运算符运算的先后顺序规定为15个由低到高的优先级别,并且为运算符规定了结合性。参见“表2.3运算符的优先级和结合性”。左结合性规定运算顺序先左后右。例如,表达式5+x-1,运算对象x的两边运算符为+号和-