ImageVerifierCode 换一换
格式:DOCX , 页数:54 ,大小:58.32KB ,
资源ID:9714849      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9714849.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++讲义.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++讲义.docx

1、C+讲义5复合赋值操作符:这是一种赋值运算与数学运算组合的操作符。P28+=(加赋值)、-=(减赋值)、*=、/=、%=例:int myAge=5,temp;temp=myAge+2;myAge=temp;上述程序(23行)可改写为:myAge+=2;表示将右值与左值相加,并将结果重新赋给左值。6增1减1操作符(自加与自减)增1运算符(+)便变量的值增加1;减1运算符(- -)使变量的值减少1;如c+;相当于c=c+1;也相当于c+=1;(1)前增(前减):+i或-i,又称为前置,是提取变量的值前先对变量增1(或减1),然后在参与表达式的计算,如:int x=5;int a=+x;先将x的值增

2、1,再赋给a,其结果x与a的值均为6。(2)后增(后减)又称为后置,如 c+或c-,是先取值参与表达是的运算,然后再增1或减1,如:int x=5;int a=x+;先取x的值赋给a,然后x增1结果为a的值是5,x的值是6。 P34练习7Sizeof操作符:用于获得数据类型所占空间的字节数。格式:sizeof (类型修饰符)或(表达式)实P20 1-18逻辑型数据与逻辑表达式:逻辑型数据用于表达条件判断的结果,其值为“真”或“假”true或false,在内存中占1字节。(1) 关系操作符和关系表达式:=等于、!=不等于、=、=、b)?a:b;表达式1或表达式2本身也可以是表达式,即条件表达式可

3、以嵌套。例:x0?1:(x0?-1:0)在用于简单判断时,条件表达式比if语句要简洁。9运算符的优先级:!非 高算术运算符关系运算符&和|条件运算符(三目运算符)赋值运算符 低10表达式的副作用:C+中有意识地引入副用用机机制,在使用带有副作用的运算符时,不但要提取变量的值,还可以改变他们的值。如k+=2逗号操作符与逗号表达式:格式:表达式1,表达式2其值为表达式2的值。如x=(k+,j),结果为j的值,表达式中的括号不能省略,逗号表达式常用于for语句中。P48练习第三章 C+程序的流程控制一、流程控制与程序结构1 顺序结构:2 条件分支结构:3 循环结构:二、条件分支结构1 If语句格式:

4、if(条件)语句1else语句2a) 如果“条件”成立就执行语句1,否则执行else后的语句。b) if语句中的条件可以是一个逻辑表达式,如果不是逻辑表达式,则0值转换成false,非0值将转换成ture。c) if语句中的语句1和语句2可以是复合语句(多于一条语句),如果是复合语句要包括在 中,而且 中的每条语句的结尾都要有“;”但 本身不需要“;”。P55 例3-1if语句可以嵌套:if语句中的语句1和语句2本身也可以是if语句。Else总是和它最近的if对应。P56 3-2、P57 3-4、P58 3-5P57 3-4 练习3-5#includevoid main() int a,b,c

5、,d,t; coutabcd; if(ab) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(ad) t=a;a=d;d=t; if(bc) t=b;b=c;c=t; if(bd) t=b;b=d;d=t; if(cd) t=c;c=d;d=t; coutendlmax:; couta b c d; P58 3-5 实验3-4#include void main() float a,b,c; coutab; if (a50) cout40) cout40*b+(a-40)*1.5*b; else couta*b; d) 多分支结构:if多分支结构是特指一种通过规范化的i

6、f嵌套所构成的条件分支结构,在这样的结构中if语句嵌套在else之后。P61 3-62 用switch实现多分支结构格式:switch(整型表达式) case 整型表达式1:语句序列1 case 整型表达式n:语句序列n default 语句序列n+1功能:逐个判定表达式的值是否与整型常量表达式的值相等(这种比较只能是相等的情况,而不是相当于关系运算或逻辑运算的比较),如果相等即执行后面的语句序列,遇到break跳出switch语句。如果都不相等则执行default后面的语句序列。P63 3-7 P64 3-8a) 整型表达式如果不是整型将被自动转成整型(通常是一个整型常量);b) 按顺序执行

7、;c) 语句序列可以是空语句;d) break的作用是跳出switch语句;三、循环结构1 for循环格式:for (循环初始化;循环条件;循环参数调整)循环体功能:先对循环变量赋初值,如果其值满足循环条件就执行循环体,然后循环条件比较,如果仍然满足,则继续执行循环体,然后再调整,直到不满足循环条件为止。P68 3-9a) 循环初始化和循环参调整应当是具有副作用的表达式;b) 其中循环参数的调整应能趋向于循环结束,否则将形成死循环;c) 循环条件应是一个逻辑表达式;d) 应注意for语句中各部分执行顺序;for(int a=1;a=10;a+);couta;e) 循环体可以是单语句也可是复合语

