C语言与程序设计大学教程(CPP教材第二版)一ppt课件_第1页
C语言与程序设计大学教程(CPP教材第二版)一ppt课件_第2页
C语言与程序设计大学教程(CPP教材第二版)一ppt课件_第3页
C语言与程序设计大学教程(CPP教材第二版)一ppt课件_第4页
C语言与程序设计大学教程(CPP教材第二版)一ppt课件_第5页
已阅读5页,还剩235页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、CPP教材(第二版)一李龙澍 著C言语与程序设计大学教程言语与程序设计大学教程第第1章章 C+入门入门第第2章章 数据类型和表达式数据类型和表达式第第3章章 语句和函数语句和函数李龙澍 著第第1章章 C+入门入门l 本章要点本章要点C+C+概念概念简单简单C+C+程序程序算算C+C+程序构造程序构造第第1章章 C+入门入门1.1 什么是C+1.2 一个C+程序1.3 C+程序的构造1.4 例题分析和小结1.1 什么是什么是C+1.1.1 什么是C+程序设计言语1.1.2 C+程序开发过程 人们要进展某种游戏必需遵照这种游戏的游戏规那么,计算机程序设计言语是一种人与计算机交互的游戏规那么。 计算

2、机程序设计言语是计算机可以认识的言语,人们可以用这种言语描画问题的处理方法和步骤,计算机就可以了解并执行。 1.1.1 什么是C+程序设计言语1.1.1 什么是C+程序设计言语 计算机言语随着计算机科学的开展而开展,它的每一步开展都是使计算机言语与人类的自然言语更加接近。 (1)在20世纪80年代以前,人们编写程序是面向过程的,就是把现实生活中的问题,转化成一个个的过程,再把每个过程编写成程序。 (2)到了20世纪80年代,出现了面向对象的思想,就是把一个事物(或实体)编写一段程序,不要再把它转换成过程,少了个中间环节,也就减少了出错的能够性。 1.1.1 什么是C+程序设计言语nC+是当今最

3、流行的一种面向对象的程序设计言语,它是在20 世纪80年代早期由贝尔实验室开发的一种言语。n当时C言语曾经非常流行,随着问题复杂度的提高和面向对象方法的提出,C言语显得力不从心,C+是由C言语扩展而成的,它承继了C言语的优点,又极大地扩展了C言语的功能。 1.1.1 什么是C+程序设计言语nC+曾经在众多运用领域中作为首选程序设计言语,尤其适用于开发中等和大型的计算机运用工程。 n从开发时间、费用到构成的软件的可重用性、可扩展性、可维护性以及可靠性等方面都显示出C+的优越性。 1.1.2 C+程序开发的过程n当编写C+言语程序时,必需遵照C+言语的游戏规那么,这个游戏规那么包括C+言语的语法规

4、那么和编写程序的操作规范。n世界上有很多种C+言语,比较流行的有Visual C+(简称VC+)和Borland C+,它们有一致的语法规那么,但有不同的操作规范。本书选用VC+作为C+言语环境 1.1.2 C+程序开发的过程nVC+是开发C+程序的集成开发环境 ,包括一下几个环节:n 1编辑n 2编译n 3衔接n 4运转1.1.2 C+程序开发的过程n写一个命名为Hello的程序 ,其操作流程如下:1.1.2 C+程序开发的过程n详细引见每个环节1.编辑 编辑是将写好的C+源程序输入到计算机中,生成磁盘文件的过程。程序的编辑在计算机提供的编辑器中进展。编辑的C+程序存盘时,自动加上“cpp扩

5、展名,这是C+源程序的默许扩展名。 主要编辑功能有: 1定义块:在编辑C+源程序的正文任务区,将鼠标的光标移到要定义块的一端,按下鼠标左键,拖动鼠标到要定义块的另一端,松开鼠标左键,鼠标捋过部分变黑,一块就定义好了。1.1.2 C+程序开发的过程2挪动块:将鼠标的光标放到变黑的块上,按下鼠标 左键,拖动鼠标到新的位置,松开鼠标左键,块就挪动到了新位置。3复制块:将鼠标的光标放到变黑的块上,左手按下键盘上的Ctrl键,右手按下鼠标左键,拖动鼠标到新的位置,松开鼠标左键,松开Ctrl键,块就复制到了新位置。4删除块:单击键盘上的Delete键,定义的块就被删除。5插入:将光标挪动到要插入的位置,键

6、入要插入的字符。录入源程序就是在正文任务区的尾部进展插入。 6保管:选择文件菜单下的保管命令,或点击 按钮。 1.1.2 C+程序开发的过程2. 编译 编辑好的源程序必需编译成机器代码计算机才干执行。编译器是将编辑好的程序转换成二进制机器代码的方式。编译好的机器代码称为目的代码。 C+的编译分两大步进展: 预处置过程 编译源程序1.1.2 C+程序开发的过程C+的编译分两大步进展: 预处置过程 编译器首先编译预处置命令,包括找到预处置文件的位置,翻开预处置文件,后面的源程序要用到预处置文件定义的内容。 编译源程序 编译源程序就是将编辑完成的C+源程序翻译成计算 机硬件可以认识的目的代码。目的代

