已阅读5页,还剩74页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章数据表达与程序流程控制,简单对象的声明与使用,运算符,表达式,语句,预定义数据类型,数据的存储:存储空间分配和数据输入,数据的处理,结果数据的输出,函数,2.1 内部预定义类型,存储器组织 编译过的程序和数据都存储在计算机的存储器中。计算机的存储器按字节(Byte)编址,0xFFFFF0,0xFFFFF1,存储单元地址,内容,存储单元中的内容可以经常变化的。而地址相对不变。,字长 一台计算机用来表示一个整数(int)所需的字节数。字长一定,这台计算机中能表示的整数范围就确定。比如字长为4(即32位)的机器中,无符号整数(unsigned int)表示范围:04294967295。 00000000 00000000 00000000 00000000=0 00000000 00000000 00000000 00000001=1 00000000 00000000 00000000 00000010=2 00000000 00000000 00000000 00000011=3 11111111 11111111 11111111 11111111= 232-1=4294967295,一个数据存储在计算机中: 从哪个地址开始?占用几个字节?,01000001,A在机器中的表示,预定义基本数据类型:程序设计语言事先定义好,供程序员直接使用,不同类型的数据在内存中所占用的字节数不同,内部预定义或简单对象,通常用来表示复杂对象的属性。,C+的基本数据类型,基本类型 整型 短整型(short int) 整型(int) 长整型(long int) 字符型(char) 浮点型 单精度型(float) 双精度型(double) 长双精度型(long double),基本类型 布尔型(bool) 构造类型 枚举类型(enum) 数组类型 结构体类型(struct) 共用体类型(union) 类类型(class) 指针类型 引用类型 空类型(void),数据类型,C+并没有统一规定各类数据的精度、数值范围和在内存中所占的字节数,各C+编译系统根据自己的情况作出安排。 For examle:ch1/1-1.cpp,2.2 简单对象的声明与使用,任何对象,先声明,后读写,在高级语言中,通常不直接用存储器地址来标识存储空间,而用变量来表示,如: int number; /声明一个整型变量,变量名为number number = 1; /变量number的内容为1 number = 2; /变量number的内容可以覆盖 char ch; ch = A; ch = a;,标识符和关键字,对象名技术上称为”标识符”,C+语言的标识符规定由字母、数字以及下划线组成,且第一个字符必须是字母或下划线。 保留字(关键字): 它们是C+语言规定的、赋予它们以特定含义、有专门用途的标识符。比如: int、if、for等。,常量,在程序中不变的值。如: x = x + 123; 常量的值是不能改变的,一般从其字面形式即可判别是否为常量。常量包括两大类,即数值型常量(即常数)和字符型常量。如: 整型常量: 123 缺省为int型,十进制 0173 八进制的int型 0x53 十六进制的int型 123L(或123l) 为long int的十进制,字符常量: A 字符常量用单引号扩起来的单个字符。在内存中以ASCII码存储。故可以: int i = a; char ch = 97; ch = ch + 1;,字符常量-特殊打印字符: n 换行符 r 回到本行开始处 t 水平制表符 0 空字符 For exapme: ch1/1-2.cpp,字符串常量: “A” 字符 串常量用双引号扩起来的一系列字符。字符串在内存中总是以0空字符结束。,01100101,“A”在内存中的表示,0,实型常量: 4.6,-1.23 为double型十进制常量; .23 23. 47e-4 科学表示法 47*10-4 67.F(或67.f) 为float型十进制常量,C+的数据包括常量与变量,常量与变量都具有类型。由以上这些基本数据类型构成更复杂的数据结构_对象。比如: Washer , IceBox。,Class student private: int number; string name; string sex; string speciality; grade double; ;,例2.1:下面的程序用公式 C = (5/9) (F-3 2 ) 打印华氏温度与摄氏温度对照表: 0 -17 20 -6 40 4 60 15 Example 2,变量的声明与使用 在C+语言中,所有变量都必须先说明后使用。说明用于声明变量的性质(大小和操作),它由一个类型名与若干所要说明的变量组成,例如: int Fahrenheit,celsius; Fahrenheit = 10; 变量的赋值 int a=10; cina; 变量的输出 cout a;,2.3 运算符,算术运算符 + 单目正, +a - 单目负, -a + 二目加, a+b - 二目减, a-b * 二目乘, a*b / 对于两个整数,取整,如: 1/3=0 对于浮点数,就是普通除法 % 表达式x % y的结果是x除以y的余数,当y能整除x时,x % y的结果为0。,+ 增1运算 - 减1运算 例:int n=3,k; k = +n; /前缀增1,先加1后使用,k=4,n=4 k = n+;/后缀增1,先使用后加1 ,k=3,n=4 n=3; k = -n; /前缀减1,先减1后使用,k=2,n=2 k = n-;/后缀减1,先使用后减1 ,k=3,n=2,算术运算符的优先级和结合性,单目 + - + - 双目 * / % 双目 + -,右结合(从右向左),-5 + 3%2 = (-5) + (3%2) = -4 3 * 5 % 3 = (3*5) % 3 = 0 -i+,-(i+),左结合,关系运算符 比较两个操作数,比较的结果:真(true) 假(false) 大于 = 大于等于 小于 = 小于等于 = 恒等于 != 不等于,在C+中真与假的处理: 1)bool类型 bool a; a=false;/在内存中,假表现为0 a=true;/在内存中,真表现为1,int a=1,b=2,c; c=(ab); For example: ch2/2-8.cpp,逻辑运算符 & 逻辑与 (ab) & (cd) | 逻辑或 (ab) | (cd) ! 逻辑非 !a,表达式:由运算符和运算对象(操作数)组成的有意义的运算式子,它的值和类型由参加运算的运算符和运算对象决定。 运算符:具有运算功能的符号 运算对象:常量、变量和函数等表达式.,2.4 表达式,在表达式中常遇到不同类型数据之间进行运算,如 10+a+1.5-8765.1234*b 在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则按图所示。,2.4.1 表达式中各类数值型数据间的混合运算,水平方向:自动 垂直方向:低 高,A + 12 10.05 65 77 66.95,自动类型转换(赋值运算),变量 表达式 计算赋值运算符右侧表达式的值 将赋值运算符右侧表达式的值赋给左侧的变量,将赋值运算符右侧表达式的类型 自动转换成 赋值号左侧变量的类型,自动类型转换(赋值运算),double x; x = 1;,x = ?,short a = 1000; char b = A; long c; c = a + b;,c = ?,int ai; ai = 2.56;,ai = ?,short bi; bi = 0x12345678L,bi = ?,强制类型转换,强制类型转换运算符 (类型名) 表达式 (double)3 (int)3.8 (double)(5/2) (double)5/2,3.0 3 2.0 2.5,算术表达式、赋值表达式、关系表达式、逻辑表达式、条件表达式和逗号表达式等,2.4.2 各种表达式,算术表达式,例 数学式 C/C+表达式 s(s-a)(s-b)(s-c) (x+2)e2x,s*(s-a)*(s-b)*(s-c),(x+2)*exp(2*x),赋值表达式,赋值运算符 = x = 3*4; 优先级较低,结合性从右向左 x = y = 3; 等价于,x = (y = 3);,复合赋值运算符,赋值运算符 简单赋值运算符 = 复合赋值运算符 复合算术赋值运算符 += -= *= /= %= 复合位赋值运算符 赋值表达式: 变量 赋值运算符 表达式 x += exp ;等价于 x = x + exp; x *= y 3;,x = x * (y-3) ;,关系表达式关系运算符,比较两个操作数,比较的结果:真 假 x y x = y x != y 优先级 算术运算符 = = != 赋值运算符 左结合,a b = c d = a b ch a + 1 d = a + b c 3 = x = 5 b - 1 = a != c,(a b)= c d = (a b) ch (a + 1) d = (a + b) c) (3 = x) = 5 (b - 1) = a) != c,关系表达式,用关系运算符将2个表达式连接起来的式子 关系运算的结果 真 true 1(或非零值) 假 false 0 For example:ch2/2-8.cpp,逻辑表达式逻辑运算符,逻辑与 & 逻辑或 | 逻辑非 ! 例如: (ch = a & ch = A & ch = 3 & x = 5,逻辑表达式逻辑运算符,逻辑运算结果:1(真) 0 (假) 逻辑运算对象:关系表达式或逻辑量 x = 5 & !x 判断逻辑量的真假:非0 (真) 0 (假),逻辑运算的规则真值表,x y x&y x|y !x 假 假 0 0 1 假 真 0 1 1 真 假 0 1 0 真 真 1 1 0,0 0 0 非0 非0 0 非0 非0,优先级 ! 算术运算符 关系运算符 & | 赋值运算符 左结合,逻辑运算符的优先级和结合性,a | b & c !a & b x = 3 & x = 5 !x = 2 a | 3 + 10 & 2,a | (b & c) (!a) & b (x = 3) & (x = 5) (!x) = 2 a | (3 + 10) & 2),逻辑表达式,exp1 & exp2 先算exp1,若其值为0,STOP exp1 | exp2 先算exp1,若其值为1,STOP,运用逻辑表达式,例2-20 写出满足下列要求的表达式 (1) ch 是小写英文字母 ch = a & ch = z (2) x 为零 关系表达式 x = 0 或 逻辑表达式 !x 验证:,x取0 !x 真 x取非0 !x 假,x取0 x=0 真 x取非0 x=0 假,等价,(3) x 不为零 x != 0 或 x,例220,(4) x 和 y 不同时为零 !(x = 0 & y=0) 或 x != 0 | y!=0 或 x | y (5) year 是闰年,即 year 能被 4 整除但不能被 100 整除,或 year 能被 400 整除。 (year % 4 = 0 & year % 100 != 0) | (year % 400 = = 0) 或 (!(year % 4) & year % 100) | !(year % 400 ),条件表达式,exp1 ? exp2 : exp3,非0,0,exp1,y = (x0) ? x+2 : x*x;,if ( x0 ) y=x+2; else y=x*x;, 逗号表达式,表达式1, 表达式2, ,表达式n 先计算表达式,然后计算表达式,,最后计算表达式n的值,并将表达式n的值作为逗号表达式的值. int a, b, c; (a=2), (b=3), (c=a+b); 逗号运算符的优先级最低,左结合,a=2, b=3, c=a+b,2.5 语句_流程控制,任何程序都可以将模块通过3种基本的控制结构进行组合来实现。,顺序结构,循环结构,分支结构,3种基本的控制结构 顺序控制结构:自然顺序执行 分支控制结构(选择结构):根据不同的条件来选择所要执行的模块 循环控制结构:重复执行某个模块,For example:ch2/2-9.cpp,2.5 语句_ if语句和复合语句,分支结构一般分为二分支和多分支两种结构 用条件语句(if 和 switch)实现选择 2.5.1 二分支结构和基本的 if 语句,二分支结构和基本的 if 语句,if (表达式) 语句1 else 语句2,if (表达式) 语句1,一条语句,二分支结构示例,例2-10 输入2个数,如果它们的值不相等,则交换并输出它们的值;否则,输出“a=b”。 交换a和b的值 temp=a; a=b; b=temp;,Example 2-10,例2-11 输入3个整数,输出其中的最大值,基本的 if 语句示例,2.5语句_循环语句,使用格里高利公式求的近似值,要求精确到最后一项的绝对值小于105。 2.5.1 while语句 程序解析 2-12.cpp 2.5.2 for语句 2.5.3 do语句,while (条件) 循环体语句;,int i=0,sum=0; while( +i=10000 ) sum = sum+i;,int i=1,sum=0; while( i=10000 ) sum = sum+i; i = i+1; ,复合语句,循环条件,循环体,for(表达式1; 表达式2; 表达式3) 循环体语句;,int i,sum=0; for( i = 10000; i = 1 ;i-) sum = sum+i; for(i=1;i=10000;i+) sum+=i;,循环变量,2-12.cpp,while 语句和for语句 都是在循环前先判断条件,表达式1; while (表达式2) for的循环体语句; 表达式3; ,把for语句改写成while语句 for(表达式1; 表达式2; 表达式3) 循环体语句;,while 和 for 的比较,for (i = 1; i = 10; i+) sum = sum + i;,i = 1; /循环变量赋初值 while (i = 10) /循环条件 sum = sum + i; i+; /循环变量的改变 ,循环体,例2-13 从键盘输入一批学生的成绩,统计平均分。 分析: 求累加和 确定循环条件 不知道输入数据的个数,所以无法事先确定循环次数 用1个特殊的数据作为正常输入数据的结束标志,比如选用一个负数作为结束标志。,do - while 语句,do 循环体语句; while (表达式),循环体语句,表达式,真,假,下一条语句,先循环,后判断,程序解析统计一个整数的位数, 如:3452 整数位数为4. For example:2-14.cpp,while 是先判别条件,再决定是否循环; do-while 是先至少循环一次,然后再根据循环的结果决定是否继续循环。,while 和 do-while 的比较,循环语句的选择,if(循环次数已知) 使用for语句 else /* 循环次数未知 */ if (循环条件在进入循环时明确) 使用while语句 else /* 循环条件需要在循环体中明确 */ 使用do-while语句,2.5语句_ break语句 和continue语句,例2-15:输入一个正整数m,判断它是否为素数。,算法:除了1和m,不能被其它数整除。 设 i 取值 2, m-1 如果m不能被该区间上的任何一个数整除,即对每个i,m%i 都不为0,则m是素数 只要找到一个i,使m%i为0,则m肯定不是素数 m %2 %3 %4 %5 %(m-1) 不是素数 | =0 =0 是素数 & !=0 !=0 m不可能被大于 m/2 的数整除 i 取值 2, m-1 、 2, m/2 、 2, ,for(i = 2; i m/2) cout “yesn“; else cout “non”;,break 语句,whi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新型急救装置全面解析
- 2025~2026学年济南市天桥区七年级第一学期生物期末考试试题以及答案
- 2026年上海市金山区初三上学期一模数学试卷和参考答案
- 化工仪表基础知识课件
- 特种设备管理制度
- 2026浙江温州市平阳县长汽机动车驾驶员考试服务有限责任公司招聘编外人员(劳务派遣)3人备考考试题库及答案解析
- 市政工程公司管理制度
- 2026年荆州市江陵县事业单位人才引进47人备考考试试题及答案解析
- 2026贵州贵阳市观山湖区第二初级中学招聘临聘教师2人备考考试题库及答案解析
- 装饰水池施工方案(3篇)
- 常见的盐(第1课时)-九年级化学人教版(2024)下册
- 大棚转让合同范本
- T-ZSA 232-2024 特种巡逻机器人通.用技术要求
- GB/T 45026-2024侧扫声呐海洋调查规范
- DB33 1121-2016 民用建筑电动汽车充电设施配置与设计规范
- IATF16949基础知识培训教材
- DBJ-T 15-162-2019 建筑基坑施工监测技术标准
- 中国慢性阻塞性肺疾病基层诊疗指南(2024年)解读
- QB/T 2660-2024 化妆水(正式版)
- 不确定度评定(压力表-)
- 复方蒲公英注射液抗肿瘤作用研究
评论
0/150
提交评论