8、句,如果是复合语句要加 例P68 3-9、P69 3-10、P70 3-112 While循环格式:while (循环条件) 循环体功能:先判断循环条件是否成立,如果成立则执行循环体P71图3-11,一切用for实现的语句也可以用while语句实现。将例3-9改为用while语句实现例3-12、3-12(2)、例3-13、3-143 do-while循环格式:do 循环体while(循环条件)功能:先执行循环体,然后判断循环条件,如果判断结果为真,则继续执行循环体,因此循环至少被执行一次。P75 例3-154 Break和continue的使用:是在循环体中使用的控制语句。Break语句的功能

9、是强制退出循环。Continue是结束本次循环,返回循环的开始部分,进入下一次循环。(注意二者的区别)例 3-165 Goto语句功能:转移到指定标号。格式:goto标号;标号定义格式:标号:语句 (标号的第一个字母必须是字母或下划线)例:计算1到100的和:#inclue void main()int a=1,sum=0;loop:if(a=100)sum=sum+a;goto loop;coutsum;第四章 数组数组类型是一种构造型(组合型)的数据类型。数组是由一组具有相同数据类型的元素组成的集合。数组的类型就是这组元素的数据类型。构成数组的这组元素在内存中占用一组连续的存储单元。可以用

10、一个统一的数组名标识这一组数据,而用下标来指明数组中各元素的序号。根据数组的维数,分为一维数组、二维数组和多维数组,常用的是一维和二维数组。 一、一维数组1一维数组的定义和初始化格式:类型 数组名常量表达式; 其中,类型是数组类型,即数组中各元素的数据类型,可以是整型、浮点型、字符型等基本类型。数组名是一个标识符,代表着数组元素在内存中的起始地址,它的命名规则与变量名的命名一样。常量表达式又称下标表达式,表示一维数组中元素的个数,即数组长度(也称为数组大小),用一对方括号“ ”括起来。方括号“ ”的个数代表数组的维数,一个方括号表示一维数组。 例如:下面分别定义了一个具有5个元素的字符型数组a

11、和一个具有10个元素的整型数组b: char a5; int b10; 对上面定义的数组b,也可以采用下面这种定义方法: const int size=10; int bsize;又如 #define f 100 int a=f,f+1,f+2,f+3; 注意:在定义数组时,不能用变量来描述数组定义中的元素个数。例如,下面的定义方式是不合法的: int bn; 下标指明了数组中每个元素的序号,下标值为整数,用数组名加下标值就可以访问数组中对应的某个元素。下标值从0开始,因此对于一个具有n个元素的一维数组来说,它的下标值是0 n-1。例如,对上例中定义的数组b来说,b0是数组中的第一个元素,b1

12、是数组中的第二个元素,b9是数组中的最后一个元素,而不包含b10。 数组元素在内存中是顺序存储的。对于一维数组,就是简单地按下标顺序存储。 例如,对上面定义的整型数组b,在内存中的存放顺序如图所示:一维数组的初始化:在定义数组时对其中的全部或部分指定初始值,这称为数组的初始化。只有存储类别为静态的或外部的数组才可以进行初始化。初始化的语法格式为: 类型 数组名 数组范围 =值1,值2,值n 例如:对定义的数组a进行初始化。 char a5=a,b,c,d,e; 或: char a =a,b,c,d,e; 在对数组初始化时,也可以只对数组中的部分元素指定初始值。也即,初始化值的个数可以少于或等于

13、数组定义的元素的个数,但不可以多于数组元素的个数,否则会引起编译错误。 当初始化值的个数少于数组元素个数时,前面的元素按顺序初始化相应的值,后面不足的部分由系统自动初始化为零(对数值数组)或空字符0(对字符数组)。例如: int c5=1,2; 定义整型数组c有5个元素,但只初始化前两个元素:c0=1,c1=2。对于后面的三个元素没有定义初始值,此时由系统自动给它们赋0。 当数组长度与初始化元素的个数不相等时,数组长度不能省去不写,如上例不能写为: int c =1,2; 否则编译器会认为数组c只有2个元素而不是5个元素。对于字符型数组的初始化,除了上面介绍的将数组中的元素一个一个赋值为字符的