7、码的扩展名为“obj。 1.1.2 C+程序开发的过程3. 衔接 编译得到的目的代码还不能直接在计算机上运转,必需把目的代码衔接成执行文件以后才干运转。假设预处置文件没有错误,衔接时就把预处置文件指定的库函数复制到源程序中运用它的地方。执行文件的扩展名是“exe。1.1.2 C+程序开发的过程4. 运转 对于C+源程序经过编译和衔接生成的可执行文件。可以在操作系统环境下单独运转,也可以在VC+集成环境下运转。 选择VC+集成环境下的执行当前程序命令,程序就进入运转形状,普通在屏幕上可以看到程序的运转结果,或提示输入数据等信息。1.2 一个一个C+程序程序n为了了解C+程序的奥妙,我们先编写一个

8、简单的C+程序:该程序的功能是输出下面的三句话:n Hello, World!n 他真聪明, 他曾经会用C+编写程序了!n Bye, 朋友!n程序可以分为两段:n SayHello() 输出:Hello, World!他真聪明, 他已 经会用C+编写程序了!n SayGoodbye()输出:Bye, 朋友!1.2 一个一个C+程序程序n按以下步骤进展程序编写:n 运转Visual C+。 n 在File菜单下选择New命令,翻开New对话框。n 在Projects选项卡中指定以下选项:n . Projects:Win32 Console Applicationn . Project Name:

9、Hellon . Location:指定运用程序的存放位置n . Create New Workspace:选中(默许)n . Platforms:Win32选中(默许)n 设置完成后,单击OK按钮。1.2 一个一个C+程序程序n编写程序按以下步骤进展:n 翻开AppWizard对话框,在AppWizard中,单击A Simple Application。n 单击Finish按钮,显示New Project Information 对话框,内容如下:n + Simple Win32 Console application. n Main: Hello.cppn Precompiled Head

10、er: Stdafx.h and Stdafx.cppn 单击OK按钮。1.2 一个一个C+程序程序n一个新的运用程序创建完成,自动创建了主文件Hello.cpp,工程还自动创建了预编译头文件Stdafx.h和系统设置程序Stdafx.cpp。nHello.cpp的内容为:n / Hello.cpp : Defines the entry point for the console application.n #include stdafx.hn int main(int argc, char* argv)n n return 0;n 1.2 一个一个C+程序程序n在Hello.cpp中,插入

11、写好的程序。最后,完好的Hello程序如下:n / Hello.cpp : Defines the entry point for the console application.n #include stdafx.hn #include n / 函数原型n void SayHello();n void SayGoodbye();n int main(int argc, char* argv)n n SayHello();/调用SayHello函数n SayGoodbye(); /调用SayHello函数n return 0;n 1.2 一个一个C+程序程序n函数SayHello定义 n vo

12、id SayHello()n /输出“Hello, World!和“他真聪明, 他曾经会用C+编写程序了!n n cout Hello, World! endl;n cout他真聪明, 他曾经会用C+编写程序了! endl; n 1.2 一个一个C+程序程序n函数SayGoodbye 定义 n void SayGoodbye()/输出“Bye, 朋友!n n cout Bye, 朋友! endl;n 1.3 C+程序的构造程序的构造1.3.1 主程序1.3.2 函数1.3.3 输入输出1.3.4 头文件1.3.5 注释1.3.1 主程序n每个C+言语程序都有一个特殊的函数,它的名字是main,

13、称为主程序函数,简称主程序(或主函数).每个C+程序都从主程序main开场执行。 n下面是Hello程序的主程序main:n int main(int argc, char* argv)n n SayHello();/调用SayHello函数n SayGoodbye(); /调用SayHello函数n return 0;n 1.3.1 主程序nHello程序执行的事件序列为:n main开场执行。n main调用函数SayHello。n 执行SayHello函数,首先打印“Hello, World!,回车换行,接着打印“他真聪明, 他曾经会用C+编写程序了!,回车换行。 n 回到main函数中

14、。n 调用SayGoodbye函数。n 执行SayGoodbye函数,打印“Bye, 朋友!,回车换行。n 回到main函数。n 执行return 0语句,函数前往值0,程序终了。1.3.1 主程序n在main 函数中,int argc和char* argv是main函数的参数,main 函数中的参数是C+系统规定的,普通可以省略,main函数参数的作用本书没有用到,这里不做详细引见。 n以后的程序可以省略main 函数中的参数,改为main()。1.3.2 函数nC+程序是由假设干个文件组成的,每个文件又是由假设干个函数组成的。因此,可以以为C+的程序就是函数串,即由假设干个函数组成,函数与

15、函数之间是相对独立的并且是平等的,函数之间可以调用。 n调用其它函数的函数称为主函数,被其它函数调用的函数称为子函数。n在组成一个程序的假设干个函数中,必需有一个并且只能有一个是主函数main()。 1.3.2 函数n执行程序时,系统先找到主函数,并且从主函数开场执行,其它函数只能经过主函数或被主函数调用的函数进展调用。函数的调用是可以嵌套的,即在一个函数的执行过程中可以调用另外一个函数。n函数要先阐明后调用,函数是用函数原型进展阐明的。 1.3.2 函数n在Hello程序中,“void SayHello();和“void SayGoodbye();两行是函数原型。函数原型阐明只需求函数头和分

