《二章基本数据类型运算符和表达式ppt课件.ppt》由会员分享,可在线阅读,更多相关《二章基本数据类型运算符和表达式ppt课件.ppt(76页珍藏版)》请在三一文库上搜索。
1、uangXi University,1,C/C+程序设计,胡立坤,uangXi University,2,b, B, KB, MB, GB, TB,Megabyte(MB),中文叫法:兆 Kilobyte(KB),中文叫法: K Byte,中文叫法:字节 bit,中文叫法:位 Gigabyte(GB),中文叫法:G Terabyte(TB),中文叫法:T,1 TB = 1,024 GB,1 GB = 1,024 MB,1 MB = 1,024 KB,1 KB = 1,024 B,1 B = 8 b,uangXi University,3,b, B, KB, MB, GB, TB,一个位有多大?
2、 只能是“0”或者“1”,这叫二进制 一个字节有多大? 保存一个字符(英文字母、数字、符号) ASCII(美国标准信息交换码)编码 两个字节保存一个汉字 GB编码 可以表示数字0255,uangXi University,4,第二章基本数据类型、运算符和表达式,2.1 数据类型 2.2 变量和常量 2.3 运算符和表达式 2.4 指针 2.5 typedef语句 2.6 应用举例,uangXi University,5,2.1 数据类型,数据为什么要区分类型? 不同类型的数据代表不同的 数据表示形式 合法的取值范围 占用内存空间大小 可参与的运算种类 数据类型的分类(见下页),uangXi U
3、niversity,6,2.1 数据类型,uangXi University,7,2.1 数据类型,基本数据类型 int 整数,在目前绝大多数机器上占4个字节。TC2中是2个字节 float 单精度浮点数,一般是4个字节长 double 双精度浮点数,一般是8个字节长 bool 一般是1个字节长 false(0),true(1) char 字符,一般是1个字节长 用来表示256个ASCII字符,或者0255的整数 C/C+将char默认为带符号数,表示范围:-128127,uangXi University,8,2.1 数据类型,数据类型修饰符 short short int,短整数,一般2个
4、字节长。通常简写为short long long int,长整数,一般是4个字节长。通常简写为long long double,长双精度(高精度)浮点数,VC中仍是8个字节,TC中是10个字节长。 signed 用来修饰char、int、short和long,说明他们是有符号的整数(正整数、0和负整数)。一般缺省都是有符号的,所以这个修饰符通常省略 unsigned 用来修饰char、int、short和long,说明他们是无符号的整数(正整数和0),uangXi University,9,2.2 变量和常量,2.2.1变量 (1)变量的定义 程序运行过程中其值可变的量, 定义方式如下: 数据
5、类型 变量名表 ; C/C+规定: 程序中所有变量必须先定义后使用,可及时发现录入错误(如,定义的变量为data,而程序体中使用变量为date),同时还可限制非法运算(如:a%b , 若a,b为float类型则出错)。 C+中变量可随时使用,随时定义。 例如: int a, b; (定义变量a和b为整型) float x,y ; (定义变量x和y为单精度实型),uangXi University,10,2.2 变量和常量,(2)变量的初始化 变量必须先有确定的值后才能参与各种相应的操作,变量获取值的途径有三: 通过输入语句输入 (如:cina;) 通过赋值语句赋值 (如:a=3;) 通过初始化
6、方式赋初值 (如:int k=3;) 所谓初始化是指在定义变量的同时指定变量的初值,形式有二: 数据类型 变量名=表达式; 数据类型 变量名(表达式); 例如: int k=3,m=3, n(3); () int k=m=n=3;/不允许为多个变量同时初始化,uangXi University,11,2.2 变量和常量,强调: 使用变量的基本原则 变量必须先定义,后使用 所有变量一般在可执行语句前定义,不过并不是必须 声明的顺序无关紧要 一条声明语句可声明若干个同类型的变量 声明变量,是初始化变量的最好时机 不被初始化的变量,其值为危险的随机数,uangXi University,12,2.2
7、 变量和常量,(3)变量引用 C+中增加了“引用”这一概念,许多地方可以代替指针实现相应的功能,比指针更安全。 所谓引用即给一个已知变量起个别名,系统不为引用另外开辟内存,而是与原变量共享同一段内存,引用好比是一个虚拟的变量,声明形式为: 数据类型 /你知道此时a的值为多少吗?,uangXi University,13,2.2 变量和常量,(4)变量使用应注意 不要对变量所占的内存空间字节数想当然 用sizeof获得变量或者数据类型的长度 现场演示程序在Turbo C2.0和Visual C下的运行结果,#include main() printf(“Data type Number of b
8、ytesn“); printf(“- -n“); printf(“char %dn“, sizeof(char); printf(“int %dn“, sizeof(int); printf(“short int %dn“, sizeof(short); printf(“long int %dn“, sizeof(long); printf(“float %dn“, sizeof(float); printf(“double %dn“, sizeof(double); ,所以为了程序的良好移值性,对于定义整型变量 unsigned int zero = 0; 对其全1变量的初始化不用 unsi
9、gned int compzero = 0xFFFF; 而用 unsigned int compzero = 0;,uangXi University,14,2.2 变量和常量,实型数据提供的有效数字位数不同,使用不当导致舍入误差 float型数据提供7位有效数字 double型数据提供16位有效数字 例如 #include main() float a; double b; a = 123456.789e4; b = 123456.789e4; printf(“%fn%fn”,a,b); ,1234567936.000000 1234567890.000000,uangXi Universi
10、ty,15,2.2 变量和常量,2.2.2常量 在程序运行过程中其值不能改变的量,有值常量和符号常量两种。 (1)整型常量,uangXi University,16,2.2 变量和常量,(2)实型常量 十进制小数形式:由正负号、数字和小数点组成, 如1.25、-1.25、17. 和 .1 指数形式:由尾数、指数符号e(或E)及指数构成,其中指数必须是十进制整数。如1.25e-5、+1e10、-1.25e5。 注意:e前面不能没有数字,e后面的数字必须为整数,也不能加圆括号。如1E(-3)、E-5、1e2.1都是错误的。,浮点数格式,uangXi University,17,2.2 变量和常量,
11、另外整型与浮点常数还时常带后缀以表明是何种类型 ,特别是在用#define定义中: 整型常数 18、-31 长整型常量 123l、123L、123456l、123456L 无符号型常量 123u、 123U 浮点常数 十进制小数形式 123.45、456.78 指数形式 1e-2、4.5e3 单精度实型常量 123.45f、 456.78F、1e-2f、4.5e3F 长双精度型常量 123.45l、 456.78L、1e-2l、4.5e3L,uangXi University,18,2.2 变量和常量,(3) 字符常量-C/C+提供了两类字符型常量: 普通字符常量:用单引号括起来的一个字符。如
12、:A、 0、? 。 转义字符常量:以“ ” 开头的用单引号括起来的字符 序列。常用的转义字符: n 、 t 、v 、 b 、 r 、 、 、 ” 、 ooo 、 xhh 注意: a.0表示ASCII码为0的字符,它是一个空字符,注意其与0的区别,后者表示的是ASCII码为48的数字字符。 b.字符型数据在内存中以ASCII码存储,故整型数据和字符型数据在一定范围内可以通用。如: x= a +2; printf(“ %d “, a);,uangXi University,19,2.2 变量和常量,ASCII码表,uangXi University,20,2.2 变量和常量,例子:将小写字母转换为
13、大写字母 #include main() char ch = b; ch = b - 32; printf(“%c, %dn“, ch, ch); ,ch = b - (a - A) ;,uangXi University,21,2.2 变量和常量,(4)字符串常量 字符串常量是用双引号括起来的字符序列, 系统在字符串常量最后自动加字符串结束符号 0 。例如: 字符串“A”的存储形式: 字符A的存储形式:,A 0,A,内存中实际存放的是这些字符的ASCII码,uangXi University,22,2.2 变量和常量,进一步说明: “表示空字符串 转义字符也可以在字符串中使用 引号只作为字符
14、串开始和结束的标志 除注释外,是唯一可以出现中文的地方 里定义了一系列专门的字符串处理函数,uangXi University,23,2.2 变量和常量,(5) 符号常量-以标识符形式出现的常量,作用是便于程序阅读和修改。C+中用define命令或关键字const定义符号常量,形式如下:,#define 标识符 常量值 或 const 数据类型 标识符 = 常量值,注意: 习惯上符号常量名大写,而变量名小写,以示区分。 符号常量虽然用标识符来标识,但本质上是常量,具有常量值不能改变的性质。 这两者定义的常是有区别的,后者有数据类型。,uangXi University,24,2.2 变量和常量
15、,例如:const int g=8; int const f=9;/这两个定义是一样的。 进一步说明: const意味着“只读” ,声明一个参数为常量是为了告诉了用户这个参数的应用目的,使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。,uangXi University,25,2.2 变量和常量,(6)枚举(Enumeration)常量-一个被遗忘的角色,从程序来窥其一斑 enum weeks MON, TUE, WED, THU, FRI, SAT, SUN; /标识符序列,别的不行! enum weeks today; enum response no, yes, no
16、ne; enum response answer; today = TUE; answer = yes; if (answer = yes) printf(“Today is Tuesday.n“); else printf(“Today is NOT Tuesday.n“);,uangXi University,26,2.2 变量和常量,常数、 const常量、宏常量和枚举常量,都可以用来表示一个永远不会改变的数。但我们不建议直接使用常数,而用后三者代替。 5 const int a=5; #define a 5 enum aT ZERO,ONE,TWO,THREE,FOUR,FIVE; a
17、T a=FIVE;,uangXi University,27,2.3运算符和表达式,2.3.1 基本概念 运算符具有三个属性: 优先级:指运算的先后次序,共分15个级别。 结合性:指相同优先级运算符连续出现时的计算顺序,分自左向右和自右向左两种,除特别声明外,皆指自左向右。 目数: 指运算符要求的操作数的个数,包括单目、双目和三目,一般目数越少,优先级越高。 C/C+的运算符见教材中表1.2.4。,uangXi University,28,2.3运算符和表达式,表达式:由常量、变量、函数调用和运算符按一定规律组合在一 起构成的式子。 -不管是什么表达式,经过运算后都能取得一个值,而且是有类型的
18、。表达式的值要根据运算符的意义、优先级、结合性以及类型转换约定共同约定。,uangXi University,29,2.3运算符和表达式,2.3.2 运算符 (1)算术运算符,种类: + (加法) -(减法) * (乘法) /(除法) % (求余数) + (自增) -(自减) +取正 -取负 优先级 (从高到低): (+、-、+取正 、-取负) (*、/、%) (+、-),右结合,uangXi University,30,2.3运算符和表达式,说明: 在除法运算中,当两个操作数都是整数时,商也为整数,小数部分一律舍去。如: 1/2 0 1.0 /2 0.5 %(求余运算)要求两个操作数都是整型
19、,结果为整除后余下的整余数。 自增、自减运算符(+、- -),操作数也必须是整型变量 +i , -i (在使用 i之前,先使i的值加减1) i+ , i- (在使用 i之后, 使i的值加减1) 若 i 的值为3,则: j=+i; j的值为4, i的值为4 j=i+; j的值为3, i的值为4 想一想,下面的表达式对吗? 5+ 、(a+b)+,uangXi University,31,2.3运算符和表达式,(2)关系运算 种类: (大于) = =(等于)、 =(大于等于)、 !=(不等于) 优先级: (从高到低) ( 、 = ) ( = = 、 != ) 关系运算描述的是一种“判断关系”,其结果
20、有“真(true)”和“假(false)”两种。用1代表“真”(非零),用 0 代表“假” 例如:53的结果为1, aB的结果为0 思考: x为0到100之间的数能否表示为 0=x=100?,uangXi University,32,2.3运算符和表达式,(3)逻辑运算 种类: &(逻辑与)、 |(逻辑或)、!(逻辑非) 优先级: (从高到低) ! & | 其中,“!” 是单目运算符,优先级高于算术运算符。“” 和 “|” 低于关系运算符。 逻辑运算通常用来连接关系运算,逻辑运算符两端的操作数如为“非”,就当作“真”来处理,如果是“”,便当作“假”来处理。逻辑运算的结果也只有 0(false)
21、和1(true)两种。,uangXi University,33,2.3运算符和表达式,说明: 当多个&连续出现时,如表达式& 表达式 & 表达式从左到右,只要一个操作数为0,结果就为0,不进行后续运算。 当多个 | 连续出现时,如表达式 | 表达式 | 表达式从左到右,只要一个操作数为1,结果就为1,不进行后续运算。,uangXi University,34,2.3运算符和表达式,例:分析下面的代码 #include “iostream.h“ void main() int m,n=10,h=1; m=2 1.分析椭圆部分运行结果 2. 将椭圆部分改为m=0&n+,结果又如何。,m=1,n=
22、11,h=13,m=0,n=10,h=12,uangXi University,35,2.3运算符和表达式,例:(1)ch是英文大写字母的条件表达式 (ch = A) & (ch = Z) (2)判断某一年year是否是闰年的条件是满足下列两个条件之一: 能被4整除,但不能被100整除; 能被400整除; (year % 4 = 0) & (year % 100 != 0) | (year % 400 = 0),uangXi University,36,2.3运算符和表达式,(4)条件运算符 形式: e1?e2:e3 条件运算符的结合性是由右向左 一般而言,e1为条件表达式,当其成立时,将e2
23、的值作为整个表达式的值,不再计算e3的值;否则取e3的值作为整个表达式的结果,而不计算e2的值。 如: max(xy?x:y); /将和中较大的一个数赋值给变max,uangXi University,37,2.3运算符和表达式,思考题: 对n(0)个人进行分班,每班k(0)个人,最后不足k人也编一班,问要编几个班?(试用条件运算符表达) n%k0?n/k+1:n/k,uangXi University,38,2.3运算符和表达式,(5)位操作运算符 &-按位与运算 |-按位或运算 -按位异或运算 -按位右移运算 -按位求反,例如:对8位数运算 45&54=36D 45|54=63D 4554
24、=27D 452=11D 45=11010010B,?,45: 0010 1101B 54: 0011 0110B,uangXi University,39,2.3运算符和表达式,(6)赋值运算符 格式:变量 赋值运算符 表达式 a = 3.6 作用: 将一个数据赋给一个变量,并以变量的值作为整个式子的值。,uangXi University,40,2.3运算符和表达式,其中赋值运算符可以是 “=”,也可以是复合赋值运算符,如+、-、*、/、%、 则a中存放的值为3 左端只能是变量(或数组元素),不能为表达式或常量,如: a+2*=b () a=b+2=c+5 (),是一个整体,uangXi
25、University,41,2.3运算符和表达式,(7)逗号运算 形式: e1,e2,e3, 其中e1、e2、e3均为表达式,从左向右依次计算各个表达式的值,而将最后一个表达式的值作为整个表达式的值,逗号运算符常用于循环语句的表达式中,将多个表达式连接成一个表达式,如: for(i=0,j=n;ij;i+,j-) 逗号运算符的优先级别最低。,uangXi University,42,2.3运算符和表达式-运算符的优先级,优先级: ( ) - . ! + - + - * & (类型) sizeof * / % + - = = != & | & | ? : = += -= *= /= %= &=
26、= |= = ,uangXi University,43,2.3运算符和表达式,2.3.3表达式 C/C+运算比较灵活,总的原则是: (1)单目运算多目运算,但要注意自增与自减运算; (2)算术运算关系运算逻辑运算条件运算符赋值运算符逗号运算符; (3)在能确定表达式值的情况下停止后面的运算。,uangXi University,44,2.3运算符和表达式,C/C+表达式应注意: (1)乘号不能省略,如:x*y (2)括号必须成对出现,均使用圆括号,可以多次出现,但要配对 (3)表达式从左到右要在同一基准上书写,无高低之分,uangXi University,45,2.3运算符和表达式,例:
27、(-b+sqrt(b*b-4*a*c)/(2*a) sin(45*3.14/180)+exp(7)+log(10)/(x*y),uangXi University,46,2.3运算符和表达式,C/C+中提供了多种内部函数供用户编程序时直接调用,只需把包含内部函数的头文件,通过#include 预处理命令装入到程序中。 #include “ math.h“ 常用的函数有: cos(x)、sin(x)、pow(x,y)、 sqrt(x)、log(x)、exp(x)、fabs(x),uangXi University,47,2.3运算符和表达式,例: fabs(a)+exp(3)+sin(30*3.
28、14/180),uangXi University,48,2.3运算符和表达式,2.3.4数据类型转换 数据类型的转换:据类型的转换分为显式(强制)转换和隐式(自动)转换。 强制转换格式: (类型名)表达式 或:类型名(表达式) 将一种数据类型的值强制转换为另外一种数据类型。常用于对函数的参数及返回值的操作。 假设、为float型数据,则(int)(x+y)强行将+的值转换成整型,x和y仍为float型。,uangXi University,49,2.3运算符和表达式,char short int unsigned longunsigned longfloatdoublelong double
29、,必定的转换,混合运算时由低向高转换,自动转换还包括赋值运算时赋值号右端类型向左端类型的转换。 将取值范围小的类型转为取值范围大的类型是安全的,反之是不安全的:如果大类型的值在小类型能容纳的范围之内,则平安无事;但是,浮点数转为整数,会丢失小数部分,非四舍五入;其它,转换后的结果必然是错误的,具体结果与机器和实现方式有关。避免如此使用。,自动转换: 在不同类型数据进行混合运算时,系统自动进行的类型转换。,uangXi University,50,2.3运算符和表达式,例:下面的代码输出是什么,为什么? void foo(void) unsigned int a = 6; int b = -20
30、; (a+b 6)? printf(“ 6”) : printf(“= 6”); ,提示:这个问题测试你是否懂得C语言中的整数自动转换原则。,不管如何,这无符号整型问题的答案是输出是“6”。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。,这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。,uangXi University,51,2.3运算符和表达式,字符串与数值类型之间的转换 int i = “123“ 这样用是不行地 a
31、tof(),atoi(),atol() 把字符串转为double,int和long 定义在stdlib.h中 sprintf() 可以用来把各种类型的数值转为字符串 定义在stdio.h中,uangXi University,52,2.3运算符和表达式,例2-0:void main() const int g=8; int const f=9;/这两个定义一样。 /*求基本数据类型的字节长度*/ printf(“Data type Number of bytesn“); printf(“- -n“); printf(“char %dn“, sizeof(char); printf(“int %
32、dn“, sizeof(int); printf(“short int %dn“, sizeof(short); printf(“long int %dn“, sizeof(long); printf(“float%dn“, sizeof(float); printf(“double%dn“, sizeof(double); / float h; double j; h = 123456.789e4; j = 123456.789e4; printf(“%fn%fn“,h,j);/注意精度 /,int a=30,b=4; double x; x=a+b; coutx=(b+)+a coutae
33、ndsbendsxendl; / int c=8, ,uangXi University,53,2.4指针,为什么要引入指针? 指针为函数提供修改变量值的手段 指针为C/C+的动态内存分配系统提供支持 指针为动态数据结构(如例链表、队列、二叉树等)提供支持 指针可以改善某些子程序的效率,uangXi University,54,2.4指针,2.4.1基本概念 每个变量在内存中存放都对应一段地址,第一个字节的地址就是变量的地址,将存放地址的变量称为指针变量。, &x就是变量的地址 *取内容 *(地址) 表示根据地址取内容,如图中所示, *(&x) 的值为4。,两种寻址方式:直接寻址和间接寻址,u
34、angXi University,55,2.4指针,指针 指针是一种变量,存放另一个变量的地址。 int x=4 ; int *p ; p= p就是一个指针,存放x的地址。 p指向x, *p的值为4,*p就是x。 出现x的地方可以用*p代替,出现 *p的地方可以用x代替。 变量的指针=变量的地址,1001,4,p,x,uangXi University,56,2.4指针,2.4.2定义、初始化、访问 定义 数据类型 *标识符; 例如: int *p; float *q; 初始化 在定义的同时赋初值,称为指针变量的初始化。 例如: float d =1.5, *p= /注意不能写做*p=&d 访
35、问:可以直接或间接访问一个变量,如右图,不是指针名的一部分,指针所指对象的类型。,&d,1.5,p,d,uangXi University,57,2.4指针,例2.1指针用法示例 #include “iostream.h“ void main( ) int x,y,*p= ,uangXi University,58,2.4指针,2.4.3指针的运算 (1)赋值运算 假定有定义:int *p, a; p=,uangXi University,59,2.4指针,int i,*p; p=,int *p; float *q; p=q;,int i; float *p; p=,int *p; p=100
36、;,判断是对?是错?,指针变量只 存放地址!,一个指针变量不能指向与其类型不同的变量!,我是真的, 你猜对了吗?,应在类型相同的指针变量之间赋值,uangXi University,60,2.4指针,说明: 指针指向非其定义时声明的数据类型,将引起warning void*类型的指针可以指向任意类型的变量 指针在初始化时一般int *p=NULL; NULL表示空指针,即无效指针 但它只是逻辑上无效,并不是真正地无效 如果指针指向一个非你控制的内存空间,并对该空间进行访问,将可能造成危险 指针在使用前一定要赋值,且必须是一个地址。,main() int *p; scanf(“%d“,p); ,
37、main() int a,*p= ,错!,uangXi University,61,2.4指针,(2)算术运算 p+n (或p-n): p+n:指向后面的第个元素。 p-n:指向前面的第个元素。 p+n的值为:p的值n*sizeof(p指向的类型) 如,有定义: int a,*p= 假设a的地址为1000,则: p的值为1000 p+3的值为: 1000+3*sizeof(int)=1000+3*4=1012,uangXi University,62,2.4指针,自增(+)和自减(-) p+、 +p、 p-、 -p 自增或自减后p指向前一个或后一个元素,*p+ *(p+) *p p + (*p
38、)+ *p (*p)+,uangXi University,63,2.4指针,指针相减 两个类型相同的指针可以相减,结果为这两个地址差之间能够存放的数据个数(数据类型为指针所指的类型)。 如,有定义: int *p1, *p2; 假设p1指向1000,p2指向1008, 则p2p1的值为: (1008-1000)/sizeof(int)=2,uangXi University,64,2.4指针,例2.2指针运算示例 #include “iostream.h“ void main() int a,b,*p1= ,uangXi University,65,2.4指针,(3)关系运算 只有指向同一种
39、数据类型的两个指针才能进行关系运算。值为1或0 p q p q p = q 指针不与非指针量进行比较,但可与NULL(即0值)进行等或不等的关系运算 判断p是否为空指针 P = NULL p != NULL,uangXi University,66,2.4指针,(4) new和delete new运算符 形式为: 指针=new 数据类型; 指针=new 数据类型(初值); delete运算符 用于释放用new申请的动态存储空间,形式为: delete (指针); delete 指针;,只能释放由new申请的动态变量,无需指明数组长度,例:int a=3,*p=,uangXi Universit
40、y,67,2.4指针,例2.3new与delete的用法 #include“iostream.h“ void main() int *p=new int10; int *q=p+5; coutpendl; cout“q=“qendl; q+; cout“(q+)=“qendl; cout“(q-p)=“q-pendl; delete(p); p+; coutpendl; ,uangXi University,68,2.4指针,在C语言中的 和中均定义了下面的函数与new/delete功能类似: void* malloc(unsigned int size); 向系统申请大小为size的内存块,
41、把首地址返回。如果申请不成功,返回NULL void *calloc(unsigned int num, unsigned int size); 向系统申请num个size大小的内存块,把首地址返回。如果申请不成功,返回NULL void free(void* p); 释放由malloc()和calloc()申请的内存块。p是指向此块的指针,uangXi University,69,2.4指针,2.4.4常量指针定义 const int *a; a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以) int * const a; a是一个指向整型数的常指针(也就是说,指针指向的整
42、型数是可以修改的,但指针是不可修改的) int const * a const; a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的),uangXi University,70,2.5typedef语句,形式: typedef 数据类型 新的数据类型名; 作用:为已有的数据类型定义新的名称,使其更符合Windows系统中的相关对象的含义,可以像标准C+中的数据类型一样使用这些新定义的类型。如: typedef char CHAR; CHAR c1; /等价于char c1; VC+中定义了Windows函数中的有关参数及返回值的大小和意义。,uangX
43、i University,71,2.5typedef语句,想一想:#define P_CHAR char * typedef char * T_CHAR; 用以上两种情况的意图都是要定义P_CHAR和 T_CHAR作为指向字符的指针。哪种方法更好呢?(如果有的话)为什么?,P_CHAR pch1,pch2,T_CHAR pch1,pch2,char *pch1,pch2,char *pch1,*pch2,uangXi University,72,2.6举例,例2.4 用表达式描述命题 (1)x、y中至少有一个是5的倍数。 (2)d是不大于100的偶数。 例2.5 编写程序:任意3个数中最大的一
44、个 例2.6 编写程序:计算三角形的边/周长/面积 例2.7输入一个3位数,依次输出该数的正负号和百位、十位、个位数字。,uangXi University,73,2.6举例,2.4答案:(1)(x%5=0)|(y%5=0) (2)(dxyz; max=xy?x:y; max=maxz?max:z; cout“最大的数据=“maxendl; ,uangXi University,74,2.6举例,2.6答案:#include“iostream.h“ #include“iomanip.h“ #include“math.h“ void main() float a,b,c; double l,s;
45、 coutca; b=sqrt(c*c-a*a); /sqrt为内部函数,对其的说明包含在头文件math.h中 l=a+b+c; s=a*b/2; coutsetioflags(ios:fixed); coutsetprecision(2); cout“计算结果:“endl; coutsetw(8)“另一直角边=“bendl setw(11)“周长=“lendl setw(11)“面积=“sendl; ,uangXi University,75,2.6举例,2.7答案#include“iostream.h“ #include“math.h“ #include“iomanip.h“ void main() int c1,c2,c3; char c4; int x; cinx; c4=x=0?+:-; /x的符号存入c4 x=abs(x); /求整型数x的绝对值 c3=x%10; /x%10为个位数字 x=x/10; c2=x%10; c1=x/10; cout“数符 百位数 十位数 个位数“endl; coutsetw(2)c4setw(8)c1 setw(8)c2setw(8)c3endl; ,uangXi University,76,小结,回忆一下,本章你学习了些什么? 回忆一下,本章你学习了些什么? 回忆一下,本章你学习了些什么?,
链接地址:https://www.31doc.com/p-2552104.html