培训课件:C++简单程序设计.ppt

上传人:文****钱 文档编号:49493 上传时间:2018-05-24 格式:PPT 页数:124 大小:772.50KB
下载 相关 举报
培训课件:C++简单程序设计.ppt_第1页
第1页 / 共124页
培训课件:C++简单程序设计.ppt_第2页
第2页 / 共124页
培训课件:C++简单程序设计.ppt_第3页
第3页 / 共124页
培训课件:C++简单程序设计.ppt_第4页
第4页 / 共124页
培训课件:C++简单程序设计.ppt_第5页
第5页 / 共124页
点击查看更多>>
资源描述

1、第二章C+简单程序设计,C+语言程序设计,2,本章主要内容,C+语言概述(熟悉)基本数据类型和表达式(重点)数据的输入与输出(熟悉)算法的基本控制结构(重点)自定义数据类型(了解),3,C+语言的产生,C+出于C而胜于C引入类机制,最初被称为“带类的C”1983年正式取名为C+从1989年开始C+语言的标准化工作1994年制定了ANSI C+标准草案1998年11月被(ISO)批准为国际标准,C+语言概述,4,C+的诞生,C+的创始人:Bjarne stroustrup (AT&T Bell实验室),5,C+的特点,全面兼容C它保持了C的简洁、高效和接近汇编语言等特点对C的类型系统进行了改革和

2、扩充C+也支持面向过程的程序设计,不是一个纯正的面向对象的语言支持面向对象的方法,C+语言概述,6,C+程序实例例2-1,/2_1.cpp#include using namespace std;int main() coutWelcome to c+!endl; return 0;运行结果:Welcome to c+!,C+语言概述,7,C+程序的组成,程序主体函数、类(数据成员、成员函数)程序总是从main函数开始执行,而不论main函数在整个程序中的位置如何。语句以英文分号结束;书写格式自由预处理命令以#开头的语句注释单行 /多行 /* */ (C语言原有的注释方式),8,C+字符集,大

3、小写的英文字母:AZ,az数字字符:09特殊字符:空格!#%.,:?( ) ,C+语言概述,9,词法记号,关键字C+预定义的单词标识符程序员声明的单词,它命名程序正文中的一些实体文字在程序中直接使用符号表示的数据操作符用于实现各种运算的符号分隔符 () , : ; 用于分隔各个词法记号或程序正文空白符空格、制表符(TAB键产生的字符)、换行符(Enter键所产生的字符)和注释的总称,C+语言概述,10,标识符的构成规则,以大写字母、小写字母或下划线_开始可以由以大写字母、小写字母、下划线_或数字09组成。大写字母和小写字母代表不同的标识符。 大小写敏感,C+语言概述,11,用户自定义标识符,合

4、法的: apple、_Student、_123、No1、max_num不合法的: 51job、max-num、abc$、 float、true 良好的标识符命名习惯 1、Unix常用的命名法 my_age、num_of_student 2、驼峰式命名法 myAge、numOfStudent 3、匈牙利标记法 iMyCar、bIsRight,12,2.2 基本数据类型,什么是数据类型? 数据是程序处理的对象,根据其本身的特点进行分类,形成不同的数据类型。 例:数学中有自然数、整数、实数基本数据类型 整型:int 字符型:char 实型:单精度float、双精度double 逻辑型:bool,13

5、,基本类型 有序型 字符型(char)整型(int、 short、long) 布尔型(bool)浮点型单精度型(float)双精度型(double) 构造类型枚举型(enum)数组结构体(struct)共用体(union)类(class) 指针类型,14,修饰符 在C+中描述为了更加准确的描述数据类型,提供了4个关键字用来修饰基本的数据类型: 1、长型 long 2、短型 short 3、有符号 signed 4、无符号 unsigned,15,1、short:仅用来修饰int,称为短整型,占2字节内存,也可直接简写为short;2、long: 仅修饰int和double,在不同的编译环境中使

6、用long修饰的数据所占内存不同。 3、unsigned: 用来修饰char、short和int,表示该数据类型为无符号数。 4、signed: 用来修饰char、short和int,表示该数据类型为有符号数,为缺省设置。,16,数据类型 整型数据及取值范围,类型说明符 位数数值范围短整short16-3276832767基本 int32 -231(231-1)长整long32-231(231-1)无符号unsigned short16065535 unsigned int320(232-1)unsigned long320(232-1),基本数据类型和表达式,17,数据类型和内存空间,不同的

