版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、级高语言设计程序章节自测及在线编程练习:http:/http:/主讲人:朱立华主讲人:朱立华第二章第二章基本数据基本数据类型类型 C C 源程序的基本结构及程序中的源程序的基本结构及程序中的6 6种基本符号种基本符号基本类型之整型、字符型、实型基本类型之整型、字符型、实型常量与变量的概念、区别常量与变量的概念、区别C C语言的数据类型语言的数据类型存储与处理的整体体现存储与处理的整体体现 输入输入/ /输出控制输出控制大小写字母转换大小写字母转换 C C程序基本结构程序基本结构基本数据类型的输入与输出基本数据类型的输入与输出动态动态演示演示动态动态演示演示重点难点提示重点难点提示重点难点提示重
2、点难点提示n计算机计算机处理存储处理存储的数据,存储是为了处理,处理依赖的数据,存储是为了处理,处理依赖于存储于存储 n数据数据存储存储两要素两要素: :存储空间的大小,数据的存储格式存储空间的大小,数据的存储格式n数据的数据的处理处理主要是指对数据可以实施的最基本操作主要是指对数据可以实施的最基本操作nC C语言通过语言通过数据类型数据类型体现存储与处理的统一体现存储与处理的统一n因此,因此,C C语言的每一种数据类型,掌握以下几方面:语言的每一种数据类型,掌握以下几方面:该类型数据该类型数据占多少字节占多少字节 该类型数据在内存中的该类型数据在内存中的存储格式存储格式对该类型的数据提供哪些
3、对该类型的数据提供哪些基本操作基本操作该类型数据的该类型数据的取值范围取值范围基本整型(基本整型(int)长类型(长类型(long)数数据据类类型型基本类型基本类型短类型(短类型(short)无符号整型(无符号整型(unsigned)整型整型实型(浮点型)实型(浮点型)单精度实型(单精度实型(float)双精度实型(双精度实型(double)字符型字符型(char)枚举型枚举型共同体类型共同体类型数组类型数组类型结构体类型结构体类型构造类型构造类型指针类型指针类型空类型空类型(void)n无论何种类型的数据,在程序运行过程中,其存储空无论何种类型的数据,在程序运行过程中,其存储空间中的内容有两
4、种状态:间中的内容有两种状态:可以变化可以变化和和不可以变化不可以变化,对,对应于应于变量变量与与常量常量。 n变量变量:存储空间中的数据:存储空间中的数据可以被修改可以被修改,这个空间就称,这个空间就称为为变量空间变量空间,简称,简称变量变量。n常量常量:存储空间中的数据:存储空间中的数据不能被修改不能被修改,这个空间就称,这个空间就称为为常量空间常量空间,简称,简称常量常量( (有有字面常量字面常量和和符号常量符号常量两种两种) ) n无论是变量还是常量,都需要一个无论是变量还是常量,都需要一个名称名称,在程序中代,在程序中代表相应的存储表相应的存储空间中的内容空间中的内容。n变量名需要定
5、义,而字面常量名无需定义,直接用字变量名需要定义,而字面常量名无需定义,直接用字面常量值面常量值(有时后面再加特定后缀)(有时后面再加特定后缀)表示。表示。 n变量名的定义:变量名的定义:数据类型名数据类型名 变量名变量名1 1 , , 变量名变量名2 , 2 , 变量名变量名3 , 3 , , , 变量名变量名n n ; ; 例例1 1:intint a; a;例例2 2:intint x,y,zx,y,z; ; n在变量名定义之后,系统根据其类型为变量分配了一在变量名定义之后,系统根据其类型为变量分配了一定大小的内存空间,该内存空间中是定大小的内存空间,该内存空间中是随机数随机数,要使变,
6、要使变量有确切值,可以通过下列量有确切值,可以通过下列3 3种方式之一:种方式之一:赋值:赋值:先定义变量,再用赋值号先定义变量,再用赋值号“= =”进行赋值进行赋值初始化:初始化:在定义变量的同时指定初值在定义变量的同时指定初值读入:读入:先定义变量,再先定义变量,再从键盘或文件提供数据从键盘或文件提供数据必须以分号结束必须以分号结束 中的内容为可中的内容为可选项,可能没有选项,可能没有同一类型定同一类型定义多个变量义多个变量时,变量间时,变量间以逗号隔开以逗号隔开变量名必须是用户变量名必须是用户自定义标识符自定义标识符定义一个整型变定义一个整型变量,变量名为量,变量名为a a定义定义3 3
7、个整型变量,个整型变量,彼此逗号隔开彼此逗号隔开3.1416F52388Lnint m;nm=345;nlong n=52388L; ndouble x=3.1416;nfloat y=3.1416F;nchar ch=A; ?m345345345定义定义变量变量赋值赋值初始化初始化n5238852388x3.14163.14163.14163.1416y3.1416初始化初始化初始化初始化3.1416初始化初始化AchAAn总结:总结:以上例子中,白字代表变量名,黄字代表常量名,绿框代表以上例子中,白字代表变量名,黄字代表常量名,绿框代表变量空间,红框代表常量空间变量空间,红框代表常量空间在
8、程序中变量以在程序中变量以变量名变量名的形式出现,代表的是的形式出现,代表的是变量空间中的变量空间中的内容内容,变量名需要,变量名需要定义定义;字面常量以(字面);字面常量以(字面)常量名常量名的形式的形式出现,代表的是出现,代表的是字面常量空间中的内容字面常量空间中的内容,字面常量名,字面常量名无需定无需定义义,其真正代表的常量是不带后缀等标识的。,其真正代表的常量是不带后缀等标识的。n程序程序2.12.1 常量空间与变量空间操作示例常量空间与变量空间操作示例#includeint main( ) int m,n; n=125; m=n; printf(The result is:n); p
9、rintf(%d,%d,%dn,n,m,125); printf(%d,%d,%dn,sizeof(n),sizeof(m),sizeof(125); printf(%x,%x n,&n,&m); return 0; 通过本程序,介绍下面通过本程序,介绍下面3 3方面知识:方面知识:(1 1)C C语言源程序的结构语言源程序的结构(2 2)C C语言源程序中的语言源程序中的6 6种符号种符号(3 3)输出函数)输出函数printfprintf的使用的使用 The result is:125,125,1254,4,412ff78,12ff7 动动态态演示演示过过程程nC C语言的源程序可以由一个
10、或多个语言的源程序可以由一个或多个文件文件组成组成 n每个文件可由一个或多个函数组成,每个文件可由一个或多个函数组成,函数函数是组成是组成C C程程序的序的基本单位基本单位 n程序必须程序必须有且只有一个有且只有一个mainmain函数函数,是系统调用应用,是系统调用应用程序的起点程序的起点n函数由函数由函数头函数头和和函数体函数体两部分组成两部分组成n函数头函数头3 3要素要素:返回类型返回类型 函数名(形参表)函数名(形参表)n函数体:由函数体:由一对大括号一对大括号括起,内含括起,内含0 0或多条语句或多条语句n语句必须由分号结束语句必须由分号结束n源程序中可以有注释源程序中可以有注释(
11、 (不参加编译不参加编译) ):/ /* * * */ /或或/#includeint main( ) /以左大括号表示主函数体开始以左大括号表示主函数体开始 int m,n; n=125; m=n; printf(The result is:n); printf(%d,%d,%dn,n,m,125); printf(%d,%d,%dn,sizeof(n),sizeof(m),sizeof(125); printf(%x,%x n,&n,&m); return 0; /以左大括号表示主函数体开始以左大括号表示主函数体开始 函数头函数头函数体函数体函数返回类型函数返回类型函数名函数名 形参表,此
12、时无形参形参表,此时无形参定义两个整型变量定义两个整型变量赋值,将常量赋给变量赋值,将常量赋给变量赋值,用有确定值的变量赋赋值,用有确定值的变量赋给另一个变量给另一个变量输出提示信息输出提示信息输出变量和常量的值输出变量和常量的值输出变量和常量所占字节大小输出变量和常量所占字节大小C C语言中的一个运算符,计算数据语言中的一个运算符,计算数据所占字节大小的,参数可以是常所占字节大小的,参数可以是常量、变量、表达式、类型名量、变量、表达式、类型名以十六进制形式输出变以十六进制形式输出变量在内存中的起始地址量在内存中的起始地址返回调用点,结束程序返回调用点,结束程序文件包含,此文件中有文件包含,此
13、文件中有printf函数的原型函数的原型/ /* *程序程序2.1 2.1 常量空间与变量空间操作示例常量空间与变量空间操作示例, ,这是一个单文件的程序,文件名:这是一个单文件的程序,文件名:li2_1.cli2_1.c * */ /多行注释形式多行注释形式单行注释形式单行注释形式单行注释形式单行注释形式n(1)(1)关键字(关键字(KeywordKeyword): C C语言中预先规定的具有固定功能和语言中预先规定的具有固定功能和意义的意义的单词或单词的缩写单词或单词的缩写,3232个都有特定意义,用法固定个都有特定意义,用法固定n(2)(2)标识符(标识符(identifierident
14、ifier):以:以字母或下划线字母或下划线开头,后面跟开头,后面跟字字母、数字、下划线母、数字、下划线的任意序列。标识符又分为的任意序列。标识符又分为系统预定义标识系统预定义标识符符和和用户自定义标识符用户自定义标识符两种两种。( (标识符中的标识符中的大小写字母有区别大小写字母有区别) )n(3)(3)运算符(运算符(operatoroperator):C C语言提供了语言提供了3434个运算符个运算符, ,分为分为1515个个不同的优先级,完成不同的运算功能不同的优先级,完成不同的运算功能n(4)(4)分隔符(分隔符(separatorseparator):相邻相邻的关键字、标识符之间必
15、须使的关键字、标识符之间必须使用分隔符,不同场合选用:用分隔符,不同场合选用:空格、回车空格、回车/ /换行、逗号、分号换行、逗号、分号 n(5)(5)其它符号:其它符号:有一些有特定含义的其它符号:有一些有特定含义的其它符号:、/、/ /* * * */ / n(6)(6)数据(数据(datadata):各种类型的字面值常量:各种类型的字面值常量 不可以用关键字,最好也不不可以用关键字,最好也不用系统预定义标识符用系统预定义标识符#includeint main( ) /以左大括号表示主函数体开始以左大括号表示主函数体开始 int m,n; n=125; m=n; printf(The re
16、sult is:n); printf(%d,%d,%dn,n,m,125); printf(%d,%d,%dn,sizeof(n),sizeof(m),sizeof(125); printf(%x,%x n,&n,&m); return 0; /以左大括号表示主函数体开始以左大括号表示主函数体开始 / /* *程序程序2.1 2.1 常量空间与变量空间操作示例常量空间与变量空间操作示例, ,这是一个单文件的程序,文件名:这是一个单文件的程序,文件名:li2_1.cli2_1.c * */ /系统预定义系统预定义标识符标识符用户自定义标识符用户自定义标识符关键字关键字逗号,分隔一条语句逗号,分隔
17、一条语句中的并列成分中的并列成分分号,用于语句结束后,分号,用于语句结束后,分隔相邻语句分隔相邻语句空格,用于相邻关键字、标识空格,用于相邻关键字、标识符之间,不可用其他分隔符时符之间,不可用其他分隔符时其他符号其他符号常常量量运算符运算符nC程序通过格式输出函数程序通过格式输出函数printf输出输出任何类型的数据任何类型的数据 nprintf函数的函数的调用形式调用形式: printf(格式控制字符串格式控制字符串 ,输出参数,输出参数1,输出参数,输出参数2,输出参数,输出参数n ) ;nprintf(The result is:n); nprintf(%d,%d,%dn,n,m,125
18、);nprintf(%d,%d,%dn,sizeof(n),sizeof(m),sizeof(125);nprintf(%x,%xn,&n,&m);nprintf(“%x,%x,%xn”,&n,&m,&125); Xn小结:小结:每一种类型的数据都有特定的格式转换说明符控制其输每一种类型的数据都有特定的格式转换说明符控制其输出格式,具体请参考附录出格式,具体请参考附录I,在以后的使用中逐步熟悉,在以后的使用中逐步熟悉该函数原型在该函数原型在stdio.h头文件中,头文件中,因此要用因此要用#include文件文件包含命令包含命令 用双引号括起来的字符串用双引号括起来的字符串 ,其中,其中的的普
19、通字符普通字符原样输出,原样输出,格式转换说格式转换说明符明符以以% %开头开头后跟后跟一个字母,一个字母,控制控制不同类型数据特定的输出格式不同类型数据特定的输出格式输出参数可以是输出参数可以是常量、变量、表达常量、变量、表达式式,个数个数取决于格式控制串中取决于格式控制串中格式格式转换说明符的个数转换说明符的个数,按从左到右的,按从左到右的顺序一一对应格式顺序一一对应格式没有格式转换说明符,原没有格式转换说明符,原样输出所有字符样输出所有字符输出结果:输出结果: The result is:有有3 3个格式转换说明符依次个格式转换说明符依次控制后面的控制后面的3 3个参数,按十个参数,按十
20、进制整数格式输出,进制整数格式输出,3 3个普个普通字符原样输出通字符原样输出输出结果:输出结果: 125,125,125输出结果:输出结果: 4,4,4有两个格式转换说明符依次有两个格式转换说明符依次控制后面的控制后面的2 2个参数,按十六个参数,按十六进制整数格式输出,两个普进制整数格式输出,两个普通字符原样输出通字符原样输出获取变量的起始地址值获取变量的起始地址值输出结果:输出结果: 12ff78,12ff7c 对常量不对常量不能取地址能取地址数据类型名称数据类型名称类型全称类型全称 类型简称类型简称占字占字节数节数 取值范围取值范围有符号基本整型有符号基本整型 signed intsi
21、gned intintint2 2或或4 4? ?取决于编译器取决于编译器有符号短整型有符号短整型signed short signed short intintshortshort2 2-2-216-116-12216-116-1-1 -1 有符号长整型有符号长整型 signed long intsigned long intlonglong4 4-2-232-132-12232-132-1-1-1无符号基本整型无符号基本整型 unsigned intunsigned intunsignedunsigned2 2或或4 4? ?取决于编译器取决于编译器无符号短整型无符号短整型unsigned
22、 short unsigned short intintunsigned shortunsigned short2 2002 21616-1-1无符号长整型无符号长整型 unsigned long intunsigned long intunsigned longunsigned long4 4002 23232-1-1n整型:整型:C C语言中最常用最基本的类型。语言中最常用最基本的类型。n根据整型数据所占根据整型数据所占内存空间大小内存空间大小分为:分为: shortshort 、 intint 、longlongn根据根据二进制数最高位的意义二进制数最高位的意义分为:分为:signeds
23、igned、unsignedunsignedn综合考虑两方面因素,共有综合考虑两方面因素,共有6 6种整型,如下表所示:种整型,如下表所示:2字节字节2或或4字节字节4字节字节最高位最高位0表示正数,表示正数,1表示负数表示负数最高位最高位0或或1表示数值本身,不表示正负号表示数值本身,不表示正负号n在在C C语言源程序中,可以用语言源程序中,可以用十进制、八进制、十六进制十进制、八进制、十六进制这三种制式的数这三种制式的数来表示各种类型的整型字面值常量来表示各种类型的整型字面值常量n形式:形式:n例:例:十进制整数:十进制整数:1212、-91-91、- -1212L L、9393U U、1
24、23123LuLu、902902LULUn八进制整数:八进制整数: 0 01212、- -0 07171、- -0 016L16L、072U072U、 0 01616LULU、0 07272lulu、n十六进制整数:十六进制整数: 0X0XA2A2、- -0X0X9C39C3、- -0X0X1616L L、0 x0 x1A1AU U、0X0X2f2fLuLunN N进制数转为十进制数的方法:进制数转为十进制数的方法:每一位的位值乘以位权再求和每一位的位值乘以位权再求和 n十进制数转为十进制数转为N N进制数的方法:进制数的方法:除以除以N N取余,本次商作为下一次被取余,本次商作为下一次被除数
25、,再除以除数,再除以N N取余,直到被除数为取余,直到被除数为0 0,所求余数按相反顺序输出,所求余数按相反顺序输出n例:例:0 072=772=7* *8+2=58 8+2=58 n 7 7正号正号+可以缺省,负可以缺省,负号号-必须要有必须要有符号位符号位制式前缀制式前缀该进制数字该进制数字( (字母字母) )序列序列后缀后缀十进制数无前缀十进制数无前缀八进制数有前缀八进制数有前缀0十六进制数有前缀十六进制数有前缀0 x(0X)十进制数字:十进制数字:09八进制数字:八进制数字:07十六进制数字加字母:十六进制数字加字母:09、AF(或或af)长整型后缀长整型后缀L(或或l)无符号数后缀无
26、符号数后缀U(或或u)所以:所以:58=07258588 87 70 02 28 8n刚才讲到的刚才讲到的三种进制三种进制表示整型值是在表示整型值是在C C源程序源程序中的,无论何种制中的,无论何种制式经编译后都以二进制数的形式存在于内存中式经编译后都以二进制数的形式存在于内存中n整数的二进制数有整数的二进制数有3 3种编码方式:种编码方式:原码、反码、补码原码、反码、补码,为了将减,为了将减法统一到加法运算中,一般用法统一到加法运算中,一般用补码补码形式。形式。n正数:正数:原码、反码、补码形式统一,原码、反码、补码形式统一,最高位为最高位为0 0表示是正数,余表示是正数,余下的二进制码是其
27、等效二进制表示下的二进制码是其等效二进制表示n例:例:shortshort型常量型常量9797转换为二进制数为:转换为二进制数为:11000011100001,则其,则其原码、反原码、反码、补码码、补码为:为:n负数的原码:负数的原码:最高位为最高位为1 1,其余位,其余位与其相反数相同与其相反数相同 n负数的反码负数的反码:最高位为:最高位为1 1,其余位是其,其余位是其原码各位取反原码各位取反n负数的补码负数的补码:最高位为:最高位为1 1,其余位是其,其余位是其反码最低位加反码最低位加1 1-97-97的原码的原码10000000 01100001-97-97的反码的反码11111111
28、 10011110-97-97的补码的补码100000000 011000010的原码有两种形式:的原码有两种形式:00000000 0000000010000000 000000000的反码有两种形式:的反码有两种形式:00000000 0000000011111111 111111110的补码只有一种形式:的补码只有一种形式:00000000 00000000n同一个二进制序列,当表示的整数是同一个二进制序列,当表示的整数是有符号有符号数时,数时,最高位最高位代表正代表正负性质,而不作为值计算;当表示的整数是负性质,而不作为值计算;当表示的整数是无符号数无符号数时,最高位时,最高位就是就是
29、数值本身数值本身,这时没有负数。,这时没有负数。n例:例:10000000 00000000n不同整数类型的不同整数类型的数据范围数据范围由由数据所占的字节数数据所占的字节数以及以及是否为有符号是否为有符号数数来决定。来决定。n例:例:short 的范围:的范围:-215215-1,10000000000000000111111111111111nunsigned short 的范围:的范围:0216-1, 00000000000000001111111111111111当表示当表示无符号无符号数时,此位代表数值本身,即数时,此位代表数值本身,即215=32768当表示当表示有符号有符号数时,
30、此位代表数时,此位代表负数负数。其。其绝对值绝对值为后面为后面各位取反再加各位取反再加1 1,得到:,得到:10000000 00000000,即即215=32768,因此该数的值为:因此该数的值为:-32768n变量定义变量定义实质上是为数据创建变量空间,需要指明类型和空间的实质上是为数据创建变量空间,需要指明类型和空间的名称即变量名。名称即变量名。C C语言通过语言通过定义语句定义语句来完成这项工作。来完成这项工作。 n例:例:int a,b; short c; unsigned long x,y;n变量值的获取仍是通过三种方式之一:初始化、赋值、读入。前变量值的获取仍是通过三种方式之一:
31、初始化、赋值、读入。前两种已介绍过,读入方式可以使变量在运行时根据用户的需要获两种已介绍过,读入方式可以使变量在运行时根据用户的需要获得相应的值,比较灵活。得相应的值,比较灵活。nscanf的调用:的调用:scanf( (格式控制字符串格式控制字符串, ,地址地址1 1 , ,地址地址2,2, ) );n例:例:scanf(“%d%d”,&a,&b);nscanf(%2d%3d%4d,&a,&b,&c);nscanf(%d,%d,%d,&a,&b,&c); n需熟悉的格式转换说明符:需熟悉的格式转换说明符:% %d(%id(%i) )、%c%c、% %f(%ef(%e) )、%lf%lf、%s
32、%s该函数原型定义在头文件该函数原型定义在头文件stdio.h中,因此要作文件包中,因此要作文件包含:含:#include究竟有几个地址取决于格式控制究竟有几个地址取决于格式控制串中有串中有几个格式转换说明符几个格式转换说明符,依,依从左到右顺序一从左到右顺序一 一对应控制一对应控制格式控制字符串包含格式控制字符串包含格式转换说明符格式转换说明符和和输入分隔符输入分隔符 ,格式转换说明符的意思和格式转换说明符的意思和用法与用法与printf函数中基本一致,输入分函数中基本一致,输入分隔符需要隔符需要原样输入原样输入,建议用默认的,建议用默认的空白空白符符来分隔,减少差错来分隔,减少差错使用使用
33、空白符空白符( (空格、空格、TabTab、回车、回车分隔分隔数据,输入:数据,输入:12 34,则,则a和和b的值分别为的值分别为12和和34,建议使用建议使用这种形式输入这种形式输入按按指定宽度指定宽度输入数据,输入:输入数据,输入:123456789,则,则a、b、c的的值分别为值分别为12、345、6789按按指定分隔符指定分隔符输入数据,输入:输入数据,输入:12,3456,78,则,则a、b、c的的值分别为值分别为12、3456、78n对整型数据,对整型数据,C C语言提供了多种运算:语言提供了多种运算:算术运算、关系运算、逻算术运算、关系运算、逻辑运算、位运算辑运算、位运算等,下
34、一章详细介绍等,下一章详细介绍n算术运算中:算术运算中:%-取余,只能是取余,只能是两个整数两个整数运算,结果为运算,结果为整数整数n/ /-除法,如果两个整数相除,得到除法,如果两个整数相除,得到整数商整数商,正负号同被除数正负号同被除数n程序程序2.22.2分别求出一个分别求出一个3 3位整数的各个数位上的值,然后按位整数的各个数位上的值,然后按逆逆序序输出。输出。n分析:利用整数的分析:利用整数的取余取余运算和运算和除法除法运算,求得运算,求得3 3位数位数n n的每的每1 1位上位上的数字,先求个位,再求十位,最后求百位。如果每求得一个的数字,先求个位,再求十位,最后求百位。如果每求得
35、一个数字就输出数字就输出1 1个,则只要用个,则只要用同一个变量同一个变量存当前位数字就可以了存当前位数字就可以了n求百位求百位:n/100n/100n求十位求十位:n%100/10n%100/10或或n/10%10n/10%10n求个位求个位:n%10n%10 #include int main( ) int i,n; /定义两个整型变量定义两个整型变量i,n,变量先定义后使用,变量先定义后使用 n=578; /通过赋值通过赋值 语句语句 使使n获得一个获得一个3位整数值位整数值 i=n%10; /对对10取余求得个位数取余求得个位数 printf(%d,i); /输出个位数输出个位数 i=
36、n/10%10; /先整除先整除10再对再对10取余求得十位数取余求得十位数 printf(%d,i); /输出十位数输出十位数 i=n/100; /用整除用整除100求得百位数求得百位数 printf(%dn,i); /输出百位数输出百位数 return 0; 875动动态态演示演示过过程程scanf(“%d”,&n);调输入函数调输入函数n整型有整型有6 6种具体的类型种具体的类型:intint、shortshort、longlong、unsigned unsigned intint、unsigned shortunsigned short、unsigned longunsigned lo
37、ng,明确其长短及,明确其长短及是否有符号是否有符号. .n整型字面值常量在整型字面值常量在C C源程序中源程序中有有十进制、八进制、十六十进制、八进制、十六进制进制表示表示n在内存中在内存中,整数的二进制数,整数的二进制数以补码形式以补码形式存储,注意最高存储,注意最高位在表示无符号数和有符号数时的区别位在表示无符号数和有符号数时的区别n获取整型变量值通过获取整型变量值通过初始化、赋值、读入初始化、赋值、读入3 3种方式之一种方式之一n读入调用读入调用scanfscanf函数,注意函数,注意格式转换字符格式转换字符的正确使用,的正确使用,必须对必须对变量取地址变量取地址,尽量不用或少用分隔字
38、符,尽量不用或少用分隔字符n对整型数提供多种基本运算,注意对整型数提供多种基本运算,注意除除和和取余取余的用法的用法nC C语言中采用语言中采用ASCIIASCII字符集字符集中的字符表示字符型字面值中的字符表示字符型字面值常量,每个字符对应一个常量,每个字符对应一个唯一的整数编码,唯一的整数编码,占占1 1字节字节n在在C C语言源程序语言源程序中,字符字面值常量需要用中,字符字面值常量需要用一对单引一对单引号号作为作为定界符定界符将字符值括起,将字符值括起,有两种有两种表示方法表示方法:(1 1)用单引号括起的)用单引号括起的一个字符一个字符,例如:,例如:A A、9 9、% %。(2 2
39、)用单引号括起的以反斜杠开头的)用单引号括起的以反斜杠开头的转义字符转义字符,例,例如:如:nn、aa、 tt、 、 、 ”n两种两种通用的转义字符通用的转义字符表示:表示:(1 1) dddddd:1 1到到3 3位位八八进制数所代表的字符进制数所代表的字符 (2 2) xhhxhh:1 1到到2 2位位十六十六进制数所代表的字符进制数所代表的字符 例如字符例如字符A A常量就有常量就有3 3种等效的表示:种等效的表示:A A、101101和和x41x41 例如例如换行符换行符有有3 3种等效的表示:种等效的表示:nn、1212和和 xAxA这种表示通常用于这种表示通常用于可见字符可见字符
40、这种表示通常用于这种表示通常用于控制字符控制字符。控制字符不可直接显示,而控制字符不可直接显示,而是起特定的控制作用是起特定的控制作用 可以用来表示任何字符,实可以用来表示任何字符,实际上是用该字符际上是用该字符ASCIIASCII码码的八的八进制和十六进制数来表示进制和十六进制数来表示 n128128个标准字符个标准字符和数值和数值01270127一一 一对应,这种对应使一对应,这种对应使字符型数据在内存中以字符型数据在内存中以1 1字节的整数二进制字节的整数二进制形式存储形式存储 n因此在因此在C C语言中,字符型数据可以当作整型数据使用,语言中,字符型数据可以当作整型数据使用,而而012
41、70127之间的整数之间的整数也可以当作字符数据使用也可以当作字符数据使用n需要熟记的几个字符的需要熟记的几个字符的ASCIIASCII码:码:A A-65-65, ,其他的其他的大写字母大写字母字符字符依序增加依序增加,例:,例:E E-69-69a a-97-97, ,其他的其他的小写字母小写字母字符字符依序增加依序增加,例:,例:f f-102-1020 0-48-48, ,其他的数字字符依序增加,例:其他的数字字符依序增加,例:7 7-55-55 -32-32, ,空格字符的空格字符的ASCIIASCII码为码为3232n熟练掌握以下两组转换关系:熟练掌握以下两组转换关系:对应对应大小
42、写字母字符大小写字母字符的转换:的转换:小写字母小写字母-32-32=大写字母大写字母对应对应数字字符与整数数字数字字符与整数数字的转换:的转换:数字字符数字字符-48-48=整数数字整数数字例:例:B B+32=+32=b bd d-32=-32=D D例:例:8 8-48=8-48=8或或8 8- -0 0=8;=8;8+48=8+48=8 8 或或 8+8+0 0= = 8 8n字符类型的关键字为:字符类型的关键字为:charchar,定义字符变量的定义字符变量的格式格式:char 字符变量名字符变量名1 1 ,字符变量名,字符变量名2 2, ; n字符变量也用字符变量也用初始化、赋值、
43、读入初始化、赋值、读入这这3 3种方式获得值种方式获得值初始化:初始化:char c1=A,c2=98;赋值:赋值:char c3; c3=N; 读入:读入:scanf(“%c”,&c3); /从键盘输入时不能输入定界符从键盘输入时不能输入定界符n字符值的字符值的输出输出:用:用printf输出时,格式转换字符如果是输出时,格式转换字符如果是%c,则,则输出字符形式,格式转换符如果是输出字符形式,格式转换符如果是%d,则输出其对应的,则输出其对应的ASCII码(整数)码(整数)n专用于字符型数据输入输出的两个函数:专用于字符型数据输入输出的两个函数:n输入单个字符:输入单个字符:getchar
44、();例:例:c3=getchar(); getchar();n输出单个字符值:输出单个字符值:putchar(字符值字符值); 例:例:putchar(65);putchar(D); putchar(n);putchar(A+35);必须用必须用%c作为格式作为格式转换控制符转换控制符必须对字符必须对字符变量取地址变量取地址调用形式调用形式1:字符变量字符变量=getchar();将;将键盘输入的一个字符存入键盘输入的一个字符存入变量中变量中调用形式调用形式2:getchar();从键盘输入的;从键盘输入的一个字符不赋给任何变量一个字符不赋给任何变量可以用字符的可以用字符的ASCII码作为参
45、数码作为参数可以用普通字符作可以用普通字符作为参数为参数可以用转义字符作可以用转义字符作为参数为参数可以用字符表达式可以用字符表达式作为参数作为参数作为字面值常量的字符一定作为字面值常量的字符一定要用要用定界符定界符,这是为了区别,这是为了区别于标识符或整数。例如:于标识符或整数。例如:A A与与A A,9 9与与9 9n程序程序2.3 2.3 :字符常量与字符变量的定义及赋值。:字符常量与字符变量的定义及赋值。#includeint main( )char ch1,ch2,ch3,ch4,ch5,ch6;ch1=N; /直接用字符常量赋值直接用字符常量赋值ch2=78; /用字符用字符N的十
46、进制代码赋值的十进制代码赋值ch3=0 x4e; /用字符用字符N的十六进制代码赋值的十六进制代码赋值ch4=0116; /用字符用字符N的八进制代码赋值的八进制代码赋值ch5=x4e; /用十六进制整数代表的转义字符赋值用十六进制整数代表的转义字符赋值ch6=116; /用八进制整数代表的转义字符赋值用八进制整数代表的转义字符赋值printf(“%ct%ct%ctn”,ch1,ch2,ch3); /按水平制表格式输出字符按水平制表格式输出字符printf(a); /转义字符转义字符a代表一声铃响代表一声铃响printf(“%ct%ct%ctn”,ch4,ch5,ch6); /按平制表格式输出
47、字符按平制表格式输出字符printf(a); /转义字符转义字符a代表一声铃响代表一声铃响 return 0;N N N N N N动动态态演示演示过过程程程序程序2.4 2.4 :大小写字母的转换、字符的输入与输出示例:大小写字母的转换、字符的输入与输出示例 #includeint main( )char ch1,ch2;scanf(“%c”,&ch1); /从键盘上输入一个大写字符从键盘上输入一个大写字符ch2=ch1+32; /ch2的值为小写字符的值为小写字符a printf(%c,%cn,ch1,ch2); /显示字符输出格式显示字符输出格式:%c按字符形式输出按字符形式输出 pri
48、ntf(%d,%dn,ch1,ch2); /显示字符代码显示字符代码%d按十进制形式输出按十进制形式输出 ch1=102; /ch1的值赋值为的值赋值为f ch2=ch1-32; /ch2的值赋值为的值赋值为F printf(%c,%cn,ch1,ch2); /显示字符显示字符 printf(%d,%dn,ch1,ch2); /显示字符代码显示字符代码 return 0;如果从键盘输入:A则输出结果为:A,a65,97f,F102,70ch1=getchar();putchar(ch1); putchar(ch2); putchar(n);putchar(ch1); putchar(ch2);
49、 putchar(n);动动态态演示演示过过程程数据类型名称数据类型名称类型全称类型全称占字节占字节有效数字有效数字绝对值范围绝对值范围单精度浮点型float47位3.4E-383.4E+38 双精度浮点型double816位1.7E-3081.7e+308 长精度浮点型long double816位1.7E-3081.7e+308 n实型:实型:也称也称浮点型浮点型,是,是C C语言中常用的基本类型。语言中常用的基本类型。n根据实型根据实型数据精度数据精度以及以及所占字节数所占字节数的不同,划分为的不同,划分为单单精度浮点型、双精度浮点型和长精度浮点型精度浮点型、双精度浮点型和长精度浮点型。
50、n如下表所示:如下表所示:在不同的编译器中占用字节数不一定相在不同的编译器中占用字节数不一定相同同, ,不少于不少于doubledouble类型是基本原则类型是基本原则, ,在在gccgcc中占中占1212字节字节n在在C C语言源程序中,只能用语言源程序中,只能用十进制实数十进制实数来表示实型字面来表示实型字面值常量值常量n具体有两种形式:具体有两种形式:n(1 1)小数形式小数形式的实数,形式:的实数,形式:n(2 2)指数形式指数形式的实数,形式:的实数,形式:n例:例:合法的实数合法的实数:0.0、.25、6.、0.23、-23.41 、314.159F 314.159F -123e3
51、123e3、.123e6.123e6、123.e-3123.e-3、3.14159E2L 3.14159E2L 非法的实数非法的实数:1,23.4、-12、23.4D、E90、 12E4.5、1E400 正号正号+可以缺省,负可以缺省,负号号-必须要有必须要有符号位符号位0909数字序列数字序列小数点小数点后缀后缀十进制整数,可以缺十进制整数,可以缺省,但是小数点左右省,但是小数点左右两边不能同时缺省两边不能同时缺省float型后缀型后缀F(或或f)Double型无后缀型无后缀long double型后缀型后缀L(或或l)0909数字序列数字序列必须有,不可缺省必须有,不可缺省十进制整数,可以
52、缺十进制整数,可以缺省,但是小数点左右省,但是小数点左右两边不能同时缺省两边不能同时缺省十进制整数或小数形式的实数十进制整数或小数形式的实数E(E(或或e)e) 十进制整数十进制整数尾数部分,不可缺省尾数部分,不可缺省必须有,不可缺省必须有,不可缺省指数部分,不可缺省,注意指数部分,不可缺省,注意范围,只能是整数,表示乘范围,只能是整数,表示乘以以10的多少次方的多少次方后缀后缀float型后缀型后缀F(或或f)Double型无后缀型无后缀long double型后缀型后缀L(或或l)n刚才讲到的刚才讲到的小数形式和指数形式小数形式和指数形式表示实型值是在表示实型值是在C C源程序源程序中的,
53、中的,无论何种形式经编译后都以二进制数的形式存在于内存中。无论何种形式经编译后都以二进制数的形式存在于内存中。n此时的此时的二进制二进制序列必须包含有序列必须包含有两个信息两个信息实数的实数的尾数、指数尾数、指数,也就是说,尾数和指数都需要占用一定的存储空间。不同的实型也就是说,尾数和指数都需要占用一定的存储空间。不同的实型所占存储空间大小不同,分配给这两部分的比例也不一样,于是所占存储空间大小不同,分配给这两部分的比例也不一样,于是有了有了精度与范围上精度与范围上的差别。的差别。n实型数在内存的存储格式示意(实型数在内存的存储格式示意(忽略每一部分具体二进制位数忽略每一部分具体二进制位数)n
54、例:例:-111.1101B-111.1101B 在内存中的存储形式,先转化成:在内存中的存储形式,先转化成:n-0.1111101B-0.1111101B2 211B11B( (保证尾数的小数点后第一位非保证尾数的小数点后第一位非0)0)阶符阶符阶码的数值阶码的数值尾符尾符尾数的数值尾数的数值阶码(指数)阶码(指数)尾数尾数0 011111 111111011111101阶码(指数)阶码(指数)尾数尾数n实数类型的实数类型的关键字关键字为为:floatfloat、doubledouble、long doublelong double,定义字符变量的定义字符变量的格式格式:实数类型关键字实数类
55、型关键字 实型变量名实型变量名1 1 ,字符变量名,字符变量名2 2, ; n实型变量也用实型变量也用初始化、赋值、读入初始化、赋值、读入这这3 3种方式获得值种方式获得值初始化:初始化:double d1=23.3,d2=9.8E5;赋值:赋值:float f; f=23.4F; 读入:读入:scanf(“%f”,&f); /float型型变量用格式控制字符变量用格式控制字符f scanf(“%lf”,&d1); /double型型变量用格式控制字符变量用格式控制字符lf读入时可以控制读入时可以控制总宽度总宽度,但是,但是不能控制精度不能控制精度n实型值的实型值的输出输出:用:用printf
56、输出时,无论何种实型均可以使用格输出时,无论何种实型均可以使用格式转换字符式转换字符%f,即使是,即使是double型的值也型的值也不必使用不必使用%lf,与读入与读入不同不同n对实型数据,对实型数据,C语言提供了多种运算:语言提供了多种运算:算术运算、关算术运算、关系运算、逻辑运算系运算、逻辑运算等,下一章详细介绍。等,下一章详细介绍。n算术运算中:算术运算中:%-取余,取余,不能不能用于用于实型实型数求解数求解n/-除法,如果两个相除的数中除法,如果两个相除的数中有一个实型数有一个实型数,则得到,则得到实数商实数商,正负号同被除数正负号同被除数n例例:5/2=2、5.0/2.0=2.5、5.0/2=2.5 #includenint main(void)ndouble d; /定义一个定义一个double型的变量型的变量nfloat f1=3.14F,f2; /初始化初始化float型变量型变量f1 nint x; /定义一个定义一个int型的变量型的变量nchar ch ; /定义一个定义一个char型的变量型的变量n f2=-90.5f ; /用赋值的方法使变量用赋值的方法使变量f2获得值获得值nprintf(Please input ch,x,d:n) ; /提示信息提示信息nscanf(%c%d%lf,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保险招标采购制度
- 采购部门管理制度范本
- 采购锁证索票制度
- 采购项目建设管理制度
- 采购食品安全管理制度
- 重大生产原料采购制度
- 钉钉采购审批管理制度
- 食堂物资采购制度及流程
- 八年级数学下册2025-2026学年第一次月考测试卷(19-20章)(含答案)-人教版(2024)八下
- 第19章 二次根式(章节复习检测提高卷)原卷版-人教版(2024)八下
- 超级单品成就超级品牌报告鸭鸭羽绒服解数咨询
- 2025年腹部外伤试题及答案
- 污水池清理专项安全施工技术方案
- 赛马比赛活动方案
- 江苏省专升本2025年美术学艺术概论试卷(含答案)
- 矿井水、生活污水处理站建设工程投标文件
- 职业调查报告:室内设计行业分析
- 《农村供水水质管理技术导则》编制说明
- 牡丹养殖知识培训内容课件
- 第三节 管理在线学习资源教学设计小学信息科技川教版2024三年级下册-川教版2024
- 5.2《凝聚价值追求》教学设计 2025-2026学年度道德与法治九年级上册 统编版
评论
0/150
提交评论