资源预览内容
第1页 / 共103页
第2页 / 共103页
第3页 / 共103页
第4页 / 共103页
第5页 / 共103页
第6页 / 共103页
第7页 / 共103页
第8页 / 共103页
第9页 / 共103页
第10页 / 共103页
亲,该文档总共103页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
,第1章 C语言基本语法,1.1 数据类型 1.2 基本语句 1.3 函数 1.4 指针 1.5 动态内存分配 1.6 链表 本章小结,本书主要讨论C+ 语言,而C+ 语言是在C语言基础上发展起来的一种混合了面向过程语言要素和面向对象语言要素的程序设计语言。本章首先对C语言程序设计的基础知识进行简单的介绍。,1.1.1 基本数据类型 数据类型规定了一类数据的数据位长度(或字节个数)、取值范围以及对该类数据所能进行的操作。 基本数据类型是系统已定义的数据类型。C语言共定义了7种基本数据类型,其中4种为整型数,2种为浮点型数,1种为字符型数。数据类型不同,所定义的变量占用的内存空间、取值范围以及对该类数据所能进行的操作也不同。,1.1 数 据 类 型,C语言定义的7种基本数据类型及相应的关键字如下: 整型:byte、short、int、long; 浮点型:float、double; 字符型:char。 C语言的基本数据类型、字节数和取值范围如表1.1所示。,表1.1 基本数据类型、字节数和取值范围,C语言的字符串用字符数组表示,如语句: char s20=“Hello World!“; 该语句定义了长度为20的字符数组变量s,且该变量的初始值为“Hello World!”。另外,C语言还有空类型,其关键字为void。空类型主要用来定义函数返回值的类型。,1.1.2 构造数据类型 构造数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的。也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”。每个“成员”都是一个基本数据类型或又是一个构造类型。在C语言中,构造类型有数组、结构体和共用体。下面分别对其进行简单的介绍。,1. 数组 数组是一个由若干相同类型变量组成的集合。在C语言中,数组元素用数组名后面跟带方括号的下标表示,例如:a10,b33,c234 均为C语言数组元素。根据数组元素的下标的个数,分为一维数组、二维数组和多维数组。 数组的声明如下: 类型标识符 数组名常量表达式1常量表达式2常量表达式n; 例如: int a5; float b35;,2. 结构体 前面已经介绍了基本数据类型,但是只有这些数据类型是不够的。有时需要将不同类型的数据组合成一个有机的整体,以便于引用。比如每位学生都具有学号、姓名、年龄、成绩等属性,而一个班级的学生在学号上又具有一定的联系。C语言中,解决这样的问题是通过结构体数据类型。结构体的一般定义语句为 struct 结构体名 成员列表; ;,其中,struct是C语言的关键字,是结构体类型的标志;结构体名是结构体标识符;成员列表中的每一项都由已定义数据类型名和成员名两部分组成。由于结构体中所有成员的数据类型都是已定义的,因此可以把结构体看做一个新的、用户自定义的数据类型。换句话说,一旦定义了一个结构体,就可以用该结构体定义变量。,例如,要处理学生信息时,加入要处理的学生信息,包括学生的学号、姓名、性别、年龄,就可以把学生的这些信息定义成一个结构体。结构体定义的语句如下: struct student long number; /学号 char name20; /姓名 char sex3; /性别 int age; /年龄 ;,对结构体类型的变量,既可以整体处理,也可以按成员分量处理。整体处理的例子 如下: struct student x=100001,“张三“,“男“,26,y,*p; y=x; /结构体赋值 p = /变量的成员分量赋值,p= /指针类型变量的成员分量赋值 注意:这里指针类型变量的成员表示方法和非指针类型变量的成员表示方法不同。,3. 共用体 共用体也是一种构造类型,它的主要特点是,共用体变量中的所有成员占用同一段存储空间,这段空间的大小就是所有成员中所需存储数的最大者。而结构体变量中的成员各自占用自己的存储空间,这是两者的本质区别。另外,共用体类型说明及变量定义都与结构体类型说明及变量定义的方式类似。,共用体类型说明形式: union 共用体类型名 成员列表; 其中,union为C语言关键字,共用体类型名只要符合C语言标识符命名规则即可。共用体变量的定义与结构体变量的定义方式类似,例如: union un1 ,int a; char b; float c; x; 由此可以看出,共用体“union un1”共有3个成员,而成员c所需的存储空间最大,是4个字节。所以共用体变量x共占用存储空间4个字节,它的3个成员共享此段空间。,需要说明的是: (1) 在某一时刻,这段空间中只能存储一个成员的数据,这个数据就是最后一次赋予的值。 (2) 不能对共用体变量进行初始化,也不能进行整体赋值运算。 例如: x.a =10; x.b = e; x.c =80.2; 则这段存储空间保存的值是最后一次赋予的数据80.2。,和其他的高级语言一样,C语言的语句用来向计算机发出操作指令,一条语句编译后产生若干条机器指令,一个实际的程序由若干条语句组成。C语言的基本语句包含赋值语句、自增自减语句、分支语句、循环语句和流程控制语句。,1.2 基 本 语 句,1.2.1 赋值语句 赋值语句是由赋值表达式加上一个分号构成的,其基本的语句语法为 ; 其中,最常用的赋值运算符是“=”。另外,还有复合运算符 +=、-=、/=、*= 等。表达式分为算术表达式、关系表达式和逻辑表达式。赋值表达式中的表达式主要是算术表达式。算术表达式是由算术运算符组成的表达式,例如:,int b=-1, a=10; /变量定义并赋初值 b = a * 5 + 3 ; /把算术表达式a*5+3的值赋给变量b b -= a; /把算术表达式b-a的值赋给变量b 语句b -= a;也可写成: b = b-a;,1.2.2 自增自减语句 自增自减语句是特殊情况下赋值语句的简略形式,其作用是使变量的值加1或减1。 例如: int i=3,j=0; /定义变量并赋值 i-; /使用i后,使i的值减1 +j; /使用j前,使j的值加1 其中,i-和+j的作用相当于i = i-1和j = j+1。自增自减语句常用于循环语句中,使循环变量自动加1;也用于指针变量,使指针指向下一个地址。,1.2.3 分支语句 分支语句用来根据不同的条件构造不同的语句执行流程。分支语句包括if语句和switch语句。if语句的基本语法形式为 if() 或 if() else ,第一种分支语句的含义是:若条件成立,则执行语句,否则跳过执行后续语句;第二种分支语句的含义是:若条件成立,则执行语句1,否则执行语句2。 条件是由关系表达式或逻辑表达式组成的一个其值为真(非0)或为假(0)的表达式。 当条件后面的语句多于一条时,要用一对花括号“”把这些语句括起来。,【例1.1】 编写一个程序,输入一个实数,输出它的绝对值。 /- /c0101.cpp /- #include main() float x,y; printf(“Input x: “);,scanf(“ %f“, 程序运行结果: (1) Input x: 3.2,|3.200000| = 3.200000 (2) Input x:-3.2 |-3.200000| = 3.200000 if语句也可以嵌套使用,即可以在一个if语句中又包含另一个if语句,从而构成程序执行的多个分支。但是在大多数情况下,当程序存在多个分支时,一般使用switch语句。switch语句的基本语法形式为 switch() ,case : case : case : default : 例如,要求按照考试成绩的等级输出百分制分数段,可以用switch语句实现: switch(grade) ,case A:printf (“90100n“); case B:printf (“8089n“); case C:printf (“7079n“); case D:printf (“6069n“); case E:printf (“60n“); default :printf (“errorn“); switch语句中,当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的所有语句;如果表达式的值与任何case后面的常量都不匹配,则执行default语句后面的语句。,1.2.4 循环语句 循环语句用来构造满足一定条件时,对同一个程序段重复执行若干次的程序结构。 循环语句主要有while语句和for语句两种。while语句主要用来构造循环次数不固定的循环,for语句主要用来构造循环次数固定的循环。实际上,这两种循环语句的功能完全一样,也就是说,既可以把while语句构造的循环结构改造成for语句构造的循环结构,也可以把for语句构造的循环结构改造成while语句构造的循环结构。,while语句的语法形式为 while() 当表达式为非0(代表逻辑“真”)时,反复执行while语句中的内嵌语句,直到表达式为0为止。 for语句的语法形式为 for(;) 其循环执行的过程为,(1) 先求解初始表达式。 (2) 求解终止表达式,若其值为“真”(值为非0),则执行for语句中指定的内嵌语句,然后执行下面(3)步。若为“假”(值为0),则结束循环,转到(5)步。 (3) 求解增量表达式。 (4) 转回上面第(2)步继续执行。 (5) 循环结束,执行for语句下面的一个语句。 【例1.2】 编写程序求,即1+2+3+ + 100。 /-,/c0102.cpp /- #include main() int i; long sum=0; for(i=1;i101;i+) sum += i; printf(“sum=%ldn“, sum); ,由于本例的循环次数事先已知,所以用for语句实现较好。为了说明while语句和for语句的功能完全相同,再用while语句设计如下: #include main() int i=1; long sum =0; while(i=100) sum+=i;,i+; printf(“sum=%ldn“, sum); 两个程序的运行结果均为 sum = 5050 循环语句还有do-while语句,其实现功能和while语句完全相同,只是语法略有不同。,1.2.5 流程控制语句 流程控制语句主要有break语句和continue语句。 break语句的语法形式为 break; 其语句含义是跳出当前的switch语句或循环语句。 continue语句的语法形式为 continue; 其语句含义是结束本次循环,即跳过循环语句中尚未执行的语句,接着进行循环条件的判定。continue语句只用在for、while和do-while等循环语句中,一般与if语句一起使用,可
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号