7、数据类型,加上不同的修饰符,在内存中占用的空间不同,其所能表示的数值范围也不同。内存单元的单位是字节,因此用来表示数据类型的长度的单位也是字节。整型int的长度等于机器的字长: 16位机:int=2字节; 32位机:int=4字节。long int在32位系统中一般为4字节,但在64位系统一般位 8字节。float和double型数据的有效位数分别为6位、15位,18,unsigned int与signed int的比较,指定为signed的数据以补码形式存放,存储单元中的最高位(bit)用来表示数值的符号。指定为unsigned的数据,全部二进制位都用来表示数值本身。例:短整型数据占两个字节

8、,19,float 4字节 精度:3.41038 6位有效数字double 8字节 精度:1.710308 15位有效数字long double 8字节 精度:1.710308 15位有效数字,数据类型实型数据,实型常量:1.23默认为double型1.23F或1.23f为 float型1.23L为long double型,20,常量,1. 在程序运行过程中,值不能被改变的量称为常量。2. 文字常量是指可直接使用的常量。3. 文字常量分为整形、实型、字符型和字符串型常量。,21,常量,1整型常量(1)十进制整数,如:789, -456 (2)八进制整数,如:0102,-026 (3)十六进制整

9、数,如:0x789, -0xAB(4)长整型与无符号型整数 长整型整数,如:12L, 0234L,-0xABl 无符号型整数,如:12U, 0234U,0xABU,22,常量,2实型常量 在内存中以浮点形式存放,均为十进制数,无数制区分。(1)小数形式: 1.65,1.,.123(2)指数形式:1.23e5、1.23e-5、1e3,23,数据类型 字符型数据,字符常量单引号括起来的一个字符,如:a, D, ?, $字符变量用来存放字符例:char c1,c2; c1=a; c2=A;字符数据在内存中的存储形式以ASCII码存储,占1字节,用7个二进制位,基本数据类型和表达式,24,字符串常量例

10、:CHINA a a所以:char c; c=a;,数据类型 字符型数据,基本数据类型和表达式,25,转义字符,a 响铃(喇叭声)n 回车t向右跳过一个水平制表符nnn八进制数表示注意:每一位数字n=、=、=、a)3&2|84 true例3: 3&0&9 false例2、3涉及表达式短路概念:如果多个表达式用& 或 | 连接,为了提高判断效率,只要能够确定表达式的结果,运行就不再继续了。例4:闰年的判别:设年份为y,当下式为真时为闰年: y%4=0 & y%100 !=0 | y%400=0,38,增1、减1运算,运算符:+和-分别表示将操作数增1、减1 操作对象:整型或字符型变量根据操作数的

11、位置不同,分为前置和后置两种 +i 先自身加1,再将加1的值作为表达式的值i+ 将i作为表达式的值,然后自身再加1。 -i 先自身减1,再将加1的值作为表达式的值i- 将i作为表达式的值,然后自身再减1。结合性:从右向左,39,#include using namespace std;void main()int i =1; couti=iendl; couti+:i+endl; couti=iendl; cout +i:+iendl; couti=iendl; ,40,试一试:运行结果是什么?,#includeusing namespace std;int main()int i,j,x,y

12、;i=j=1;x=(+i)+(+i);y=(j+)+(j+);coutijxyendl;coutx+x+endl;return 0;,why?,1,2,41,赋值运算符和赋值表达式,赋值运算符:就是= 例如:float f=3.15左值:可以合法的放在=左边的操作数右值:可以合法的放在=右边的操作数常量为右值,所以不能放在=左边被赋值;变量既有左值又有右值,可以放在任何位置。左值是使用其地址,右值是使用其内容。,42,a=b=c=5 (赋值表达式值为5,a,b,c值均为5)a=5+(c=6) (表达式值为11,a值为11,c值为6)a=(b=4)+(c=6) 表达式值为10,a b c值为10

13、,4,6)思考:1)a=3,b=2; f=a=b; g=a=b; (连续赋值) f=? g=?2)执行(a=3*5)=4*3后,a的值是多少? 写成 a=3*5=4*3 可以吗?,43,赋值表达式,C+将赋值表达式作为表达式的一种,使赋值操作不仅可以出现在赋值语句中,而且可以以表达式形式出现在其他语句(如输出语句、循环语句等)中。这是C+语言灵活性的一种表现。注意:用cout语句输出一个赋值表达式的值时,要注意运算符与的优先级,保险的办法是将该赋值表达式用括号括起来。例:如果写成cout=,&=,=,|= 例a+=3 等价于 a=a+3x*=y+8 等价于 x=x*(y+8),基本数据类型和表