14、方式外,还可以有另外一种方式,即将整个字符型数组一次性赋值为一个字符串,此时花括号可以省略。例如,下面三种初始化赋值方式是等价的: char d6= h , e , l , l , o , 0 ; char d6=”hello”; char d6=”hello”; 后两种方法比较符合用户的习惯。 要注意的是:单个字符用单括号括起来,而字符串用双括号括起来,组成字符串的字符除显示给出的外,还包括结尾处标识字符串结束的符号0。所以上例中的字符串“hello”实际上包含6个字符:h,e,l,l,o,0 。如果将上例定义成如下形式就错了: char d5=”hello”; 或 char d5=”hel

15、lo”; 此时,最后一个字符0未能放入d数组中,而是存放到d数组之后的存储单元中。这种错误编译器检查不出来,但由于改写了数组空间以外的内存单元,就可能会破坏其他数据区或程序本身。在用户编写程序时,一定要注意避免这样的情况发生。 实P39 5-12数组的赋值(1)用“=”赋值 与数组元素的初始化不同,在给数组元素进行赋值时,必须逐一赋值。 例如:对于下述的数组初始化: int a3=1,2,3; 其等价的赋值形式如下: int a3; a0=1; a1=2; a2=3;若要在数组之间进行赋值,也只能一个一个元素地赋值。 例如:将上述数组a的值赋给另一个同样大小的数组b,可以利用下面的循环完成赋值

