《第2章基本数据类型、运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《第2章基本数据类型、运算符和表达式.ppt(71页珍藏版)》请在三一办公上搜索。
1、2023/9/2,第2章 基本数据类型、运算符和表达式,1,C语言程序设计,第2章 基本数据类型、运算符和表达式,2023/9/2,第2章 基本数据类型、运算符和表达式,2,【本章概要】,本章主要介绍C语言的基本数据类型、常量与变量、运算符及表达式,以及C语言提供的常用库函数。,2023/9/2,第2章 基本数据类型、运算符和表达式,3,2.1 数据类型历史和特点,2.2 变量和常量,2.3 运算符和表达式,第2章 基本数据类型、运算符和表达式,2.4 数据类型转换,2.5 数据的输入输出,2.6 内部函数,2023/9/2,第2章 基本数据类型、运算符和表达式,4,计算机中处理的数据包括数字
2、、文字、声音、图形、图像等各种形式。数据类型是按数据的性质、表示形式、占据存储空间的多少、构造特点来划分的。,2.1 数据类型,为了更好地对数据进行存储和处理,语言中的数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类,2023/9/2,第2章 基本数据类型、运算符和表达式,5,2.1 数据类型,2023/9/2,第2章 基本数据类型、运算符和表达式,6,基本整型 int短整型 short或short int长整型 long或long int无符号基本整型 unsigned int无符号短整型 unsigned short或unsigned short int无符号长整型 un
3、signed long或unsigned long int,2.1.1 整型,注意:c语言没有规定各种整数类型的表示范围,只是规定了long类型的表示范围不小于int,但也允许它们表示范围相同。,2023/9/2,第2章 基本数据类型、运算符和表达式,7,2.1.2 实型,实型数据又称浮点型数据。float,单精度浮点数类型,简称浮点类型;double,双精度浮点数类型,简称双精度类型;long double,长双精度类型。,所有整数类型和实数类型统称为算术类型。,2023/9/2,第2章 基本数据类型、运算符和表达式,8,字符类型的数据即通常的字符。,字符类型的数据在内存中存储的是它的ASC
4、II码值,一个字符通常占用一个字节的内存空间。,2.1.3字符型,2023/9/2,第2章 基本数据类型、运算符和表达式,9,ASCII码字符的取值范围是0127,既可以用char类型表示,也可以用unsigned char类型表示;在128255范围内的扩展ASCII码字符只能用unsigned char类型表示。,C语言规定字符类型与整型基本一致,分为有符号和无符号两种类型。,2.1.3字符型,2023/9/2,第2章 基本数据类型、运算符和表达式,10,注意:C语言类型的长度完全由编译器决定,char 通常被定义成 8 位宽;int 通常被定义成16 位或32 位宽(或更高),它取决于平
5、台,C语言规定:long=int=short=char.(这里的=指类型的宽度大于等于)。,2.1.3字符型,2023/9/2,第2章 基本数据类型、运算符和表达式,11,2.1 数据类型历史和特点,2.3 运算符和表达式,第2章 基本数据类型、运算符和表达式,2.4 数据类型转换,2.5 数据的输入输出,2.6 内部函数,2.2 变量和常量,2023/9/2,第2章 基本数据类型、运算符和表达式,12,对于基本数据类型量,按其取值是否可改变又分为常量和变量两种。在程序执行过程中,其值不发生改变的量称为常量,其值可变的量称为变量。与数据类型结合起来分类,分为整型常量、整型变量、浮点常量、浮点变
6、量、字符常量、字符变量、枚举常量、枚举变量。在程序中,常量是可以不经说明而直接引用的,而变量则必须先定义后使用。,2.2 变量和常量,2023/9/2,第2章 基本数据类型、运算符和表达式,13,变量名代表该变量的存储单元及其存放的值,系统为不同类型的变量在内存中开辟不同的存储单元,以便存放相应类型的值;不同类型的变量存放数据的方法也不相同。系统还根据变量的类型检查该变量所进行的运算是否合法,例如只有整型变量和整数才能参与求余(%)运算。,2.2.1 变量,2023/9/2,第2章 基本数据类型、运算符和表达式,14,2.2.1 变量,1.变量的定义和赋值C语言要求程序中使用的每个变量都必须先
7、定义,然后才能使用。定义变量需要用变量定义语句进行,其形式为:类型 变量名=初值,变量名=初值,;,2023/9/2,第2章 基本数据类型、运算符和表达式,15,2.2.1 变量,2.变量中数据的存储C语言中无符号整数的存储相对简单,存储单元的每个二进制位存放的0或1均表示数。有符号整数则用补码表示 实型数据是按指数形式存储的。用一个字节(8位二进制信息)存储字符类型数据。注意:可以把字符型数据看成是整型数据。语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。,2023/9/2,第2章 基本数据类型、运算符和表达式,16
8、,2.2.2 常量,常量可分为直接常量和符号常量,其中直接常量包括:整型常量、实型常量、字符型常量、字符串常量。,2023/9/2,第2章 基本数据类型、运算符和表达式,17,2.2.2 常量,1.整型常量整型常量有三种表示方法:(1)十进制整数:如154、565、-6523。(2)八进制整数:以0开头的数是八进制数。(3)十六进制整数:以0 x开头的数是十六进制数。在上述方法表示的整数后面附一个字母l或L作后缀,即可表示该数据的类型是长整型的。注意:长整型数据和普通整型数据的区别。,2023/9/2,第2章 基本数据类型、运算符和表达式,18,2.2.2 常量,2.实型常量在C语言中,把带小
9、数的数称为实数或浮点数。实型常量只能用十进制形式表示,不能用八进制和十六进制形式表示。实型常量有两种表示方法:小数形式:由数字和小数点组成,如3.1415926、-0.12、.4、3.等都是实数。(2)指数形式:如1.23e5或12.3E4都代表1.23x105。注意:字母e(或E)之前必须有数字,且e后面指数必须为整数,如e3、2.1e3.2、e等都不是合法的指数形式。,2023/9/2,第2章 基本数据类型、运算符和表达式,19,2.2.2 常量,3.字符常量字符型常量是由一对单引号括起来的单个字符构成,在语言中,字符常量有以下特点:(1)字符常量只能用单引号括起来,不能用双引号或其它括号
10、。(2)字符常量只能是单个字符,不能是字符串。(3)字符可以是字符集中任意字符。一个字符型常量的值是该字符集中对应的ASCII编码值。显然5和5 是不同的。,2023/9/2,第2章 基本数据类型、运算符和表达式,20,2.2.2 常量,表2-3 转义字符表,2023/9/2,第2章 基本数据类型、运算符和表达式,21,4.字符串常量C语言中没有专门的字符串类型的变量,但有字符串常量。字符串常量由一对双引号括起来的字符序列组成,如“abc”、“a”等都是字符串常量。双引号仅起定界符的作用。字符串常量与字符常量的区别:(1)字符常量由单引号括起来,字符串常量由双引号括起来。(2)字符常量占一个字
11、节的内存空间。字符串常量在内存中存储时由系统自动在存储的所有字符尾部添加串结束标记0,所以,字符串常量占的内存字节数等于字符串中字符所占的字节数加1。,2.2.2 常量,2023/9/2,第2章 基本数据类型、运算符和表达式,22,5.符号常量符号常量就是使用符号代表常量。C语言中允许用标识符定义一个常量,这种常量定义在C语言中被称之为“宏定义”,其一般形式为:#define 标识符 常量其中#define是一条预处理命令,称为宏定义命令,其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。习惯上,符号常量的标识符用大写字母,变量标识符用小写字母
12、,以示区别。,2.2.2 常量,2023/9/2,第2章 基本数据类型、运算符和表达式,23,2.1 数据类型历史和特点,2.2 变量和常量,第2章 基本数据类型、运算符和表达式,2.4 数据类型转换,2.5 数据的输入输出,2.6 内部函数,2.3 运算符和表达式,2023/9/2,第2章 基本数据类型、运算符和表达式,24,2.3.1 运算符,1.基本的算术运算符C语言中基本的算术运算符共有5种:+(加),-(减),*(乘),/(除),%(取模,或称求余运算符)C语言规定:(1)%运算符仅用于整型变量或整型常量的运算,a%b的结果为a除以b的余数,余数的符号与被除数相同,如:7%3的结果为
13、1;7%-3的结果为1;-7%3的结果为-1。(2)+、-、*、/运算符的两个操作数既可以是整数,也可以是实数。当两个操作数均是整数时,结果仍是整数;若参加运算的两个操作数中有一个是实数,则结果为double型,因为所有实数都按double型进行运算。(3)当对两个整型的数据相除时结果为整数。,2023/9/2,第2章 基本数据类型、运算符和表达式,25,2.3.1 运算符,2.自增、自减运算符 自增运算符+和自减运算符-是C语言中两个较为独特的单目运算符,具有右结合性。它们既可以放在操作数前,也可以放在操作数后,并且操作对象只能是变量,不能是常量或表达式。如5+,+(a+b)等都是错误的。自
14、增自减运算符的作用是将操作对象的值增加1或减去1。如:i+,i-/*表示在使用i值之后将i的值加(减)1*/+i,-i/*表示在使用i值之前将i的值加(减)1*/,2023/9/2,第2章 基本数据类型、运算符和表达式,26,2.3.1 运算符,3.赋值运算符C语言中,赋值被认为是一种运算,由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。其形式是:赋值运算符为“=”,它的作用是将赋值运算符右边表达式或常量的值赋给其左边的变量。赋值表达式的值就是被赋值的变量的值。例如:a=6这个赋值表达式的值是6(变量a的值也是6)。赋值表达式的值也可以再赋给其它变量,如:a=(b=3+5),括
15、号内的b=3+5是一个赋值表达式,其值为8,所以a的值为8,整个表达式的值也为8。,2023/9/2,第2章 基本数据类型、运算符和表达式,27,2.3.1 运算符,4.复合赋值运算符C语言允许在赋值运算符“=”之前加上其他运算符以构成复合的赋值运算符。例如:a+=5;等价于a=a+5;a*=b+5;等价于 a=a*(b+5);凡是双目运算符,都可以和赋值运算符一起组合成复合的赋值运算符。在C语言中,可以使用的复合赋值运算符有:+=,-=,*=,/=,%=,=,&=,=,|=,2023/9/2,第2章 基本数据类型、运算符和表达式,28,2.3.1 运算符,5.关系运算符关系运算实际上就是比较
16、运算。比较两个量的运算符就称为关系运算符。在C语言中为我们提供了6种关系运算符:大于=大于或等于=等于!=不等于 关系运算符都是双目运算符,要求两个操作数是同一种数据类型,其结果为逻辑值。即关系成立时,其值为真,按C语言的习惯,用非0值(一般用1)表示;关系不成立时,其值为假,用0表示。,2023/9/2,第2章 基本数据类型、运算符和表达式,29,6.逻辑运算符语言中为我们提供了三种逻辑运算符,分别是:&与运算|或运算!非运算其中,与运算符&和或运算符|均为双目运算符,非运算符!为单目运算符。例如:a&b 当a,b都为真时,结果为真a|b 当a,b都为假时,结果为假!a 当a为真时,结果为假
17、;当a为假时,结果为真,2.3.1 运算符,2023/9/2,第2章 基本数据类型、运算符和表达式,30,2.3.1 运算符,7.位运算位运算符是以单独的二进制位为操作对象的运算。也就是说,其操作数是二进制数。C语言中提供的位运算符有:按位与(&)、按位或(|)、按位异或()、按位取反()、左移(),,2023/9/2,第2章 基本数据类型、运算符和表达式,31,2.3.1 运算符,8.求字节数运算符 sizeof是C语言的一种单目操作符,并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。sizeof可以用于数据类型和变量。关于siz
18、eof的结果:操作数具有类型char、unsignedchar或signedchar,其结果等于1。因为ANSIC正式规定字符类型为1字节。int、unsignedint、shortint、unsignedshort、longint、unsignedlong、float、double、longdouble类型的sizeof在ANSIC中没有具体规定,大小依赖于实现,一般可能分别为2、2、2、2、4、4、4、8、10。,2023/9/2,第2章 基本数据类型、运算符和表达式,32,2.3.1 运算符,9.逗号运算符用逗号运算符可以将两个表达式连接起来,所形成的就是逗号表达式,其一般形式为:表达式
19、1,表达式2逗号表达式的求值过程是:先求表达式1的值,再求表达式2的值,表达式2的值就是整个逗号表达式的值。逗号表达式的一般形式可以扩展为:表达式1,表达式2,表达式3,表达式n表达式n的值为整个表达式的值。,2023/9/2,第2章 基本数据类型、运算符和表达式,33,2.3.1 运算符,10.条件运算符条件运算符是三目运算符,要求有3个操作对象,并且三个操作对象都是表达式。条件表达式的其一般形式为:表达式1?表达式2:表达式3 条件运算的求值规则为:计算表达式1的值,若表达式1的值为真,则以表达式2的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。注意:(1)条件表达式
20、中,表达式1通常为关系或逻辑表达式,表达式2、3的类型可以是数值表达式、赋值表达式、函数表达式或条件表达式。(2)条件表达式的结果类型:表达式2和表达式3中的较高者。,2023/9/2,第2章 基本数据类型、运算符和表达式,34,2.3.2 表达式,表达式由运算符和操作数构成。操作数可以是常量和变量。表达式的类型就是表达式计算结果的类型。混合于同一表达式中的不同类型常量及变量,应均变换为同一类型的量。C语言的编译程序将所有操作数变换为与最大类型操作数同类型。,2023/9/2,第2章 基本数据类型、运算符和表达式,35,2.3.2 表达式,C语言规定了运算符的优先级和结合性。在表达式求值时,先
21、按运算符的优先级别高低次序执行,例如先乘除后加减。若一个运算对象两侧的运算符的优先级别相同,如a-b+c,则按规定的“结合方向”处理。C规定了各种运算符的结合方向。算术运算符的结合方向为“自左至右”,又成为左结合性,即先左后右,因此b先与减号结合,执行a-b的运算,再执行加c的运算。以后可以看到有些运算符的结合方向为“自右至左”,即右结合性。关系运算符的优先级低于算术运算符,关系运算符中、=、=优先级相同;!=和=的优先级相同,但低于前四种。关系运算符的结合性均为左结合,若有多个关系运算同时进行时,先按优先级次序运算,优先级相同时从左向右计算。,2023/9/2,第2章 基本数据类型、运算符和
22、表达式,36,逻辑运算符中,非运算符(!)和单目的算术运算符同级,高于双目的算术运算符,优先于关系运算符,优先于逻辑运算符与(&)和或(|),与(&)运算高于或(|)运算。逻辑运算符中,非运算符(!)的结合性为右结合;与运算(&)和或运算(|)的结合性为左结合。条件运算符的优先级低于关系运算符和算术运算符,高于赋值运算符。因此,表达式max=(ab)?a:b可以去掉括号,写为max=ab?a:b,执行时意义是相同的。条件运算符的结合方向是自右至左。,2.3.2 表达式,2023/9/2,第2章 基本数据类型、运算符和表达式,37,赋值运算符和复合赋值运算符的优先级相同,且都具有右结合性。它们的
23、优先级除了比逗号运算符的优先级高以外,比其它运算符的优先级都低。逗号运算符是所有运算符中级别最低的。例如:逗号表达式:x=2,4*5运算时,先算第一个赋值表达式x=2,再算算术表达式4*5,最后算整个逗号表达式的值。逗号表达式的值为算术表达式的值20。,2.3.2 表达式,2023/9/2,第2章 基本数据类型、运算符和表达式,38,2.1 数据类型历史和特点,2.2 变量和常量,2.3 运算符和表达式,第2章 基本数据类型、运算符和表达式,2.5 数据的输入输出,2.6 内部函数,2.4 数据类型转换,2023/9/2,第2章 基本数据类型、运算符和表达式,39,C语言允许不同数据类型相互转
24、换。类型转换有三种方式:自动类型转换、赋值类型转换和强制类型转换。,2023/9/2,第2章 基本数据类型、运算符和表达式,40,2.4.1 类型自动转换,高 double float long unsigned 低 int char,short,2023/9/2,第2章 基本数据类型、运算符和表达式,41,2.4.2 赋值类型转换,赋值运算时,如果赋值运算符两侧的类型(指基本类型)不一致,系统自动将表达式的值转换成变量的类型存到变量的存储单元,转换的结果可能出现以下情况:(1)当整型数据赋给浮点型变量时,数值上不发生任何变化,但有效位增加。如:float f;f=16;/*内存中变量f的值为
25、16.000000*/(2)当单、双精度浮点型数据赋给整型变量时,浮点数的小数部分将被舍弃。如:int a;a=8.38;/*内存中变量a的值为8*/,2023/9/2,第2章 基本数据类型、运算符和表达式,42,2.4.2 赋值类型转换,(3)将字符型数据赋给整型变量时,由于字符只占一个字节,而整型变量为2个字节,因此将字符数据(8位)放到整型变量低8位中。有两种情况:将unsigned char型数据赋给unsigned int或int型变量时,高8位补0。将char型数据赋给unsigned int或int型变量时,若字符值最高位为0,则高8位补0;若字符值最高位为1,则高8位全补1。实
26、际上,长度短的整型数据赋给长度长的变量时,都有类似的处理方法。如unsigned int型数据赋给unsigned long或long型变量时,处理方法类似情况,即将高16位补0;int型数据赋给unsigned long或long型变量时,处理方法类似情况,对高16位分情况处理。,2023/9/2,第2章 基本数据类型、运算符和表达式,43,2.4.2 赋值类型转换,(4)当长度长的整型数据赋给长度短的变量时,将进行截断赋值。如将一个long型数据赋给一个int或unsigned int型变量时,只将long型数据的低16位原封不动送到变量中。,(5)当整型数据赋给长度相同的变量时,将进行原
27、样赋值。,2023/9/2,第2章 基本数据类型、运算符和表达式,44,2.4.3 强制类型转换,可以利用强制类型转换运算符将一个表达式强制转换成所需类型。强制类型转换的一般形式为:(类型名)(表达式)【注意】(1)表达式应该用括号括起来。例如:(int)(a+b);/*表示将表达式a+b结果的类型强制 转换成int型*/(int)a+b;/*表示将变量a的类型强制转换成int型后,再进行运算*/(2)经强制类型转换后,得到的是一个所需类型的中间变量,原来变量的类型并没有发生任何变化。,2023/9/2,第2章 基本数据类型、运算符和表达式,45,2.1 数据类型历史和特点,2.2 变量和常量
28、,2.3 运算符和表达式,第2章 基本数据类型、运算符和表达式,2.4 数据类型转换,2.6 内部函数,2.5 数据的输入输出,2023/9/2,第2章 基本数据类型、运算符和表达式,46,C语言的输入和输出功能由标准输入输出库函数来实现。,stdio.h是标准的输入输出函数库头文件,包括putchar(输出字符),getchar(输入字符),printf(格式输出),scanf(格式输入),puts(输出字符串),gets(输入字符串)等函数。考虑到printf、scanf使用频繁,系统允许在使用这两个函数时可省略#include命令。而使用其他函数必须使用预编译命令“#include”,将
29、有关的“头文件”包含到用户源文件中,#include命令一般放在程序的开头。,2023/9/2,第2章 基本数据类型、运算符和表达式,47,2.5.1 格式化输出函数printf,printf函数的功能是向系统指定的设备输出若干个任意类型的数据。1.printf函数调用形式printf函数是一个标准库函数,其调用的一般形式:printf(格式控制字符串,输出列表);(1)格式控制字符串是用双引号括起来的字符串,它包括两个信息:格式说明部分。由“%”开头和格式字符结尾,如%d,%c,%f等。它的作用是将要输出的数据转化成指定的格式输出,格式说明都是由“%”字符开始的。一般字符(非格式字符)。即按
30、原样输出的字符,在显示时起提示作用。它由普通字符和转义字符构成。如:printf(na=%dn,a);/*双引号内换行符、字符c=都是原样输出字符*/,2023/9/2,第2章 基本数据类型、运算符和表达式,48,2.5.1 格式化输出函数printf,(2)输出列表是需要输出的一些数据,如变量、函数、表达式。输出列表的个数与格式说明符的个数一般应保持一致。如:,2023/9/2,第2章 基本数据类型、运算符和表达式,49,2.5.1 格式化输出函数printf,2.格式说明格式说明符由“%”开头,以一个英文字母结束,它表明输出数据的类型;其间还可以有一些格式控制字符,用以说明数据输出的长度、
31、位数、对齐方式等。%-+0#输出数据最小宽度m.精度n数据长度类型其中:表示可选项。格式控制字符-、+、0、#的具体含义如表2-5所示。,2023/9/2,第2章 基本数据类型、运算符和表达式,50,2.5.1 格式化输出函数printf,2023/9/2,第2章 基本数据类型、运算符和表达式,51,2.5.1 格式化输出函数printf,输出数据最小宽度m:m是十进制整数,它表示用十进制输出的最少位数,当需要输出的数据长度超过该数时,该选项不起作用,数据按实际位数进行输出,当需要输出的数据长度小于该数时,则在该数的左边补空格或0。.精度n:是“.”加上十进制整数n。其含义是:如果输出的是数值
32、,则该数表示小数位数,若实际位数大于所定义的精度,则截去超过部分;如果输出的是字串,则表示输出字符的个数。数据长度:是字符,它有两种形式:h、l。h表示按短整型量输出,l表示按长整型量输出。类型:是格式说明符中必须要有的,它表示输出列表里要输出的数据类型。表2-6给出了常用的类型格式符及含义。,2023/9/2,第2章 基本数据类型、运算符和表达式,52,2.5.1 格式化输出函数printf,2023/9/2,第2章 基本数据类型、运算符和表达式,53,2.5.1 格式化输出函数printf,在使用printf函数时,要注意以下几个问题:(1)在格式控制字符串中可包“转义字符”,如n、t、r
33、、b、377等。(2)控制输出类型的格式符除X(表示输出的十六进制数用大写字母输出)、E(表示输出的指数e用大写字母E输出)、G(表示若选用指数形式输出,则用大写字母E输出)外,其余必须是小写字母,如%d不能写成%D。(3)若想输出字符“%”,则在格式字符串中用连续两个%表示。如:printf(%f%,1.0/4);则输出:0.250000%,2023/9/2,第2章 基本数据类型、运算符和表达式,54,(4)输出是从右向左计算输出项后,按格式说明的顺序对应输出。一般格式说明和输出项的个数和类型应相同,如不匹配系统并不报错,系统将按以下操作。a、格式说明的个数少于输出项的个数,多余的输出项将不
34、输出;格式说明的个数多于输出项的个数,多余的格式说明将输出随机的值。b、整型数据按%f 输出,出现运行错误;实型数据按%d 输出,运行错结果为0;,2.5.1 格式化输出函数printf,2023/9/2,第2章 基本数据类型、运算符和表达式,55,2.5.2 格式化输入函数scanf,scanf函数的功能是从键盘上将数据按用户指定的格式输入并赋给指定的变量。1.scanf函数调用形式scanf函数是一个标准库函数,其调用的一般形式:scanf(格式控制字符串,地址列表);其中格式控制字符串的定义与使用方法和printf函数大致相同,但不能显示非格式字符串,即不能显示提示字符串。地址列表是要赋
35、值的各变量地址。地址是由地址运算符“&”后跟变量名组成,如&x表示变量x的地址。&是取地址运算符,其作用是求变量的地址。,2023/9/2,第2章 基本数据类型、运算符和表达式,56,2.5.2 格式化输入函数scanf,2.格式说明符与printf函数中的格式说明符相似,以%开始,后面跟一个格式符,中间可以有若干个附加字符,格式字符串的一般形式为:%输入数据宽度m长度 类型其中:表示可选项:表示输入的数值不赋给相应的变量,即跳过该数据不读。输入数据宽度m:m是十进制正整数,表示按m的宽度输入数据。长度:长度格式符为l和h,l表示输入长整型数据或双精度实型数据;h表示输入短整型数据。,2023
36、/9/2,第2章 基本数据类型、运算符和表达式,57,2.5.2 格式化输入函数scanf,类型:是格式说明符中必须要有的,其格式符的意义与printf函数基本相同,2023/9/2,第2章 基本数据类型、运算符和表达式,58,2.5.2 格式化输入函数scanf,说明:(1)对unsigned型变量所需的数据,可以用%u,%d,%o,或%x格式输入;(2)可以指定输入数据所占列数,系统自动按它截取所需数据。(3)如果在一个%后有一个*附加说明符,表示跳过它指定的列数。(4)输入数据时不能规定数据的精度。例如scanf(%8.2f,是不合法的。,2023/9/2,第2章 基本数据类型、运算符和
37、表达式,59,2.5.2 格式化输入函数scanf,在使用scanf函数时,要注意以下几个问题:scanf函数中的“格式控制字符串”后面应该是变量的地址,而不应是变量名,这是C语言与其他高级语言不同的地方。例如不能将语句scanf(“%d,%d”,则输入时应输入:a=12,b=-2其他任何输入形式都不正确。,2023/9/2,第2章 基本数据类型、运算符和表达式,60,(3)输入数据时,遇到以下情况认为该数据输入结束:按指定的宽度结束;遇空格,或“回车”键,或“Tab”键;遇到非法输入。如:scanf(%3d%d%c%f,若输入:12345a234o.78第一个数据取3位,即将123赋给变量a
38、。45后面遇字母a,表示45后没有数据了,因此将45赋给第二个变量b。字符a赋给第三个变量str。由于%c要求只能输入一个字符,因此输入字符a之后不需要加空格,直接将后面的数据赋给第四个变量c。由于将数据2340.78错输入成234o.78,即在234后面出现了字母o,因此就认为该数据到此结束,所以将234赋给变量c。,2.5.2 格式化输入函数scanf,2023/9/2,第2章 基本数据类型、运算符和表达式,61,(4)在用“%c”格式输入字符时,所有输入的字符(包括空格字符和“转义字符”)都作为有效字符。例如:scanf(%c%c%c,若输入为:abc 则把字符a赋给变量a,把字符空格赋
39、给变量b,把字符b赋给变量c。(5)当输出的类型格式符与数据的类型不一致时,虽然编译没有提示出错,但结果有可能不正确。,2.5.2 格式化输入函数scanf,2023/9/2,第2章 基本数据类型、运算符和表达式,62,2.5.3 字符数据的输入与输出,1.字符输入函数getchar字符输入函数getchar()的功能是从标准设备(键盘)上读入一个字符。其一般调用形式:getchar();该函数没有参数,但一对圆括号不能省略。getchar()只能从键盘上接收一个字符,其常用形式:ch=getchar()与scanf(“%c”,&ch)等价。在使用这个函数时,程序的头部一定要加上文件包含命令:
40、#include,2023/9/2,第2章 基本数据类型、运算符和表达式,63,2.5.3 字符数据的输入与输出,2.字符输出函数putchar函数putchar()的功能是向标准输出设备(显示器)输出一个字符。其一般调用形式:putchar(c);其中c是参数,它可以是整型或字符型变量,也可以是整型或字符型常量或表达式。当是整型量时,输出以该数值作为ASCII码所对应的字符;当是字符型量时,直接输出字符。其功能和printf(“%c”,c)等价。,2023/9/2,第2章 基本数据类型、运算符和表达式,64,2.5.4 字符串的输入与输出,1.字符串输入函数getsgets()函数用来从标准
41、输入设备(键盘)读取字符串直到回车结束,但回车符不属于这个字符串。调用格式为:gets(s);其中s为字符串变量(字符串数组名或字符串指针)。gets(s)函数与scanf(%s,&s)相似,但不完全相同,使用scanf(%s,&s)函数输入字符串时存在一个问题,就是如果输入了空格会认为输入字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到回车为止。,2023/9/2,第2章 基本数据类型、运算符和表达式,65,2.5.4 字符串的输入与输出,2.字符串输出函数putsputs()函数用来向标准输出设备(屏幕)写字符串并换行,其调用格式为:puts(s
42、);其中s为字符串变量(字符串数组名或字符串指针)。puts()函数的作用与语句printf(“%sn”,s)相同。但puts()函数只能输出字符串,不能输出数值或进行格式变换。另外,可以将字符串直接写入puts()函数中。例如:puts(Hello,Turbo C2.0);,2023/9/2,第2章 基本数据类型、运算符和表达式,66,2.1 数据类型历史和特点,2.2 变量和常量,2.3 运算符和表达式,第2章 基本数据类型、运算符和表达式,2.4 数据类型转换,2.5 数据的输入输出,2.6 内部函数,2023/9/2,第2章 基本数据类型、运算符和表达式,67,2.6 内部函数,C语言
43、提供的函数以库文件的形式存放在系统中。用户在使用函数库时无需定义和说明,只需在程序前包含该函数原型的头文件,就可以在程序中直接使用。使用库函数应清楚四个方面的内容:函数的功能及所能完成的操作,参数的数目和顺序,以及每个参数的意义及类型,返回值的意义及类型,需要使用的包含文件。,2023/9/2,第2章 基本数据类型、运算符和表达式,68,2.6 内部函数,常见的有九大类库函数:I/O 函数、字符串、内存和字符函数、数学函数、时间、日期和与系统有关的函数、动态存储分配、目录管理、过程控制、字符屏幕和图形功能、其它函数。,2023/9/2,第2章 基本数据类型、运算符和表达式,69,2.6 内部函数,1、用include命令(#开头,后面没有;)如:#include“stdio.h”/或#include#include“math.h”2、调用形式:函数名(参数表)如:y=sqrt(x);ch=getchar();printf(“jhfjdgn”);,2023/9/2,第2章 基本数据类型、运算符和表达式,70,2.6 内部函数,2023/9/2,第2章 基本数据类型、运算符和表达式,71,
链接地址:https://www.31ppt.com/p-5907801.html