14、达式,46,逗号运算符与逗号表达式,逗号运算符,又叫顺序求值运算符优先级最低。 格式: 表达式1,表达式2,表达式n; 依次计算表达式1,表达式2,表达式n的值,并将表达式n的结果作为逗号表达式的结果例1:逗号表达式a=3*5, a*4的值? 60例2: int a, b, c, x, y; a=3, b=4, c=a+b; x=b+c, a; x值为11,表达式值为3 y=(b+c, a) y和整个表达式值都为3,47, x=(a=3,6*3) a值为3, x值为18 x=a=3,6*a a值为3, x值为3逗号表达式其实是把若干个表达式串联起来。使用逗号表达式是想分别得到各个表达式的值,而

15、并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于for循环语句中。在用cout输出一个逗号表达式的值时,要将该逗号表达式用括号括起来,如cout(3*5, 43-6*5, 67/3)b?a:b;,基本数据类型和表达式,49,sizeof 运算符,作用:获取不同数据类型或表达式所占据的字节长度格式:sizeof (类型名) 或sizeof (表达式)结果值:“类型名”所指定的类型或“表达式”的结果类型所占的字节数。例:sizeof (char) sizeof(bool) sizeof(float) sizeof(int) 、 sizeof(short)、 sizeof(long)比较

16、 sizeof(10+3.14),50,位运算按位与(&),运算规则将两个运算量的每一个位进行逻辑与操作举例: 计算 3 & 5 3: 0 0 0 0 0 0 1 1 5:(&) 0 0 0 0 0 1 0 13 & 5: 0 0 0 0 0 0 0 1,基本数据类型和表达式,51,位运算按位或(|),运算规则将两个运算量的每一个位进行逻辑或操作举例: 计算 3 | 5 3: 0 0 0 0 0 0 1 1 5:(|) 0 0 0 0 0 1 0 13 | 5: 0 0 0 0 0 1 1 1,基本数据类型和表达式,52,按位取反运算,按位取反是一个一元运算符,它的作用是将两个操作数对应的每一

17、位分别进行取反操作。 具体运算规则:1=0,0=1。 例如:计算5 5:0 0 0 0 0 1 0 1 5:1 1 1 1 1 0 1 0比较:!0与0的区别:cout!0endl;cout0 = = !=位运算:& |逻辑:& |三目:?:赋值运算:= += *= .逗号运算,低,高,基本数据类型和表达式,54,55,数据类型转换,数据类型转换 当表达式中出现多种数据类型的混合运算时,往往需要进行类型转换。表达式中的类型转换分成两种: 1、隐式类型转换(自动转换) 2、强制类型转换,56,混合运算时的类型转换,不同类型数据进行混合运算时,C+编译器会自动进行类型转换。为了避免不同的数据类型在

18、运算中出现类型问题,应尽量使用同种类型数据。可以采用强制类型转换:例如:float c;int a,b;c=float(a)/float(b); 或 c=(float)a/(float)b;,57,数据类型转换,1、隐式类型转换 各种二元运算符在进行运算时都要求两个操作数的数据类型一致。如果类型不一致,则系统自动对数据进行转换(隐式类型转换)。 转换的基本原则: 将精度较低、范围较小的类型转换成精度较高、范围较大的类型。 charshortintlongfloatdouble,58,赋值过程中的类型转换,赋值运算符要求=左右两边的操作数数据类型相同,如果类型不一致,则自动将右边的操作数类型向着

19、左边的操作数类型转换。(1) 将浮点型数据(包括单、双精度)赋给整型变量时,舍弃其小数部分。(2) 将整型数据赋给浮点型变量时,数值不变,但以指数形式存储到变量中。(3) 将一个double型数据赋给float变量时,要注意数值范围不能溢出。字符型数据赋给整型变量,将字符的ASCII码赋给整型变量。逻辑运算符要求参与运算的操作数为bool类型,如果是其他类型,则系统自动将其转换成bool类型,转换规则:0为false,非0为true。,59,例:将一个int、short或long型数据赋给一个char型变量,只将其低8位原封不动地送到char型变量(发生截断)。例如short int i=28

20、9;char c;c=i; /将一个int型数据赋给一个char型变量赋值情况如图。设short int型数据占2个字节,60,(6) 将signed(有符号)型数据赋给长度相同的unsigned(无符号)型变量,将存储单元内容原样照搬(连原有的符号位也作为数值一起传送)。例2.5 将有符号数据传送给无符号变量。#include using namespace std;void main( ) unsigned short a; short int b= -1; a=b; couta=aendl; ,61,运行结果为65535赋给b的值是-1,怎么会得到65535呢?-1的补码形式为11111