16、号。 nC+程序中的函数可分为两大类,一类是用户本人定义的函数,另一类是系统提供的函数库中的函数。运用系统提供的函数时,可以直接调用,但需求将包含该函数的文件阐明为头文件,包含到该程序中。SayHello和SayGoodbye都是用户定义的函数。1.3.3 输入输出n程序是由语句组成的,输入输出语句是C+最根本的语句。 n输出语句:cout是C+言语中的规范输出流对象,就是计算机显示器,而“是cout中的运算符,表示把它后面的参数输出到计算机显示器。n 例如:cout Bye, 朋友! 是cin中的运算符,表示从键盘读入数据存放到它后面的参数中。n 例如:cinxy; n 表示从键盘输入数据,

17、第一个数据存入x中,第二个数据存入y中。1.3.4 头文件n在C+程序中,#include指令是C+运用的预处置指令,称作预处置器,预处置器是在编译器运转前执行的程序。 #include包含的文件称作头文件。 nC+言语包含头文件的格式有两种。n 第一种为:#include n 第二种为:#include 文件名.扩展名 1.3.4 头文件n#include n 编译器是在C+系统目录中查找。这种包含方法常用于规范头文件。例如Hello程序中包括的iostream.h。n#include 文件名.扩展名 n 编译器首先在用户编写程序的当前目录中查找,然后再在C+系统目录中查找。例如:Hello

18、程序中包括的Stdafx.h。 1.3.5 注释n程序中的注释只是为了阅读程序方便,专门给人看的,注释并不添加执行代码的长度,在编译时注释被当作空白行跳过。 nC+言语中有两种书写程序注释的方法。n 1双字符“/*开场,并以双字符“*/终了。n 2双字符“/表示注释的开场,该注释到它所 在行终了处终止 1.4 例题分析和小结例题分析和小结1.4.1 例题1.4.2 解题分析1.4.3 小结1.4.1 例题 【例【例1.11.1】编写程序在显示器上显示:】编写程序在显示器上显示: 我爱计算机科学!我爱计算机科学! C+ C+是优秀的面向对象言语!是优秀的面向对象言语! 我喜欢学习我喜欢学习C+C

19、+。 再见!再见! 设计思绪:可以把程序分为设计思绪:可以把程序分为3 3段,段,“我爱计算机我爱计算机科学!是第一段,科学!是第一段,“C+C+是优秀的面向对象言是优秀的面向对象言语!我喜欢学习语!我喜欢学习C+C+。是第二段,。是第二段,“再见!再见!是第三段。分别对应函数是第三段。分别对应函数SayLove()SayLove(),SayCPP()SayCPP()和和SayBye()SayBye()。1.4.1 例题例1.1 程序如下 #include /函数原型阐明 void SayLove(); void SayCPP(); void SayBye(); /主程序 int main()

20、 SayLove();/调用SayLove函数 SayCPP();/调用SayCPP函数 SayBye();/调用SayBye函数 1.4.1 例题n例1.1 程序如下接上页n /函数定义n void SayLove()/定义SayLove函数n n cout我爱计算机科学!endl;n n void SayCPP()/定义SayCPP函数n n coutC+是优秀的面向对象言语!endl;n cout我喜欢学习C+。endl;n n void SayBye()/定义SayBye函数n n cout再见!endl;n 1.4.1 例题n【例【例1.21.2】有一个三角形,它的三条边长分别】有一

21、个三角形,它的三条边长分别为为6 6厘米、厘米、7 7厘米和厘米和8 8厘米,求三角形的周长。厘米,求三角形的周长。n设计思绪:先编写一个知三角形的三边边长求设计思绪:先编写一个知三角形的三边边长求三角形周长的函数,再用主程序调用这个函数。三角形周长的函数,再用主程序调用这个函数。1.4.1 例题n例2 程序如下n #include n /求周长函数原型阐明,该函数带有3个整型参数n int peri(int, int, int);n int main() /主程序n n cout“三角形的三边边长分别为:6厘米、7厘米、8厘米 endl;n cout三角形的周长为:peri(6,7,8)厘米

22、endl;n n / peri函数的定义n int peri(int x, int y, int z)n n return (x+y+z); /前往计算的三角形周长值n 1.4.1 例题n例2 程序的运转结果为:n 三角形的三边边长分别为:6厘米、7厘米、8厘米n 三角形的周长为:21厘米1.4.2 解题分析n解题分析包括以下几个方面:n 1 解题步骤n 2 模块化n 3 头文件n 4 注释1.4.2 解题分析n解题步骤:n 1首先要明确题意,搞清楚要完成什么义务n 2其次是分析义务的要求,规划怎样按标题的要求完成义务,就是下面要引见的模块化 n 3接着就可以编写程序、上机调试n 4最后检查程

