C语言程序设计-cha.ppt_第1页
C语言程序设计-cha.ppt_第2页
C语言程序设计-cha.ppt_第3页
C语言程序设计-cha.ppt_第4页
C语言程序设计-cha.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

教学内容: 2.1 数据类型 2.2 整型数据 2.3 实型数据 2.4 字符数据 2.5 常量与变量 教学要求: 1.掌握C语言数据类型分类。 2.掌握C语言常量、变量的使用。 3.掌握整型数据、实型数据、字符数据使用规则。,第2章 语言数据类型,数 据 类 型,C语言提供的数据结构,是以数据类型形式出现的。 1.基本类型 整型、 实型(又称浮点型)、字符型、空类型 2. 构造类型 数组类型 、结构类型 、共用类型、文件类型 3. 指针类型 4. 用户自定义型 C语言中的数据,有常量和变量之分,它们分别属于上述这些类型。,2.1 基本数据类型的特征,一、数值的定点表示和浮点表示 1.定点数:不带指数部分的数 3.14159, 90, 2, -20 2.浮点数:由数字(尾数)和指数(阶码)两部分表示 3.14159e0,0.314159e+1,0.0314159e+2,31.4159e-1,314.159e-2 计算机中凡事实数都以浮点形式存储,二、整型数据在内存中的存放形式 int i; i=10; 10=(1010)2 有符号整数 (补码表示法:便于加减运算),2,10,2,5,2,2,2,1,0,余数,0,1,0,1,首位,0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0,0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0,1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1,1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0,10的原码,取反,再加1,得-10的补码,10的表示法,正数的补码等于它的原码,-10的表示,计算10-10:10-10=10+(-10),0,=,10,-10,+,无符号整数,unsigned int e, f; signed int e, f; = int e, f;,各种进制之间的转换 二进制、八进制、十六进制转换成十进制 方法:按权相加,十进制转换成二进制、八进制、十六进制,方法:连续除以基,从低到高记录余数,直至商为0。,例 把十进制数59转换成二进制数,(59)10=111011B,例 把十进制数159转换成八进制数,例 把十进制数459转换成十六进制数,(159)10=(237)8,(459)10=(1CB)16,二进制与八进制之间的转换 二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制 八进制转换成二进制:用3位二进制数代替每一位八进制数,例 (1101001)2=(001,101,001)2=(151)8,例 (246)8=(010,100,110)2=(10100110)2,0000 0011 0102 0113 1004 1015 1106 1117,二进制与十六进制之间的转换 二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制 十六进制转换成二进制:用4位二进制数代替每一位十六进制数,例 (11010101111101)2=(0011,0101,0111,1101)2=(357D)16,例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)2,00000 00011 00102 00113 01004 01015 01106 01117 10008 10019 1010A 1011B 1100C 1101D 1110E 1111F,3.字节(Byte) 字节是计算机中的最基本的存储单位,是指位二进制码所占的存储空间称为一个字节(Byte),每个字节都有一个地址。,1KB=1024B 1MB=1024KB 1GB=1024MB,4.字(word) 是指计算机一次可以处理的最大二进制位数,称一个机器字,简称字。一个字所包含的二进制数的位数称为字长。,带符号的整数的数值以补码表示,数的最高位表示该数的符号。“0“表示正数;“1“表示负数。,原码:最高位为符号位,其余各位为数值本身的绝对值,反码: 正数:反码与原码相同 负数:符号位为1,其余位对原码取反,补码: 正数:原码、反码、补码相同 负数:最高位为1,其余位为原码取反,再对整个数加1,4. 数值的表示方法原码、反码和补码,(用一字节表示数),负数补码的求法:,先取该数的绝对值: 例 -10 10,以二进制表示该数:10 00000000 00001010;,取反: 11111111 11110101;,加1: 11111111 11110110;,负数补码转换成十进制数:,最高位不动,其余位取反加1,补码: 11111111 11110110;,取反: 10000000 00001001;,加1: 10000000 00001010;,数值,符号,三、类型宽度与取值范围 1. 位: bit 字节:byte (B) 1 B = 8 bit 2. 带符号整数范围:-2n-12n-1-1 不带符号整数范围:02n-1 3. 测定数据类型所占存储空间长度 sizeof (类型表示符) 例如: sizeof(char) size(1.23),2.2 数据常量,一、整型常量 三种进制 八进制、十六进制和十进制,八进制整常数,八进制整常数必须以0开头,即以0作为八进制数的前缀。数码取值为07。八进制数通常是无符号数。 以下各数是合法的八进制数: 015(十进制为13) 0101(十进制为65) 0177777(十进制为65535) 以下各数不是合法的八进制数: 256(无前缀0) 03A2(包含了非八进制数码) -0127(出现了负号),十六进制整常数的前缀为0X或0x。其数码取值为09,AF或af。 以下各数是合法的十六进制整常数: 0X2A(十进制为42) 0XA0 (十进制为160) 0XFFFF (十进制为65535) 以下各数不是合法的十六进制整常数: 5A (无前缀0X) 0X3H (含有非十六进制数码),十六进制整常数,十进制整常数,十进制整常数没有前缀。其数码为09。 以下各数是合法的十进制整常数: 237 -568 65535 1627 以下各数不是合法的十进制整常数: 023 (不能有前导0) 23D (含有非十进制数码),整型常量类型的确定,整型常数的后缀在16位字长的机器上,基本整型的长度也为16位, 因此表示的数的范围也是有限定的。 十进制无符号整常数的范围为065535,有符号数为-32768+32767。 八进制无符号数的表示范围为00177777。 十六进制无符号数的表示范围为0X00XFFFF或0x00xFFFF 如果使用的数超过了上述范围,就必须用长整型数来表示。长整 型数是用后缀“L”或“l”来表示的。例如: 十进制长整常数 158L (十进制为158) 十进制长整常数 -358000L (十进制为-358000) 八进制长整常数 012L (十进制为10) 八进制长整常数 077L (十进制为63) 八进制长整常数 0200000L (十进制为65536) 十六进制长整常数 0X15L (十进制为21) 十六进制长整常数 0XA5L (十进制为165) 十六进制长整常数 0X10000L (十进制为65536),字符常量 1)可打印字符常量 用一对单引号括起来的一个字符,是可打印字符常量,例如a、A、? 、3都是可打印字符常量。,二、字符类型及其常量,单撇号只是字符与其他部分的分隔符,输出字符常量时不输出单撇号 不能用双撇号代替单撇号,”a”不是字符常量 单撇号内的字符不能是单撇号或反斜杠,例: 输出整型常量 、字符常量的值 main() printf( “ %dn”, 349 ); printf( “ %dn”, -9 ); printf( “ %Cn”, M ); 运行结果: 349 -9 M,(3)一个字符型数据,既可以字符形式输出,也可 以整数形式输出。 例3.10字符变量的字符形式输出和整数形式输出。 main() char ch1, ch2; ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn”,ch1,ch2); printf(“ch1=%d,ch2=%dn”,ch1,ch2); 程序运行结果: ch1=a, ch2=b ch1=97, ch2=98,2)转义字符 C语言还允许用一种特殊形式的字符常量,就是一个以“”开头的字符序列(包括一些不可打印字符常量),这种反斜杠字符常量又称转义字符。,反斜杠后面跟一个字母代表一个控制字符(不可打印字符) 表示“”, 代表撇号字符 后跟13位八进制代表ASCII码为该八进制的字符 x后跟 12位十六进制数代表ASCII码为该十六进制的字符,以“ ”开头的字符在printf 函数中控制输出格式: n 换行 t 横向跳格(下一个输出区) v 竖向跳格 b 退格 r 回车 f 走纸换页 反斜杠字符 单引号 ddd 1到3位8进制数所代表的字符。如:101=A xhh 1到2位16进制数所代表的字符。,4)允许对字符数据进行算术运算,此时就是对它们的ASCII码值进行算术运算。 例: 字符数据的算术运算。 main() char ch1, ch2; ch1=a; ch2=B; /*等价于 ch1=97;ch2=66;*/ printf(“ch1=%d”,ch1-32); /*字母的大小写转换*/ printf(“ch2=%d n”,ch2+32); printf(“ch1=%c,ch2=%cn”,ch1-32, ch2+32); 运行结果: ch1=65,ch2=98 ch1=A,ch2=b,例 用字符形式输出一个大于256的数值 main() char ch1 =a; printf(“ch1+200=%dn“, ch1+200); printf(“ch1+200=%cn“, ch1+200); printf(“ch1+256=%dn“, ch1+256); printf(“ch1+256=%cn“, ch1+256); 程序运行结果: ch1+200=297 ch1+200=) ch1+256=353 ch1+256=a,例 用转义字符输出字符和不可打印字符。 main() printf(“ABC tabc txyz n”); printf(“abcbxyz n”); 程序运行结果如下:,5)字符串常数,(1)字符串常量的概念和字符串长度 字符串常量:是用一对双引号括起来的若干字符序列。 字符串长度:字符串中字符的个数称为。 空串: 长度为0的字符串(即一个字符都没有的字符串),表示为“ ” (一对紧连的双引号)。 例如字符串常量: “How do you do.” 长度为14(空格也是一个字符) “Good morning.” 长度为13 如果反斜杠和双引号作为字符串中的有效字符,则必须使用转义字符。例 C:msdosv6.22 “C: msdos v6.22“ I say:“Goodbye!“ “I say:“Goodbye!“ “,6) 字符串的存储 C语言规定: 在存储字符串常量时,由系统在字符串的末尾自动加一个0作为字符串的结束标志。 如果有一个字符串为“CHINA”,则它在内存中的实际存储如下所示: C H I N A 0 最后一个字符0是系统自动加上的,它占用字节而非字节内存空间。,例 输出字符串常量 #include main() char *p; /*定义一个指针变量*/ p=“I am a student.“; printf(“%sn“,p); printf(“%sn“, “I say:“Goodbye!“ “); 运行结果: I am a student. I say:“Goodbye!“,7) 字符常量 A 与字符串常量 “ A “的区别: (1)定界符不同: 字符常量使用单引号A , 而字符串常量使用双引号 “ “ ; (2)长度不同: 字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数; (3)存储要求不同: 字符常量存储的是字符的ASCII码值, 而字符串常量,除了要存储有效的字符外,还要存储一个结束标志 0 。,例 符号常量WHI的使用。 #define WHI “I am a student.“ main() printf( “I am a student. n” ); printf( “%s n“, “I am a student.” ); printf( “%s n“, WHI ); 运行结果: I am a s

温馨提示

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

评论

0/150

提交评论