16、操作: for (i=0;i数组名; 或 cin数组名下标; 例如:对一个大小为5的字符型数组a赋值,可以用下列两种方式: char a5; cina;(3) strcpy(数组名1,数组名2); 包含在中 /将数组2中的字符串赋值到数组1中 例如: strcyp(str1,str2); 注意,上例不能写为: str1=str2; /不合法 3.数组元素的引用 数组在定义后即可引用。其引用形式为: 数组名下标 指明了引用数组名的数组中下标所标识的元素。下标可以是整常数或整型表达式(如果不是整型将强制转换成整型)。例如a2+1、ai+j等(i和j为整型变量)。例如: a2=10; /将10赋给数

17、组中的a2元素。 a5=a2; /将a2元素的值赋给a5元素 couta5; /打印a5元素的值 注意区分定义与引用形式上的相似与含义上的区分,定义时是指数组的大小空间;引用时是指引用下标标识的元素。 数组越界:在给数组元素赋值或对数组元素进行引用时,一定要注意下标的值不要超过数组的范围,否则会产生数组越界问题。因为当数组下标越界时,编译器并不认为它是一个错误,但这往往会带来非常严重的后果。 例如:定义了一个整型数组a: int a10; 数组a的合法下标为09。如果程序要求给a10赋值,将可能导致程序出错,甚至系统崩溃。 常用下面的式子确定数组的大小,预防数组越界情况的发生 。 假定对于一个

18、整型数组a,它的大小为: sizeof(a)/sizeof(a0) sizeof(a)表示求数组a在内存中所占字节数,使用上面这个式子,可以使数组大小计算在16位机器和32位机器之间移植。 例 4-1、4-1(2)、例 4-2、4-3、4-4二、二维数组1二维数组的定义:二维数组也称为矩阵,需要两个下标才能标识某个元素的位置,通常称第一个下标为行下标,称第二个下标为列下标。定义二维数组的语法格式为: 类型 数组名常量表达式1常量表达式2; 定义二维数组的格式与定义一维数组的格式相同,只是必须指定两个常量表达式,第一个常量表达式标识数组的行数,第二个常量表达式标识数组的列数。例如: int a2

19、3; 上面定义了一个a数组,它在逻辑上的空间形式为2行3列,每一个数组元素都是整型数据,因此a数组的各元素如下: a00 a01 a02 a10 a11 a12 /每一维的下标都是从0开始 二维数组中每个元素都是用下列方式标识: 数组名行下标列下标 二维数组在内存中的排列顺序是“先行后列”,即在内存中先存第一行的元素,然后再存第二行的元素。从数组下标变化来看,先变第二个下标,第一个下标先不变化(即i00,i01,i02),待第二个下标变到最大值时,才改变第一个下标,第二个下标又从0开始变化。 对于二维数组,可以把它看成是由多个一维数组构成的。例如上例:int a23;就可以看成是由两个形如in

20、t a3;的一维数组构成的。 由于二维数组在内存中是线性排列的,引用一维数组和引用二维数组都是引用相应存储地址的内容,因此可以计算出一个二维数组元素在对应一维数组中的顺序号,从而将对二维数组元素的引用转变为对一维数组元素的引用,这个过程称为“降维处理”(经常在向函数传递数组时用到)。 假设有一个m x n的二维数组a,其中第i行第j列元素aij在数组中的位置公式为: i*n+j+1 例如有一个3*4的矩阵a: a00 a01 a02 a03 a= a10 a11 a12 a13 a20 a21 a22 a23 a21元素在数组中的位置是2*4+1+1=10。即它在数组中是第10个元素。对一个a

21、ij元素,在它前面有i行(对a21来说它前面有两个整行),这i行共有i*n个元素。在aij所在行中,aij前面还有j个元素,因此在数组a中aij前面共有(i*n+j)个元素。那么aij就是第(i*n+j)+1个元素。如果顺序号从0算起,那么aij在a数组中的顺序号计算公式为i*n+j。a21的顺序号为2*4+1=9。即按从0算起的话,它的顺序号为9,或者说它前面有9个元素。2二维数组初始化:和一维数组一样,二维数组也能在定义时被初始化,只是要注意必须按照前面所讲的存储顺序列出数组元素的值。常见有如下一些初始化方式:(1)分别对各元素赋值,每一行的初始值用一对花括号括起来。例如: int a23

22、=1,2,3,4,5,6;1 2 34 5 6 将第一对花括号内的三个初始值分别赋给a数组第一行三个元素,第二对花括号内的三个初始值赋给第二行元素。数组中各元素为:(2)将各初始值全部连续地写在一个花括号内,在程序编译时会按内存中排列的顺序将各初始值分别赋给数组元素。例如 int a23=1,2,3,4,5,6; 数组中各元素为: 1 2 3 4 5 6(3)只对数组的部分元素赋值。例如: int a23=1,2,3,4; 数组共有6个元素,但只对前面4个元素赋初值,后面两个未赋初值,其值为0。数组中各元素为: 1 2 3 4 0 0(4)可以在分行赋初值时,只对该行中一部分元素赋初值,例如:

23、 int a23=1,2,1; 对第一行中的第一、二列元素赋初值,而第三个元素未赋初值。第二行中只有第一列元素赋初值。数组中各元素为: 1 2 0 1 0 0(5)二维数组定义的其它形式:若在定义数组时给出了全部数组元素的初值,则数组的第一维下标可以省略,但第二维下标不能省略。 例如:下面两种定义方式等价: int a23=1,2,3,4,5,6; int a 3=1,2,3,4,5,6; 编译器会根据元素的总个数分配空间,每行3列,共6个元素,故该数组行数为6/3=2行。 但上例不能写成: int a2 =1,2,3,4,5,6; 在分行定义时,也可以只对部分元素赋初值而省略第一维的下标。例

24、如: int a 4=1,2,3,4,5 该数组表示3行4列的整型数组,等价于下面的定义: int a34=1,2,0,0,0,0,0,0,3,4,5,0 P99 练习 例4-5,4-6三、多维数组的定义 类型 数组名常量表达式1常量表达式2常量表达式n; 由于大于三维的数组基本上不常用,所以在此以三维数组为例介绍多维数组。 例如:定义一个整型三维数组: int a234; 数组有24个元素,它们在内存中排列顺序跟二维数组类似:先变化第三个下标,然后变化第二个下标,最后变化第一个下标。 对于三维数组,可以把它看成是由多个二维数组构成的。依此类推,一个n维数组可以看成是由多个n-1维数组构成的。

25、 多维数组初始化 以三维数组初始化为例: int a234=1,2,3,4,5,6,7,8,9,10,11,12, 13,14,15,16,17,18,19,20,21,22,23,24; 由于第一维的大小为2,可以认为a数组有两个二维数组组成,每个二维数组为3行4列。因此初始化时,按每个二维数组按行给初值的方法,分别用花括号把各行元素值括起来,并且将三行的初值再用花括号括起来。 例如:1,2,3,4,5,6,7,8,9,10,11,12是第一个二维数组的初值; 同样,13,14,15,16,17,18,19,20,21,22,23,24是第二个二维数组的初值。当然也可以不必用这么多的花括号,

26、而把三维数组中全部元素连续写在一个花括号内,按元素在内存中排列顺序依次赋初值。例如:static int a234=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, 17,18,19,20,21,22,23,24;5.3.3 省略第一维大小 多维数组也可以省写第一维的大小,以上面定义的三维数组a为例,定义也可改写为: int a 34=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, 17,18,19,20,21,22,23,24; 系统会根据初值个数,算出第一维的大小为: 24/(3*4)=2。 在分行定义时,也可以只对部分元素赋初值而省略第一维的下标。例如: int a 32=1,2,3,5,0,7,8,10; 显然这是一个三维数组,大小为2*3*2。等价于下面的定义: int a232=1,2,3,0,5,0,0,7

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1