23、序的运转结果,分析能否到达了预期目的的要求 1.4.2 解题分析n解题步骤流程图:1.4.2 解题分析n模块化:模块化就是将大的问题分成相对独立的小问题,构成小模块。n在例1.1中,讲的分段就是模块化,把它分成了三个模块。由于例1.1问题比较简单,也可以把它分成两个模块,也可以不分模块,直接在主程序中输出。 1.4.2 解题分析n例1.1 分成两个模块的程序如下:n #include /函数原型阐明void SayLove();void SayBye();/主程序int main()SayLove();/调用SayLove函数SayBye();/调用SayBye函数 /函数定义void Say

24、Love()/定义SayLove函数cout我爱计算机科学!endl;coutC+是优秀的面向对象言语!endl;cout我喜欢学习C+。endl;void SayBye() /定义SayBye函数cout再见!endl;1.4.2 解题分析n例1.1 分成一个模块的程序如下:n #include n /主程序n int main()n n cout我爱计算机科学!endl;n coutC+是优秀的面向对象言语!endl;n cout我喜欢学习C+。endl;n cout再见!endl;n 1.4.2 解题分析n头文件n 头文件是程序的一个重要组成部分,随着C+系统集成环境的开展和完善,系统函

25、数、类、对象等程序块越来越多,可以很好地利用它们是快速编制出高质量程序的关键。n如例1.1和例1.2中#include ,包含了iostream.h头文件,在iostream.h中阐明了规范的计算机显示器输出和规范的计算机键盘输入。1.4.2 解题分析n注释:注释虽然不影响程序的语义,但注释是程序的一个重要组成部分,不是可有可无的。正确的注释可以协助程序员阅读程序、了解程序。1.4.3 小结n本章简要引见了C+言语程序设计过程,论述了C+程序的编辑、编译、衔接、运转几个环节;以一个小程序Hello引出了C+程序的简单构造,讨论了C+程序的主程序、函数、输入输出、头文件、解释等重要部分;最后给出

26、了编写C+程序的普通步骤,并且引入了模块化程序设计思想。实训1 编制一个简单C+程序实训标题: 在VC+环境下,编制一个名为“Hello的程序,该程序在计算机显示器上显示下面的两段话: (1)Hello, World! 他真聪明, 他曾经会用C+编写程序了! (2)Bye, 朋友!实训要求: 1学会启动VC+系统。 2学会用VC+编写简单程序。 3编制Hello程序。 4调试Hello程序。 5运转Hello程序。习题 1n1.1 指出下面每行程序的作用。n #include n /主程序n int main()n ncout您好!endl;ncout欢迎您运用C+!endl;n n1.2 C

27、+程序中的注释有什么作用?如何运用C+中的两种注释方法?习题 1n1.3 指出下面程序的输出结果。n #include n int main()n ncoutHello!endl;ncout欢迎您,朋友!endl;n n1.4 编制程序输出:我是一名优秀的程序员。我喜欢用C+言语编写程序。 n1.5 知一个四边形的四条边长分别为:5厘米、6厘米、7厘米和8厘米,编写程序求四边形的周长。第第2章章 数据类型和表达式数据类型和表达式l 本章要点本章要点数据类型数据类型表达式表达式第第2章章 数据类型和表达式数据类型和表达式2.1 词法符号2.2 根本数据类型2.3 构造数据类型2.4 表达式2.5

28、 例题分析和小结2.1 词法符号词法符号2.1.1 标识符2.1.2 关键字2.1.3 常量2.1.1 标识符n在C+程序中存在一些实体,如后面将要讲到的变量、函数,程序员同样给它们起个名字。这种实体名字被称为标识符。nC+的标识符可以由以下的规那么构成 :n 1只能由英文字母、数字字符和下划线“_组成n 2第一个字符必需是英文字母或下划线 n 3在C+中字母的大写和小写是不同的 2.1.1 标识符n标识符举例:n1Abc、X1、x1、X1、_x1、x2、x3、desk、books等等都是合法的标识符,并且x1、X1、_x1是三个不同的标识符。 n25you不是合法的标识符 。2.1.2 关键

29、字n关键字是系统定义的特殊名字,是C+言语预先定义的词法符号,不能再由程序员声明做其它用途。 n常见的关键字:auto、break、cause、char、class、 const、continue、default、delete、do、double、 else、enum、explicit、extern、false、float、for、friend、goto、if、inline、int、long、mutable、 namespace、new、operator、private、protected、 public、register、return、short、signed、sizeof、 static、

30、struct、switch、template、this、throw 、 true、try、typedef、union、unsigned、virtual、 void、while上述这些关键字都是C+的保管字,用户不能再对其重新定义。2.1.3 常量n常量:在程序运转的整个过程中都不会发生变化的量 n定义方式:n1在程序的开场处运用语句:#define pi 3.1415926n2在程序中运用语句:const float pi=3.1415926;n常量类型:整型常量,实型常量,字符常量,字符串常量,布尔型常量2.1.3 常量n整型常量:就是以词法符号方式出现的整数,有三种表示方式:n1十进制,无

