C教案-Ch2.doc_第1页
C教案-Ch2.doc_第2页
C教案-Ch2.doc_第3页
C教案-Ch2.doc_第4页
C教案-Ch2.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

第二章 基本数据类型及数据运算2.0 预备知识一、 计算机中数的表示及进制转换1、数制l 十进制数 二进制数 八进制数 十六进制数0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 150000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 11110 1 2 3 4 5 6 7 10 11 12 13 14 15 16 170 1 2 3 4 5 6 7 8 9 A B C D E F 2、各种进制之间的转换(整数)l 二进制、八进制、十六进制转换成十进制:按权相加l 十进制转换成二进制、八进制、十六进制:连续除以基,从低到高记录余数,直至商为0l 二进制与八进制之间的转换u 二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制例 (1101001)2=(001,101,001)2=(151)8 八进制转换成二进制:用3位二进制数代替每一位八进制数例 (246)8=(010,100,110)2=(10100110)2l 二进制与十六进制之间的转换二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制例 (11010101111101)2=(0011,0101,0111,1101)2=(357D)16十六进制转换成二进制:用4位二进制数代替每一位十六进制数 例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)2二、 字节和位1. 内存以字节为单元组成2. 每个字节有一个地址3. 一个字节一般由8个二进制位组成4. 每个二进位的值是0或1三、 数值的表示方法原码、反码和补码1. 原码:最高位为符号位,其余各位为数值本身的绝对值2. 反码:l 正数:反码与原码相同l 负数:符号位为1,其余位对原码取反3. 补码:l 正数:原码、反码、补码相同l 负数:最高位为1,其余位为原码取反,再对整个数加1 使用补码方式表示数据的原因:符号位也进入了运算,不用再单独处理符号位;补码对于0的描述唯一。2.1基本数据类型 数据类型总表:(请参考教材:P37)数据类型决定:. 数据占内存字节数. 数据取值范围. 其上可进行的操作2.2 常量与变量一、标识符1、 定义:用来标识变量、常量、函数等的字符序列2、 组成:l 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线l 大小写敏感l 不能使用关键字3、 长度:最长32个字符4、 命名原则:见名知意; 不宜混淆 如数字1与字母I、o与0等例:判断下列标识符号合法性:sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123二.常量1.定义:程序运行时其值不能改变的量(即常数)2.常量分类: 符号常量: 用标识符代表常量l 定义格式: #define 符号常量 常量如: #define PI 3.14l 优点: 含义清楚,一改全改l 注意问题:一般用大写字母; 是宏定义预处理命令,不是C语句例2-1 符号常量举例(ch2_1.c) #define PRICE 30main() int num,total; num=10; total=num*PRICE; printf(total=%d,total); 整型常量(整常数)l 三种形式: 十进制整数:由数字09和正负号表示。 如: 123,-456,0八进制整数:由数字0开头,后跟数字07表示,可以有正负号。如: 0123,-011十六进制整数:由0x(或0X)开头,后跟09,af(或 AF)表示,可以有正负号。如: 0x123,0Xff,-0x12 实型常量(实数或浮点数) l 二种形式:十进制小数形式:(必须有小数点)。 如: 0.123, .123, 123.0, 0.0, 123.指数形式:(e或E之前必须有数字;指数必须为整数)。如: 12.3e3, 123E2, 1.23e4, e-5, 1.2E-3.5 字符常量l 定义:用单引号括起来的单个普通字符或转义字符. 如: a,A, ?, n, 101l 字符常量的值:该字符的ASCII码值如 A65, a97, 048 , n10l 转义字符: 反斜线后面跟一个字符或一个代码值表示nrdddtf“xhh换行回车单引号3位8进制数代表的字符水平制表b退格换页反斜线双引号2位16进制数代表的字符转义字符含义转义字符含义例: 101 -A 012 -n 376- x61 -a 060 -0 A-101-x41-65运行结果:(屏幕显示)A B CI say:”How are you?”C ProgramTurbo C例2-2 转义字符举例(ch2_2.c) main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C);三.变量1.概念:其值可以改变的量2.变量的类型:类型符号关键字所占位数数的范围整形有(signed) int 16-3276832767有(signed) short16-3276832767有(signed) long32-21474836482147483647无unsigned int16065535无unsigned short16065535无unsigned long3204294967295实型有float323.4e-383.4e38有double641.7e-3081.7e308字符型有(signed) char8-128127无unsigned char80255l 实型数据是按照指数形式存储的。24位表示小数部分(包括符号),8位表示指数部分(包括符号)。小数部分占的位数越多,数的有效数字越多,精度越高;指数部分占得位数越多,则能表示的数值范围越大。l 字符型数据包含的是一个字符集。一般用的是ASCII码字符集见附录A(p249) 。l 字符集中的每一个字符都有一个序号,称为ASCII码。 ASCII码大的字符比ASCII码小的字符值大。l 字符类型的标识符是char。3.变量定义的一般格式:数据类型 变量1,变量2, ,变量n;4.变量的初始化: 定义时赋初值 例:int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1;5。注意问题: 变量的使用:先定义,后使用 变量定义位置:一般放在函数开头main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data);6变量分类 整型变量 整型变量分类:(请参考教材P43:表3。1) 整型变量定义: 如: int a, b ;unsigned short c,d ;long e,f ;例2-3 (ch2_3.c) #include main() int a,b,c,d; unsigned u;运行结果:a+u=22, b+u=-14 a=12; b=-24; u=10; c=a+u; d=b+u; printf(“a+u=%d, b+u=%dn”,c,u); 2、实型变量 实型数据在内存中的存放:l 实型变量分类(请参考教材P46:表3。2)实型变量定义: 如: float x, y ;double z ;long double t ;l注意问题:由于实型变量的有效数字的影响,在进行实数运算时,应当避免将一个很大的数和一个很小的数直接相加或相减。3、字符型变量 字符型数据在内存中的存放:字符数据以ASCLL码存储,字符变量占用一个字节(8 bit)l 字符变量的定义:char c1,c2; 注意问题:由于字符变量存放字符ASCII码值,因此字符型数据与整型数据间可进行算术运算。 如:char a, x, s;a=D; /* a=68; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */由于字符型变量在内存中是以字符的ASCII码一个无符号整数的形式来存放的,所以在一定范围内,字符型数据和整型数据是可以互相通用的,二者的区别仅在于:字符型常量占一个字节,而整型常量占两个字节。 字符串常量: 定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个 0 作为字符串结束标志如:字符串“hello”在内存中: h l o 0 l e 0 空串 “” 在内存中: 注意问题: 字符常量与字符串常量不同. 如:a与 “a” 注意:C语言中没有字符串变量,用字符数组存放字符串。例2-4 (ch2_4.c) #define PRICE 12.5 main() int num=3;运行结果:total=37.500000, ch1=d float total; char ch1,ch2=D; total=num*PRICE; ch1=ch2-A+a; printf(“total=%f, ch1=%cn”,total,ch1); 2.3不同类型数据间的转换一运算转换:不同类型数据运算时先自动转换成同一类型。l 转换规则(请参考教材P54:图3.10) 运算对象类型不同时进行的类型转换规则:int - unsigned - long - double 运算过程中必定进行的类型转换:char,short - int; float -double注意:不要理解为int型先转换成unsinged int型再转换成double型。二、强制转换1.一般形式:(类型名)(表达式)如: (int)(x+y) (int)x+y (double)(3/2) (int)3.6 2.说明:强制转换得到所需类型的中间变量,原变量类型不变 例 2-5 (ch2_5.c) main() float x;运行结果:x=3.600000, i=3 int i; x=3.6; i=(int)x; printf(“x=%f, i=%d”,x,i); 3.转换规则 将实型变量转换成整型变量时,舍弃实数的小数部分; 将一个double类型的数据转换成float类型时,截取前面的7位有效数字; 将字符型变量转换成整形变量时,字符的8位放到整形变量的低8位,高8位补零; 将一个intshortlong型数据赋给一个char型变量时,只将其低8位原封不动的送到char型变量。 2.4 运算符和表达式l 学习运算符应掌握以下内容: 运算符功能 与运算对象的关系:要求运算对象的个数;要求运算对象的类型 运算符优先级别 结合方向 结果的类型一、 算术运算符和表达式1、基本算术运算符: + - * / % 结合方向:从左向右 优先级: - -* / % - + - (2) (3) (4) 说明:l “-”为单目运算符时,右结合性l 两整数相除,结果为整数l %要求两侧均为整型数据如: 5/2 = 2 -5/2.0 = -2.52、自增、自减运算符:+ - - 作用:使变量值加1或减1 种类: 前置 +i, -i (先执行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再执行i+1或i-1)如: j=3; k=+j; /k=4,j=4 j=3; k=j+; /k=3,j=4 j=3; printf(“%d”,+j); /4 j=3; printf(“%d”,j+); /3 a=3;b=5;c=(+a)*b; /c=20,a=4 a=3;b=5;c=(a+)*b; /c=15,a=4 说明:+ - 只能用于变量,不能用于常量和表达式,如5+,(a+b)+ -结合方向: 自右向左优先级:- + - -* / % -+ - (2) (3) (4)5、算术表达式及其书写特点l 算术表达式是用算术运算符、圆括号将运算对象连接起来的符合C语言的语法规则的式子。其中,运算对象可以是常量、变量、表达式、函数等等。l 书写时注意以下几点: C表达式中的乘号不能省略。 例如:数学式b2-4ac相应的C表达式应写成:b*b-4*a*c C表达式中只能使用系统允许的标识符。 例如:数学式r2相应的C表达式应写成:3.14159*r*r C表达式中的内容必须书写在同一行,不允许有分子分母形式,必要时要利用圆括号保证运算的顺序。 例如:两个分式进行除法运算相应的C表达式:(a+b)/(c+d) C表达式不允许使用方括号和花括号,只能使用圆括号来帮助限定运算顺序。可以使用多层圆括号,但左右括号必须配对,运算时从内层圆括号开始,由内向外依次计算表达式的值。二、赋值运算符和表达式1、 简单赋值运算符l 符号: =l 格式:变量标识符=表达式l 作用:将一个数据(常量或表达式)赋给一个变量2、 复合赋值运算符l 种类:+= -= *= /= %= = = &= = |=可表示为: op=l 含义:exp1 op= exp2 exp1=exp1 op exp2 如:a+=3 a=a+3; x%=3 x=x%3; x*=y+8 x=x*(y+8)l 说明: 结合方向:自右向左 优先级: 14 左侧必须是变量,不能是常量或表达式如: 3=x-2*y; a+b=3; 都是错的 赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型 赋值表达式的值与变量的值相等,且可嵌套例: float f;

温馨提示

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

评论

0/150

提交评论