21、11111111111(即全部16个二进制位均为1),将它传送给a,而a是无符号型变量,16个位全1是十进制的65535。如果b为正值,且在032767之间,则赋值后数值不变。,62,数据类型转换,2、强制类型转换 通过类型说明符和括号来实现的显式转换式: 数据类型名(表达式) 例: int i=97; coutchar(i)endl; float f=3.75; coutint(f)endl;,63,数据类型转换,例1:计算球的体积 v=4.0/3*pi*r*r*r与 v=4/3*pi*r*r*r 的区别例2:1.0+3/2*4.0 是多少? 5.0例3:float a=1.6, b=2.8

22、; /隐式转换doublefloat int c, d; c=(int)a + b; /强制转换floatint d=(int)(a+b); /强制转换floatint coutcendl; /3 coutdendl; /4 coutaendl; /1.6,64,例:分数小数强制类型转换,#include using namespace std; int main( )cout 1 / 3 = (float)1/3 endl; cout 1 / 3 = float(1)/3 endl; cout 1 / 3 = float(1/3) 0)t=a; if(a=b;)0)t=a;返回语句 retu

23、rn 表达式空语句 只有语句结束符 ;的语句控制语句的种类: 分支、循环、转向,67,复合语句,将多个语句用一对大括号包围,便构成一个复合语句例如sum=sum+i;i+;,68,2.3 数据的输入输出,向标准输出设备(显示器)输出例:int x; coutx;1)从键盘输入时默认的分隔符为空格,也可以用回车、TAB键。2)不许在cin中加变量名以外的符号,例:逗号,69,顺序结构分支结构循环结构,算法的基本控制结构,70,选择结构,ifelse语句 1、没有else分支 2、双分支 3、多分支 4、if 语句的嵌套,71,if-else 语句,1、没有else分支 例:比较x和y的大小,如果

24、x大,则输出x的值if ( xy ) coutxy ) coutxendl;else coutyyear; if (year % 4=0 ,74,例:判断输入字符是否为数字,#include using namespace std;void main() char ch; coutch; if (ch= 0,75,if else 语句,3、多分支,if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; else 语句n;,76,77,例:输出学生的成绩,#include void main() int x; cinx; if(x=90) c

25、out=80) cout=60) cout合格endl; else cout不及格=0)if(x!=0) y=1; else y=0;else y=-1;或者:y= (x=0)?(x!=0)?1:0:-1;,81,例:输出a,b,c中较大的数,#include void main() int a,b,c; cinabc; if (ab) if (ac) coutc) coutbendl; else coutcc?a:c):(bc?b:c ) );,82,ifelse 语句,注意:二义性int a= -2, b=1, c=2;if (ab) if (b0) c=0; else c+;cout c

26、 endl;,编译系统将else与if(bx; switch(x/10) case 10: case 9:cout优秀endl; break; case 8: cout良好endl; break; case 7: case 6: cout合格endl; break; default: cout不及格 day;switch (day) case 0: cout Sunday endl; break; case 1: cout Monday endl; break; case 2: cout Tuesday endl; break; case 3: cout Wednesday endl; bre

27、ak; case 4: cout Thursday endl; break; case 5: cout Friday endl; break; case 6: cout Saturday endl; break; default: cout Day out of range ym; switch(m) case 1:case 3:case 5:case 7:case 8: case 10:case 12: d=31;break; case 4:case 6:case 9:case 11: d=30;break; case 2: d=(y%4=0,90,switch语句注意的问题,switch

28、后括号内的表达式只能是整型、字符型、枚举型等有序类型case 后面是常量表达式,不能含有变量名,各个case后面的表达式值要互不相同为了在匹配一种情形,执行结束后跳出switch语句,每个case最后都要添加break语句在每个case都有break的情况下,case次序对执行结果没影响多个case可以共用一组执行语句没有匹配项,则执行default语句,无default,则退出case 后面的语句不用 括起来,91,循环语句,为什么要用循环语句?三种循环语句1、 while 语句2、 dowhile 语句3、 for 语句,92,while 循环语句,包括3个部分:1、循环控制条件: 判断循

29、环操作是否进行的条件;2、循环体: 重复进行的操作;3、循环控制变量: 记录循环体执行的次数,或控制循环的结束条件。,93,while 循环语句,while循环语句格式,while(表达式) 循环体语句;,执行顺序先判断表达式的值,若为 true 时,执行语句。,94,例:编程循环输出1-9这9个数字?,#include using namespace std; void main() int i=1; while (i=9) coutiendl; i+; cout循环结束endl; ,运行结果:123456789循环结束,95,例2-5:编程计算1+2+3+10的值,#include using namespace std; void main() int sum=0, i=1; while(i=10) sum+=i; i+; coutsumendl; ,55,96,例:打印可视字符,#includeusing namespace std;void main() unsigned char ch=32; while(ch128) cout(int)chtchn; while(k0) coutsum/nendl;,

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 教育教学资料库 > 课件讲义

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。