31、其它前缀,如-23、0、23、1327 n2八进制,为了与十进制数相区别,八进制整数以0开头,后面跟假设干个0-7的数字。如0123,它表示的十进制数为18228=83。n3十六进制,为了与十进制整数和八进制整数相区别,以0 x开头,后面跟假设干个09及a-f,a-f分别表示10-15。 2.1.3 常量n实型常量:称为浮点数,有两种表示方式: n(1) 定点数方式,如3.1415与平常书写实数的方式相 同,不同之处是在C+中小数点前的0可以省略,但小数点不可以省略。如:365.25,0.366,0.258,.258 n(2) 指数(浮点)方式,在C+中指数方式表示为: E n 数字部分是实数

32、,指数部分是整数,中间的E也可以为小写e。如2002103,在C+中记为2002E3或2002e3,代表其值是2002000,留意字母e(或E)前一定要有数字,其后一定要是整数 。2.1.3 常量n字符常量:是用单引号 括起来的一个字符,普通可显示在屏幕上,如 a、B、#、5、7、+等等。 n本义字符:是一种特殊的字符,是以打头的字符序列,表示其后的字符有特殊的意义。如 n中的n不是代表n,而是代表换行的意思。 2.1.3 常量n常见的本义字符如下表 2.1.3 常量n字符串常量:是用双引号“ 括起来的字符序列 ,如“abcd表示一个字符串常量,“A也是字符串常量,而A 是字符常量。n字符串常

33、量在计算机里是以 0表示一个字符串的终了,这个符号是计算机自动添加的,它只是占一个字节的存储空间,并不显示。2.1.3 常量n布尔型常量n 通常表示真假用布尔常量:false或0表示假,true或1表示真。2.2 根本数据类型根本数据类型n数据类型的概念是编写程序的根底,著名的计算机科学家沃思以为:数据构造+算法=程序n数据类型的简单分类如下:2.2 根本数据类型根本数据类型2.2.1 根本数据类型2.2.2 变量2.2.1 根本数据类型n下表列举C+中的根本数据类型 :2.2.1 根本数据类型nFloat,double是单精度和双精度的实型。nshort和long 修饰整型(int)时,表示

34、它们在计算机中的存储长度不同。他们修饰int时,可以省略,long也可以用来修饰double 。nsigned和unsigned这两个修饰符被用来表示有符号或无符号,前者表示一个数是带符号的,常被省略,而后者unsigned表示这个数是不带符号的。 nint型和bool型数据的长度是可变的,在不同的系统中情况不同,上表是在VC+6.0 中的。2.2.1 根本数据类型n自定义数据类型:数据类型既可以是系统定义的,又可以是用户自定义的。 n 例如:用关键字enum打头可以定义集合(color),语句enum color red,blue,white,black,purple就定义了新类型color

35、。 2.2.2 变量n变量:在程序的运转过程中其值可以改动的量变量:在程序的运转过程中其值可以改动的量 n变量必需变量必需“先定义,后运用,定义格式如下:先定义,后运用,定义格式如下:n ; ;n 或者或者 n ,;n 例如:例如:n char C;/定义了字符型变量定义了字符型变量Cn int i,j;/定义了定义了i、j两个整型变量两个整型变量n float x,y, MyData;/定义了定义了x、y、MyData三个三个实型变量实型变量2.2.2 变量n变量的赋初值:赋值语句放在变量的声明语如下:n int x=2002;/定义整型变量x,x的初值为整数2002n 或n int i(2

36、002);n 2.2.2 变量n变量存储:在程序的运转期间,系统会为每一变量存储:在程序的运转期间,系统会为每一个定义过的变量分配一定的内存空间,用于存个定义过的变量分配一定的内存空间,用于存放该变量的值,因此变量名也就代表了所分配放该变量的值,因此变量名也就代表了所分配的内存单元。当程序读取变量值的时候,实践的内存单元。当程序读取变量值的时候,实践上是经过变量称号找到变量所在的内存单元地上是经过变量称号找到变量所在的内存单元地址,然后从内存单元中读取数据。址,然后从内存单元中读取数据。 n假设定义了一个变量,系统就会根据该变量的假设定义了一个变量,系统就会根据该变量的数据类型,分配给它相应长

37、度的存储空间,变数据类型,分配给它相应长度的存储空间,变量也就与这一存储空间的地址相对应。量也就与这一存储空间的地址相对应。 2.2.2 变量n一个存储单元的地址与存储单元的内容是不同的两个概念。例如图中存储变量x的存储单元地址为1000,然而存储单元的内容是3.14,即变量x的值。2.2.2 变量n对变量的输入输出都是经过地址来进展的: n输出语句 coutx;的执行过程在上图中是:获得键盘输入的值,然后送到与变量x相对应的存储区从地址1000开场的四个字节中。n他们都是“直接的访问方式,即使用变量名访问对应的内存单元 。2.2.2 变量n指针变量指针变量 :一种:一种“间接的访问方式间接的

38、访问方式 n指针变量的定义格式为:指针变量的定义格式为: * * ; ; n 例如:例如:n int int * *p1;p1;/定义整型指针变量定义整型指针变量p1p1n int int * *t1,t1,* *t2;t2; /定义定义2 2个整型指针变量个整型指针变量t1t1和和t2t2n float float * *pointer, data;/pointer, data;/指针变量与普通变量放指针变量与普通变量放在一同定义在一同定义 n指针变量的取地址运算指针变量的取地址运算&: pointer=&x pointer=&x的意思是将的意思是将变量变量x x的地

39、址放入指针变量的地址放入指针变量pointerpointer中中 n * * 运算运算: :取地址所指存储单元的内容。取地址所指存储单元的内容。2.3 构造数据类型 构造数据类型是将一系列根本数据类型的变量,以不同方式组合在一同构成的新的数据类型。C+中的构造数据类型可分为数组类型、构造体类型和共用体类型。n2.3.1 数组n2.3.2 构造体类型n2.3.3 共用体类型2.3.1 数组n数组是一组具有一样数据构造的有序的数组是一组具有一样数据构造的有序的数据集合。它用一个一致的称号来表示,数据集合。它用一个一致的称号来表示,占用一片延续的内存空间。占用一片延续的内存空间。n数组中的每个元素都

40、有如下特征:数组中的每个元素都有如下特征:n (1) 数组中的每一个元素的数据类型都数组中的每一个元素的数据类型都一样;一样;n (2)每一个元素在数组中的位置,由数每一个元素在数组中的位置,由数组下标来确定,即由下标来独一标识数组下标来确定,即由下标来独一标识数组中的元素序号。组中的元素序号。 2.3.1 数组一维数组一维数组定义格式:定义格式: n ; 其中其中n是一个常量,是一个常量,和和是一对方括号,是一对方括号,方括号里面的数值表示数组元素的个数,方括号里面的数值表示数组元素的个数,;是语句终了符。例如:是语句终了符。例如:int a8;数组初始化:既可以对全部的元素赋予初数组初始化

41、:既可以对全部的元素赋予初值,也可以只对其中的一部分元素赋予值,也可以只对其中的一部分元素赋予初值。假设是对数组的全部元素赋初值,初值。假设是对数组的全部元素赋初值,那么数组定义语句中的常量表达式就可那么数组定义语句中的常量表达式就可以省略,编译器会根据初始值的个数自以省略,编译器会根据初始值的个数自动决议数组的大小。但假设只是给其中动决议数组的大小。但假设只是给其中一部分数组元素赋初值的话,那么常量一部分数组元素赋初值的话,那么常量表达式就不能省略,要指定数组的大小。表达式就不能省略,要指定数组的大小。 2.3.1 数组n数组赋值举例n例如 int a=21,42,31,64,53; 该表达

42、式定义一个含5个元素的数组,并全部赋初值n例如 int a10=21,42,31,64,53;定义了一个有10个整型元素的数组a,对前面的5个数组元素分别赋值为21、42、31、64和53,而后面的五个元素未被赋值,它们的初始值均隐含为0。 2.3.1 数组二维数组二维数组定义格式:定义格式: mn; 一个二维数组看作是一个其元素为一维数一个二维数组看作是一个其元素为一维数组的一维数组。组的一维数组。 如如 float a22定义了一个二维数组,定义了一个二维数组,如以下图可以把数组如以下图可以把数组a看作由看作由a0和和a1组成的一个一维数组,而组成的一个一维数组,而a0和和a1又又分别是包

43、含两个元素的一维数组。分别是包含两个元素的一维数组。2.3.1 数组n二维数组的存储顺序:在二维数组的存储顺序:在C+中二维数组是按行的顺中二维数组是按行的顺序存储的,即先存放第一行的元素,再存放第二行的序存储的,即先存放第一行的元素,再存放第二行的元素,依次类推。元素,依次类推。 n二维数组的初始化:方法与一维数组的初始化根本是二维数组的初始化:方法与一维数组的初始化根本是类似的。类似的。n int a22=1,2,3,4;n int a22=1,2,3,4;n int a2=21,32,53,48,17,26; n【例【例2.1】定义一个】定义一个26行行18列的二维实数数组。列的二维实数

44、数组。n float x2618; 2.3.1 数组字符数组字符数组字符数组字符数组 :用来存放字符的数组,其中每:用来存放字符的数组,其中每一个元素存放一个字符。字符以一个元素存放一个字符。字符以ASC码的方式存储在数组单元中。码的方式存储在数组单元中。 定义格式:定义格式:char 常量表达式常量表达式【例【例2.2】定义一个】定义一个256个字符的数组。个字符的数组。 char a256; 2.3.1 数组n字符数组初始化:如 char a =boy; n运用字符数组的元素有两种方法:n 一次援用字符数组的一个元素,得到一个字符。 n 可以把字符数组作为整体进展输入和输出,在系统定义的字

45、符串的处置函数中,是把字符数组当作一个整体来处置的。如:char a =boy;2.3.1 数组n常用的C+的字符串处置函数 u1strcat(字符数组1,字符数组2) :u strcat函数衔接两个字符数组中的字符串,把字符数组2表示的字符串接到字符数组1表示的字符串的后面,并将结果存放到字符数组1中。2.3.1 数组【例2.3】strcat函数例如及图示。#include#includevoid main() char a16= boy;char b= and ;/and前后各有1个空格char c=girl; strcat(a,b);strcat(a,c);couta;那么在屏幕上得到结

46、果:boy and girl调用strcat过程的表示 2.3.1 数组n strcpy(字符数组1,字符数组2) n strcpy是字符串拷贝函数,将字符数组2中的字符拷贝到字符数组1中。要求字符数组1必需有存放一切字符的空间。 n strlen(字符数组)n strlen()函数用来计算字符串的长度,该函数计算长度时不包括字符串终了符0在内。 2.3.2 构造体类型n构造体类型的定义:n struct n n ;n 其中struct是定义构造体类型的关键字,成员列表包括假设干个: ;n留意的是对各个成员都要进展类型阐明 2.3.2 构造体类型n【例2.4】定义一个表示时钟的构造体。n 可以

47、定义为: struct Clock n int S,F,M;n 其中S,F,M分别表示时,分,秒,即时钟属性n【例2.5】定义dress类型的变量。n 第一种方法是: dress dress1,dress2;n 第二种方法是在定义类型的同时定义变量。n struct n char color10;n int size;n float price;n dress1,dress2; 2.3.2 构造体类型n援用一个构造体变量的成员的方法:n .,“.称为成员(或分量)运算符。n构造体变量初始化:例如:Clock c1=8,48,35,表示声明了时钟变量c1,并且c1.S=8、c1.F=48、c1.

48、M=35 n可以定义构造体数组:如:dress dressarray30;2.3.3 共用体类型n共用体类型几个变量共用一个内存地址 ,同一时辰只能存放一个变量,新放入的变量总是把以前的变量给覆盖了,因此只需最后一个放入的变量是有效的。n共用体定义方式:n union n n ; n Union为关键字,成员列表包括假设干个: ;2.3.3 共用体类型n【例2.6】定义一个共用体及其变量。union example int i; char ch; double d; ;example x;或union example int i; char ch;double d; x;2.4 表达式表达式n

49、C+表达式 :用运算符和括号将操作数衔接起来的,这样得到的符合C+语法规那么的式子n2.4.1 算术表达式n2.4.2 关系表达式n2.4.3 逻辑表达式 2.4.1 算术表达式nC+C+中提供如下一些算术运算符:中提供如下一些算术运算符:n + +表示表示加加或或正正两种运算。两种运算。 n 表示表示减减或或负负两种运算。两种运算。n * *表示两个数相乘。表示两个数相乘。 n / /表示两个数相除。表示两个数相除。 n % %取余数运算,又称为取模运算,也就是取除取余数运算,又称为取模运算,也就是取除法的余数,它要求两个运算数均为整型数据。法的余数,它要求两个运算数均为整型数据。 n单目运

50、算符只需求一个操作数,如:单目运算符只需求一个操作数,如:+35+35n双目运算符需求二个操作数,如:双目运算符需求二个操作数,如:257+12257+12n算术运算符的优先级:算术运算符的优先级:+(+(正值运算符正值运算符) )和和(负值运算负值运算符符) )优先级最高;优先级最高;* *、/ /和和% %优先级次高;优先级次高;+(+(加法加法) )和和(减法减法) )优先级最低。优先级最低。 2.4.1 算术表达式n【例【例2.72.7】表达式及运算符的优先级。】表达式及运算符的优先级。 nvoid main()void main()/程序程序n int i=4,j=6,k=8;int

51、 i=4,j=6,k=8;n int x; int x;n x=i+j-k; x=i+j-k;/结果为结果为2 2n coutx = xendl; coutx = xendl;/输出输出x = 2x = 2n x=i+j x=i+j* *k;k;/结果为结果为5252n coutx = xendl; coutx = xendl;/输出输出x = 52x = 52n x= (i+j) x= (i+j)* *k/2;k/2;/结果为结果为4040n coutx = xendl; coutx = xendl;/输出输出x = 40 x = 40n x= 25 x= 25* *4/2%j;4/2%j;

52、/就是就是50%j=50%650%j=50%6,结果为结果为2 2n coutx = xendl; coutx = xendl;/输出输出x = 2x = 2n coutx = (+x)endl; coutx = (+x)endl;/输出输出x = 3x = 3n coutx = (+x)endl; coutx = (+x)endl;/输出输出x = 4x = 4n x=j x=j* *k; k; /结果为结果为4848n x; x; / /结果为结果为4747n coutx = xendl; coutx = xendl;/输出输出x = 47x = 47n 2.4.1 算术表达式n自增+与自

53、减 有两种运用方式:n 1前缀方式,即它们在操作数之前,如-i,+in 2后缀方式,即它们在操作数之后,如i-,i+ n前缀方式是先增(减)1,后被援用,后缀方式是先被援用,后增(减)1。 2.4.1 算术表达式n【例【例2.82.8】单目运算符】单目运算符+和和-。nvoid main()void main()n int x,y;int x,y;nx=3;x=3;ny=5y=5* *(+x);(+x); /y /y的值为的值为2020,x x的值为的值为4 4ncoutx = xendl;coutx = xendl;/输出输出x =4x =4ncouty = yendl;couty = ye

54、ndl;/输出输出y =20y =20nx=3;x=3;ny=5y=5* *x+;x+; /y /y的值为的值为1515,x x的值为的值为4 4ncoutx = xendl;coutx = xendl;/输出输出x = 4x = 4ncouty = yendl;couty = yendl;/输出输出y =15y =15nx=3;x=3;ny=5y=5* *( x);( x); /y /y的值为的值为1010,x x的值为的值为2 2ncoutx = xendl;coutx = xendl;/输出输出x = 2x = 2ncouty = yendl;couty = yendl;/输出输出y =

55、 10y = 10nx=3;x=3;ny=5y=5* *x ;x ; /y /y的值为的值为1515,x x的值为的值为2 2ncoutx = xendl;coutx = xendl;/输出输出x =2x =2ncouty = yendl;couty = yendl;/输出输出y = 15y = 15n 2.4.2 关系表达式nC+中提供了六种关系运算符:n (小于),(大于),=(大于等于),= =(相等),!=(不相等)n上述的六种关系运算符都是双目运算符,且结合性都是从左到右的。前四种的运算符优先级一致,后两种的运算符优先级一致,且前者的优先级高于后者,但一切这六种运算符的优先级别都低于

56、算术运算符。n关系运算符的作用是对两个操作数进展比较,比较的结果是一个逻辑值,即true或false。 2.4.3 逻辑表达式nC+C+中提供了三种逻辑运算符:中提供了三种逻辑运算符:&(&(逻辑与逻辑与) )、|(|(逻辑逻辑或或) )、!(!(逻辑非逻辑非) )。 n它们的特点是它们的特点是 :n (1) & (1) &与与|为双目运算符,是从左到右结合的;为双目运算符,是从左到右结合的;n (2) ! (2) !为单目运算符,是从右到左结合的;为单目运算符,是从右到左结合的;n (3) (3) 在这三个逻辑运算符中,逻辑非的优先级最高,在这三个逻辑运算符中

57、,逻辑非的优先级最高,逻辑与次之,逻辑或最低。算术运算符、关系运算符逻辑与次之,逻辑或最低。算术运算符、关系运算符的优先级高于逻辑与、逻辑或运算符,但低于逻辑非。的优先级高于逻辑与、逻辑或运算符,但低于逻辑非。n (4) C+ (4) C+不提供逻辑类型,只能用不提供逻辑类型,只能用“非非0 0与与“0 0来来表示表示“真与真与“假。通常逻辑表达式用假。通常逻辑表达式用intint类型的类型的“1 1与与“0 0分别代表分别代表“真与真与“假。假。2.4.3 逻辑表达式n逻辑运算符的运算规那么如下表:2.4.3 逻辑表达式n【例2.9】逻辑表达式。nvoid main()n int x=3,y

58、=5,z; /普通用整型变量表示bool量true和falsenz=(x0)|(y10); /z=1表示truenz=(x= =0)&(y10);/z=0表示falsenz=!(x= =3);/z=0表示falsen2.4.4 运算顺序n运算符的优先级和结合性,如下:2.4.4 运算顺序n【例【例2.102.10】分析以下的程序。】分析以下的程序。nvoid main()void main() / /调查表达调查表达式的运算顺序式的运算顺序n int x;int x;n x=3x=3* *8+15/328%5;8+15/328%5;/x=24+(-5)-/x=24+(-5)-3=163

59、=16n coutx = xendl; coutx = xendl;/输出输出x =16x =16n x=24/8 x=24/8* *4+516/234+516/23* *7; 7; /x=12+5-8-/x=12+5-8-21=1221=12n coutx = xendl; coutx = xendl;/输出输出x=12x=12n n屏幕显示输出为:屏幕显示输出为:nx=16x=16nx=12 x=12 2.4.4 运算顺序n自动类型转换:在计算含有不同类型操作数的表达式时,编译器自动类型转换:在计算含有不同类型操作数的表达式时,编译器会自动进展类型转换,转化如以下图:会自动进展类型转换,转

60、化如以下图:n留意:留意:float型的操作数只需参与运算,一定先转换为型的操作数只需参与运算,一定先转换为double型型的操作数,而的操作数,而short型和型和char型的操作数一定先转换为型的操作数一定先转换为int型的操型的操作数,这是横向箭头所表示的内容。作数,这是横向箭头所表示的内容。 2.4.4 运算顺序n逻辑运算符和关系运算符由于所要求的操作数为bool型,假设其它类型数据参与这两种运算,那么转换的方法是:非0的数据转换为true,0转换为false。实践上,C+中true是用1表示,false是用0表示。n赋值运算要求其左右两边的操作数的类型是一致的,假设不一致,那么一概将右边值的类型转换为左边值的类型。n这种转换由于数据精度没有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论