《C语言程序设计 第2章 数据类型.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计 第2章 数据类型.ppt(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第2 2章章数据类型与基本操作数据类型与基本操作l 本章要点本章要点 数据类型数据类型;常量、变量和标识符常量、变量和标识符;算术运算符、算术运算符、赋值运算符、自增赋值运算符、自增/自减运算符及表达式自减运算符及表达式;数据类型转换、输入输出函数数据类型转换、输入输出函数本章主要内容是常量、变量等基本概念和各种运算符号本章主要内容是常量、变量等基本概念和各种运算符号的用法,及输入输出函数的用法,大部分内容需要记忆,的用法,及输入输出函数的用法,大部分内容需要记忆,学习时不但要掌握运算符的写法,还要掌握其优先级及学习时不但要掌握运算符的写法,还要掌握其优先级及结合性,应注意归纳,列出记忆要点
2、。结合性,应注意归纳,列出记忆要点。l 学习方法建议学习方法建议l 本章内容本章内容2.1 基本数据类型与常数的表示基本数据类型与常数的表示2.2变量与内存变量与内存2.3运算符与表达式运算符与表达式2.4 输入输出函数输入输出函数2.1 基本数据类型与常数的表示基本数据类型与常数的表示2.1.1 2.1.1 基本数据类型基本数据类型 数据类型数据类型构造类型构造类型指针类型指针类型空类型(空类型(无值类型)无值类型)voidvoid枚举类型枚举类型枚举类型枚举类型 enumenumenumenum数组类型数组类型数组类型数组类型结构体类型结构体类型结构体类型结构体类型 structstruc
3、tstructstruct共用体类型共用体类型共用体类型共用体类型 unionunionunionunion基本类型基本类型整型整型整型整型 intintintint字符型字符型字符型字符型 charcharcharchar实型(浮点型)实型(浮点型)实型(浮点型)实型(浮点型)单精度实型单精度实型单精度实型单精度实型 floatfloatfloatfloat双精度实型双精度实型双精度实型双精度实型 doubledouble上一页上一页下一页下一页返返 回回2.1.2 常量常量1.整型常量整型常量(1)十进制整数:由正负号及)十进制整数:由正负号及0 9 十个数字组成,如:十个数字组成,如:2
4、55、-32768、0等;等;(2)八进制整数:以)八进制整数:以0开头(不是字母开头(不是字母“o”),后跟),后跟0 7 八个数字组成,八个数字组成,如:如:010、027等;等;(3)十六进制整数:以)十六进制整数:以0 x或或0X开头,后跟开头,后跟0 9十个数字及十个数字及A F(或(或a f)六个字符(分别对应数字)六个字符(分别对应数字10、11、12、13、14、15)组成,如:)组成,如:0XDE、0 x5A等;等;在在C语语言言中中,常常量量有有数数值值常常量量(包包括括整整型型常常量量和和实实型型常常量量)、字符常量、字符串常量及符号常量等。)、字符常量、字符串常量及符号
5、常量等。上一页上一页下一页下一页返返 回回1小数形式:由数字、正负号和小数点组成(必须要有小数点)。小数形式:由数字、正负号和小数点组成(必须要有小数点)。如如0.12、.50、-25.、0.02指数形式:书写时,指数形式:书写时,e(或(或E)之前必须有数字,)之前必须有数字,e(或(或E)后面的)后面的指数必须为整数。指数必须为整数。如如1e2、9.5e-3、35e-6,分别代表,分别代表1102,9.510-3,3510-6。2.实型常量实型常量实型常量即实数,又称为浮点数实型常量即实数,又称为浮点数上一页上一页下一页下一页返返 回回3.字符型常量字符型常量字符形式字符形式 含含义义字符
6、形式字符形式 含含 义义n换换行符行符t横向跳格符横向跳格符0空字符空字符单单引号引号双引号双引号反斜反斜线线常见的转义字符如表下表。常见的转义字符如表下表。C语言中还允许使用一种特殊形语言中还允许使用一种特殊形式的字符常量,称为转义字符,式的字符常量,称为转义字符,它们总是以一个反斜线开头后跟一个特定的字符,用来代表某一它们总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的个特定的ASCII字符,这些字符常量也必须括在一对单引号内。字符,这些字符常量也必须括在一对单引号内。字符常量是用单引号括起来的一个字符,如字符常量是用单引号括起来的一个字符,如A、d、3、等;等;C语言规定,所
7、有字符常量都作为整型量来处理,在计算机内部,其对语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是应的整数值就是ASCII字符集中该字符的序号(即:字符集中该字符的序号(即:ASCII码值)。码值)。因此字符常量因此字符常量A的值为的值为65、a的值为的值为97,0的值为的值为48,(空格符)的值为(空格符)的值为32。上一页上一页下一页下一页返返 回回4.字符串常量字符串常量字符串在内存中占用的字节数要比字符串长度多字符串在内存中占用的字节数要比字符串长度多1,因为,因为C语言总是自动地在字符串尾部加上一个语言总是自动地在字符串尾部加上一个转义字符转义字符0(空字符,
8、其(空字符,其ASCII码值为码值为0)作为)作为字符串的结束标志,系统据此判断字符串是否结字符串的结束标志,系统据此判断字符串是否结束。束。字符串常量是用双引号括起来的若干个字符的字符序列,如字符串常量是用双引号括起来的若干个字符的字符序列,如“c”、“abc”、“”、“”等。字符串常量中双引号仅起等。字符串常量中双引号仅起定界符的作用,并不是字符串中的字符,因此双引号之间的字符定界符的作用,并不是字符串中的字符,因此双引号之间的字符个数才是字符串的长度。个数才是字符串的长度。上一页上一页下一页下一页返返 回回5.符号常量符号常量 用标识符(即符号)来表示常量,称符号常量。用标识符(即符号)
9、来表示常量,称符号常量。在在C语言中有两种方法定义符号常量:语言中有两种方法定义符号常量:使用编译预处理命令使用编译预处理命令define,例如:,例如:#define PI 3.14159。使用常量说明符使用常量说明符const,例如:,例如:const float PI=3.14159。上一页上一页下一页下一页返返 回回例例 符号常量的使用符号常量的使用#include#define PRICE 30void main()int num,total;num=10;total=num*PRICE;printf(total=%dn,total);运行结果:运行结果:total=300total
10、=300上一页上一页下一页下一页返返 回回【例例2.1】几个常数的输出几个常数的输出#includemain()printf(输出各种常数:输出各种常数:n);printf(整型常数:整型常数:%dt实型常数实型常数:%ft字符字符常数:常数:%cn,625,0.325e-2,!);2.2 变量与内存变量与内存2.1.1 标识符标识符用来标识变量名、符号名、函数名、数组名、文件名以及一些具有专门用来标识变量名、符号名、函数名、数组名、文件名以及一些具有专门含义的名字的有效字符序列,称为标识符。它必须遵循以下规则:含义的名字的有效字符序列,称为标识符。它必须遵循以下规则:(1)第一个字符必须是英
11、文字母或下划线;)第一个字符必须是英文字母或下划线;(2)第二个字符及以后的字符可以是英文字母、数字和下划线;)第二个字符及以后的字符可以是英文字母、数字和下划线;(3)字符长度一般不超过)字符长度一般不超过8个(可因机器及个(可因机器及C编译系统而不同);编译系统而不同);(4)英文字母的大小写不等价,即)英文字母的大小写不等价,即C语言区分字母的大小写;语言区分字母的大小写;C语言的标识符可以分为以下三类:语言的标识符可以分为以下三类:(1)关键字)关键字 (2)预定义标识符)预定义标识符 (3)用户标识符)用户标识符例:判断下列标识符号合法性sum Sum M.D day Date 3d
12、ays student_name#33 lotus_1_2_3 char ab _above$123上一页上一页下一页下一页返返 回回 变量必须先定义后使用,变量必须先定义后使用,C语言在定义变量的同时说明该变量的类型,语言在定义变量的同时说明该变量的类型,系统在编译时就能根据其类型为它分配相应大小的存储单元。系统在编译时就能根据其类型为它分配相应大小的存储单元。2.2.2 变量的定义与初始化变量的定义与初始化 变量的定义格式为:变量的定义格式为:数据类型数据类型 变量名表;变量名表;如:如:int a,b;/*定义定义a,b为整型变量为整型变量*/float x;/*定义定义x为单精度实型变
13、量为单精度实型变量*/C语言提供了字符型、整型、实型等基本数据类型语言提供了字符型、整型、实型等基本数据类型的同时,也提供了数组、结构体、共用体等构造类型,的同时,也提供了数组、结构体、共用体等构造类型,另外还提供了指针类型和空类型。另外还提供了指针类型和空类型。上一页上一页下一页下一页返返 回回例2.2 整型和单精度型变量#includemain()int a,b,c;float x;a=625;b=-325;c=a+b;x=3.15;printf(a=%d,b=%d,c=%d,x=%fn,a,b,c,x);变量与内存的关系编译程序根据变量定义为其分配指定字节的内存单元.地址int a=1,
14、b=-3,c;abc4字节4字节4字节地址地址.内存1-3随机数上一页上一页下一页下一页返返 回回(1)基本型的整型变量用关键字)基本型的整型变量用关键字int进行定义,例如:进行定义,例如:int i,j,k;/*定义变量定义变量i,j,k为整型为整型*/C语言规定:可以在定义变量的同时给变量赋初值,称为变量初语言规定:可以在定义变量的同时给变量赋初值,称为变量初始化。始化。如:如:int i=1,j=0,k=2;(2)短整型变量用关键字)短整型变量用关键字short int或或short定义,如定义,如short a,b;(3)长整型变量用关键字)长整型变量用关键字long int或或lo
15、ng定义,如定义,如long x,y;若变量不指定为无符号型(若变量不指定为无符号型(unsigned),则隐含为有符号型),则隐含为有符号型(signed)。)。1 整型变量整型变量整型变量可以分为有符号型和无符号型两种。有符号型和无符整型变量可以分为有符号型和无符号型两种。有符号型和无符号型又分别包含基本型、短整型、长整型三种。号型又分别包含基本型、短整型、长整型三种。上一页上一页下一页下一页返返 回回VC+6.0中定义的整型数所占的字节数和数值范围。中定义的整型数所占的字节数和数值范围。整型数据整型数据类类型型所占位数所占位数所占字所占字节节数数 数的表示范数的表示范围围signed i
16、nt324-2147483648214748367,即,即-231231-1signed short int162-3276832767,即,即-215215-1signed long int324-2147483648214748367,即,即-231231-1unsigned int32404294967295,即,即0232-1unsigned short int162065535,即,即0216-1unsigned long int32404294967295,即,即0232-1上一页上一页下一页下一页返返 回回 在一般的计算机系统中,为在一般的计算机系统中,为float类型的变量分配
17、类型的变量分配4个字节的个字节的存储单元,为存储单元,为double类型的变量分配类型的变量分配8个字节的存储单元。个字节的存储单元。在在VC+6.0中中float类型数值范围约在类型数值范围约在-10381038之间,并提之间,并提供供7位有效字位;位有效字位;double类型的数值范围约在类型的数值范围约在-1030810308之间,之间,并提供并提供16位左右有效字位。位左右有效字位。在内存中,实数一律是用指数形式存放的。在内存中,实数一律是用指数形式存放的。注意:在计算机中可以精确地存放一个整数,不会出现误差注意:在计算机中可以精确地存放一个整数,不会出现误差,但整数范围比实数小。实数
18、的范围比整数大,但往往存在误差。,但整数范围比实数小。实数的范围比整数大,但往往存在误差。2.实型变量实型变量 C语言中实型变量分为单精度型和双精度型两种,分别用关键字语言中实型变量分为单精度型和双精度型两种,分别用关键字float和和double进行定义。进行定义。例如:例如:float a,b;double c,d;例例2.3 长整型与双精度型的比较长整型与双精度型的比较#includemain()long a=123456789L;double x=2.0,y;y=x/3.0;printf(a=%ld,y=%20.18fn,a,y);上一页上一页下一页下一页返返 回回 C语言中,字符变量
19、用关键字语言中,字符变量用关键字char进行定义,在定义的同时可以赋初值。进行定义,在定义的同时可以赋初值。例如:例如:char ch1=A,ch2=B,ch3;字符变量在内存中占一个字节,可以存放字符变量在内存中占一个字节,可以存放ASCII字符集中的任何字符。字符集中的任何字符。3.字符型变量字符型变量当把字符放入字符型变量中时,字符变当把字符放入字符型变量中时,字符变量中的值就是该字符的量中的值就是该字符的ASCII代码值,所代码值,所以字符变量可以作为整型变量来处理,以字符变量可以作为整型变量来处理,可以参与整型变量所允许的任何运算。可以参与整型变量所允许的任何运算。例如:例如:cha
20、r c1,c2,c3;int k=5;c1=1;c2=c1+1;c3=(c2+32+k)%25例例2.4 字符数据与整型数据字符数据与整型数据#includemain()char ch1,ch2;ch1=a;ch2=65;printf(ch1=%c,ch1=%dn,ch1,ch1);printf(ch2=%c,ch2=%dn,ch2,ch2);上一页上一页下一页下一页返返 回回例例2.5 将小写字母转成大写字母将小写字母转成大写字母#includemain()char ch1=b,ch2;int i;i=a-A;ch2=ch1-i;printf(ch1=%c,ch2=%c,i=%dn,ch1,
21、ch2,i);上一页上一页下一页下一页返返 回回2.3 运算符与表达式运算符与表达式2.3.1 算术运算符与表达式算术运算符与表达式 说明:说明:(1)除法运算符)除法运算符/,若两侧运算对象均为整型值时,则商也为整型,若两侧运算对象均为整型值时,则商也为整型,即舍掉小数部分。即舍掉小数部分。例如:例如:5/2的结果为的结果为2,1/2的结果为的结果为0 如果参与运算的两个数中有一个为实数,则运算结果为实数。如果参与运算的两个数中有一个为实数,则运算结果为实数。例如:例如:5.0/2的结果为的结果为2.5,1/2.0的结果为的结果为0.5,3.0/2.0的结果为的结果为1.5(2)求余运算符)
22、求余运算符%,仅用于整型变量或整型常量,结果为整除后的余,仅用于整型变量或整型常量,结果为整除后的余数,其符号在数,其符号在VC+6.0系统中取决于被除数。系统中取决于被除数。例如:例如:5%3的值为的值为2,2%3的值为的值为2,-7%4的值为的值为-3,7%-4的值为的值为3,-7%-4的值为的值为-3。(3)优先级)优先级 *、/、%,+、-(4)结合性(运算方向)结合性(运算方向)从左到右从左到右加,减,乘,除及求余(取模)加,减,乘,除及求余(取模)5种,分别用种,分别用+,-,*,/,%来表示。来表示。1.算术表达式算术表达式2.算术表达式算术表达式算术表达式采用线性书写形式,运算
23、对象和运算符都要写在一条横线上。算术表达式采用线性书写形式,运算对象和运算符都要写在一条横线上。例如:例如:2+sqrt(c)*b就是一个合法的算术表达式。就是一个合法的算术表达式。运算规则和要求如下:运算规则和要求如下:(1)在算术表达式中,可使用多层圆括号,)在算术表达式中,可使用多层圆括号,但左右括号必须配对,圆括号优先级最高。但左右括号必须配对,圆括号优先级最高。(2)若表达式中运算符的优先级相同时,则)若表达式中运算符的优先级相同时,则按运算符的结合方向进行。按运算符的结合方向进行。例2.6 将一个三位整数365转换为563,调换个位与百位数字#includemain()int x=
24、365,a,b,c,y;c=x%10;b=x/10%10;a=x/100;y=c*100+b*10+a;printf(x=%d,y=%dn,x,y);上一页上一页下一页下一页返返 回回2.3.2 赋值运算符及其表达式赋值运算符及其表达式C语言的赋值运算符为语言的赋值运算符为“=”,它的作用是将赋值运算符右边表达式,它的作用是将赋值运算符右边表达式的值赋给其左边的变量。形式如下:的值赋给其左边的变量。形式如下:变量名变量名=表达式表达式赋值表达式的处理过程是:先计算赋值表达式的处理过程是:先计算“=”右侧表达式的值右侧表达式的值,然后将该值赋给左侧的变量。,然后将该值赋给左侧的变量。例如:例如:
25、a=1,b=a+2,前者是把常量前者是把常量1赋给变量赋给变量a,后者是将表达式,后者是将表达式a+2的值赋给变量的值赋给变量b。赋值运算符的左侧只赋值运算符的左侧只能是变量,不能是常能是变量,不能是常量或表达式。量或表达式。右结合右结合性性C语言规定可以使用语言规定可以使用10种复合赋值运算符,种复合赋值运算符,其中与算术运算有关其中与算术运算有关的复合赋值运算符是:的复合赋值运算符是:+=、-=、*=、/=、%=。表达式表达式n+=1的运算规则等的运算规则等价于价于n=n+1,表达式,表达式n*=m+3的运算规则等价于的运算规则等价于n=n*(m+3),例2.7 变量的读写操作#inclu
26、demain()int a=15,b=23,c=5,t;printf(a=%d,b=%d,c=%dn,a,b,c);t=a;a=b;b=t;printf(a=%d,b=%dn,a,b);c=c+1;printf(c=%dn,c);上一页上一页下一页下一页返返 回回2.3.3 数据类型转换数据类型转换1.自动转换自动转换上一页上一页下一页下一页返返 回回字符型字符型整型整型单精度实型单精度实型双精度实型双精度实型例如:例如:float y;int x=16;y=40/x;y结果是结果是2.0,而不是,而不是2.5。转换方向转换方向2.强制转换强制转换一般形式如下所示:一般形式如下所示:(类型名)
27、(表达式)(类型名)(表达式)例如:例如:(int)(a+b),将,将a+b的结果强制转换成的结果强制转换成int型;型;若若a=3,b=4,则则(float)a/(float)b的结果的结果为为0.75,而而(float)(a/b)的的结果为结果为0注意:经强制类型转换后,注意:经强制类型转换后,得到的是一个所需类型的得到的是一个所需类型的中间变量,原来变量的类中间变量,原来变量的类型并没有发生任何变化。型并没有发生任何变化。上一页上一页下一页下一页返返 回回2.3.4 常用数学函数常用数学函数1.头文件包含#include 2.函数原型绝对值函数 int abs(int x)绝对值函数 d
28、ouble fabs(double x)平方根函数 double sqrt(double x)幂函数xy double pow(double x,double y)3.参数的定义域 负数不能求平方根,三角函数的自变量为弧度例例2.8 几个常用数学库函数的作法几个常用数学库函数的作法#include#includemain()printf(abs(-5)=%d,abs(5)=%dn,abs(-5),abs(5);printf(sqrt(2)=%20.16fn,sqrt(2);printf(pow(2,3)=%f,pow(2.0,0.5)=%fn,pow(2,3),pow(2,0.5);print
29、f(exp(1)=%fn,exp(1);printf(sin(x)=%fn,sin(30*3.14/180);上一页上一页下一页下一页返返 回回2.3.5 几个特殊的运算符几个特殊的运算符1.自增自增/自减运算符及其表达式自减运算符及其表达式自增运算符(自增运算符(+)和自减运算符()和自减运算符(-)都是单目运算符,)都是单目运算符,其作用是使变量的值增其作用是使变量的值增1或减或减1。如。如i+,相当于,相当于i=i+1;i-;相当于相当于i=i-1。因此,自加。因此,自加/自减运算本身也是一种赋值运算。自减运算本身也是一种赋值运算。自增自增/自减运算符构成表达自减运算符构成表达式时,既可
30、以前缀形式出式时,既可以前缀形式出现,也可以后缀形式出现,现,也可以后缀形式出现,但其意义不同,其运算对但其意义不同,其运算对象只能是变量,不能是常象只能是变量,不能是常量或表达式。量或表达式。+i,-i /*在使用在使用i之前,之前,先使先使i的值加(减)的值加(减)1*/i+,i-/*在使用在使用i之后之后,再使再使i的值加(减)的值加(减)1*/例如:例如:i=2;j=+i;/*i,j的值均为的值均为3*/i=2;j=i+;/*j的值为的值为2,i变为变为3*/i=2;j=-i;/*i,j的值均为的值均为1*/i=2;j=i-;/*j的值为的值为2,i变为变为1*/例例2.9 自增运算自
31、增运算#includemain()int a=3,b=4,c,d;c=a+;d=+b;printf(a=%d,b=%d,c=%d,d=%dn,a,b,c,d);上一页上一页下一页下一页返返 回回2.逗号运算符及其表达式逗号运算符及其表达式逗号运算符可将两个或两个以上的表达式连接起来构成逗号表达式。逗号运算符可将两个或两个以上的表达式连接起来构成逗号表达式。逗号表达式的形式为:表达式逗号表达式的形式为:表达式1,表达式,表达式2,表达式表达式n;逗号表达式的执行逗号表达式的执行过程是:先求表达式过程是:先求表达式1的值,再求表达式的值,再求表达式2的值,的值,再求表,再求表达式达式n的值,表达式
32、的值,表达式n的值就是整个逗的值就是整个逗号表达式的值。号表达式的值。不是任何地方出现的不是任何地方出现的逗号都作为逗号运算符,逗号都作为逗号运算符,如如printf(d,d,a,b);其中的逗号不是运算符,其中的逗号不是运算符,而是分隔符。而是分隔符。prinprinttf(“d,d”,(a,b,c),b);其中其中(a,b,c)中的中的“,”是逗号运算符,是逗号运算符,上一页上一页下一页下一页返返 回回2.4 输入与输出函数输入与输出函数文件开头应有以下预编译命令:文件开头应有以下预编译命令:#include 或或#include stdio.h2.4.1 格式输出函数(格式输出函数(pr
33、intf()1printf()函数的一般格式函数的一般格式printf(格式控制,输出表列)(格式控制,输出表列)格式控制:是用双引号括起来的字符串,格式控制:是用双引号括起来的字符串,它包括:它包括:格式说明:由格式说明:由“%格式字符格式字符”组成,组成,如如%d,%f等。其作用是将输出的数据转等。其作用是将输出的数据转换为指定的格式输出。换为指定的格式输出。普通字符:原样输出。普通字符:原样输出。输出表列:是需要输出的输出表列:是需要输出的一些数据,可以是常量、一些数据,可以是常量、变量和表达式。变量和表达式。例如:例如:printf(“a=%d,b=%d,a,b);上一页上一页下一页下
34、一页返返 回回2格式字符格式字符(1)d格式字符:以十进制整数形式输出数据。格式字符:以十进制整数形式输出数据。%d:按整型数据的实际宽度输出。:按整型数据的实际宽度输出。%md:m为一个正整数,用以指定输出数据所占的宽度。为一个正整数,用以指定输出数据所占的宽度。如果数据的位数小于如果数据的位数小于m,则右对齐,左端补以空格,则右对齐,左端补以空格,若数据位数大于若数据位数大于m,则按实际位数输出。,则按实际位数输出。%-md:m为一个正整数,用以指定输出数据所占的宽度。为一个正整数,用以指定输出数据所占的宽度。如果数据的位数小于如果数据的位数小于m,则左对齐,右端补以空格,则左对齐,右端补
35、以空格,若数据位数大于若数据位数大于m,则按实际位数输出。,则按实际位数输出。%ld:输出长整型数据。:输出长整型数据。对于长整型数据也可以指定字段宽度对于长整型数据也可以指定字段宽度m,其用法与整型数据完全相同。,其用法与整型数据完全相同。上一页上一页下一页下一页返返 回回【例例2_1b】运行下面的程序,观察运行下面的程序,观察printf()的输出效果。的输出效果。【程序代码程序代码】#include stdio.hmain()int a=123;long b=12345;printf(a=%dtb=%ldn,a,b);printf(a=%2dtb=%3ldn,a,b);printf(a=
36、%5dtb=%8ldn,a,b);printf(a=%-5dtb=%-8ldn,a,b);运行结果如下:运行结果如下:(1)格式字符必须用小)格式字符必须用小写字母,如写字母,如%d不能写成不能写成%D。(2)可以在)可以在printf函数函数中的中的“格式控制格式控制”字符字符串内包含串内包含“转义字符转义字符”,如,如“n”、“t”等。等。上一页上一页下一页下一页返返 回回(2)c格式符:用来输出一个字符。格式符:用来输出一个字符。一个整数,只要它的值在一个整数,只要它的值在0255范围内,也可以用字符形式输出,范围内,也可以用字符形式输出,在输出前,系统会将该整数作为在输出前,系统会将该
37、整数作为ASCII码转换成相应的字符;码转换成相应的字符;反之,一个字符数据也可以用整数形式输出。反之,一个字符数据也可以用整数形式输出。C格式符也可以加格式符也可以加宽度说明,其用法同格式符宽度说明,其用法同格式符d一样。一样。【例例2_2b】字符数据的输出。字符数据的输出。#include stdio.hmain()char c=b;int i=98;printf(%c,%dn,c,c);printf(%3c,%3dn,i,i);上一页上一页下一页下一页返返 回回(3)s格式符:用来输出一个字符串格式符:用来输出一个字符串%s,按实际宽度输出一个字符串,例如:,按实际宽度输出一个字符串,例
38、如:printf(%s,hello);输出结果为:输出结果为:hello%ms,输出的字符串占,输出的字符串占m列,如字符串本身长度大于列,如字符串本身长度大于m,则突破则突破m的限制,将字符串全部输出。若串长小于的限制,将字符串全部输出。若串长小于m,则右对齐左补空格。则右对齐左补空格。上一页上一页下一页下一页返返 回回%f,不指定字段宽度,由系统自动指定,使整数部分全部输出,不指定字段宽度,由系统自动指定,使整数部分全部输出,并输出并输出6位小数。双精度数也可以用位小数。双精度数也可以用%lf格式输出。格式输出。说明:对于单精度数,前说明:对于单精度数,前7位是有效的数字,而对于双精度数,
39、位是有效的数字,而对于双精度数,前前16位是有效的。位是有效的。%m.nf指定输出的数据共占指定输出的数据共占m列,其中有列,其中有n位小数。位小数。如果数值长度小于如果数值长度小于m,则左端补空格。,则左端补空格。%-m.nf与与%m.nf基本相同,只是使输出的数值向左端靠,基本相同,只是使输出的数值向左端靠,右端补空格。右端补空格。【例例2_4b】输出下列单精度和双精度实数。输出下列单精度和双精度实数。#include stdio.hmain()float f1,f2;double d1,d2;f1=111111.111;f2=222222.222;d1=1111111111111.111
40、111111;d2=2222222222222.222222222;printf(%fn,f1+f2);printf(%fn,d1+d2);(4)f格式符:用来输出实数(包括单、双精度),以小数形式输出。格式符:用来输出实数(包括单、双精度),以小数形式输出。上一页上一页下一页下一页返返 回回【例例2_5b】输出实数时指定小数位数。输出实数时指定小数位数。【程序代码程序代码】#include stdio.hmain()float f=123.456;printf(%f%10f%10.2f%.2f%-10.2fn,f,f,f,f,f);上一页上一页下一页下一页返返 回回2.4.2 格式输入函数格
41、式输入函数(scanf()1scanf()函数的一般格式函数的一般格式scanf(格式控制,地址表列格式控制,地址表列)格式控制:同格式控制:同printf()函数;函数;但但double型数据用型数据用%lf或或%le地址表列:由若干个地址组成,可以地址表列:由若干个地址组成,可以是变量的地址,或字符串的首地址。是变量的地址,或字符串的首地址。【例例2_6b】用用scanf()函数输入数据。)函数输入数据。【程序代码程序代码】#include stdio.hmain()int a,b,c;scanf(%d%d%d,&a,&b,&c);printf(%d,%d,%dn,a,b,c);上一页上一
42、页下一页下一页返返 回回2使用使用scanf函数时应注意的问题函数时应注意的问题(1)输入数据时不能规定精度,)输入数据时不能规定精度,例如:例如:float a;scanf(%7.2f,&a);是不合法的。是不合法的。(2)scanf函数中的函数中的“格式控制格式控制”后面应当是变量地址,后面应当是变量地址,而不应是变量名。而不应是变量名。(3)“格式字符串格式字符串”中出现的普通字符(包括转义字符形式中出现的普通字符(包括转义字符形式的字符),务必原样输入。的字符),务必原样输入。(4)输入数据时,遇到以下情况,系统认为该数据结束)输入数据时,遇到以下情况,系统认为该数据结束 遇到空格,或
43、者回车键,或者遇到空格,或者回车键,或者Tab键。键。遇到非法输入。例如,在输入数值数据时,遇到非法输入。例如,在输入数值数据时,遇到字母等非数值符号(数值符号仅由数字遇到字母等非数值符号(数值符号仅由数字0-9、小数点、小数点和正负号构成)。和正负号构成)。(5)使用格式说明符)使用格式说明符“%c”输入单个字符时,输入单个字符时,空格可作为有效字符被输入。空格可作为有效字符被输入。上一页上一页下一页下一页返返 回回【例例2_7b】遇非法输入。遇非法输入。【程序代码程序代码】#include stdio.hmain()int num;char c;float f;scanf(%d%c%f,&
44、num,&c,&f);printf(%d,%c,%fn,num,c,f);上一页上一页下一页下一页返返 回回【例例2_8b】输出单个字符。输出单个字符。#include stdio.h main()char ch1=N,ch2=E,ch3=W;putchar(ch1);putchar(ch2);putchar(ch3);putchar(n);putchar(ch1);putchar(n);putchar(E);putchar(n);putchar(ch3);putchar(n);2.4.3 字符输入输出函数字符输入输出函数1.字符输出函数字符输出函数(putchar()一般调用形式为:一般调用
45、形式为:putchar(ch);其中其中ch可以是字符变量或字符常量。可以是字符变量或字符常量。上一页上一页下一页下一页返返 回回【例例2_9b】输入单个字符。输入单个字符。#include stdio.hmain()char ch;ch=getchar();putchar(ch);2.字符输入函数字符输入函数(getchar()一般形式:一般形式:ch=getchar();作用作用:从系统的输入设备(如键盘)输入一个字符从系统的输入设备(如键盘)输入一个字符在输入时,空格、回车符都将作为字在输入时,空格、回车符都将作为字符输入,而且只有在敲回车键时,读符输入,而且只有在敲回车键时,读入才开始
46、执行入才开始执行上一页上一页下一页下一页返返 回回【例例2_10b】从终端输入两个整数给变量从终端输入两个整数给变量x和和y,再交换它们中的值。,再交换它们中的值。2.5 顺序结构应用举例顺序结构应用举例#include stdio.hmain()int x,y,t;printf(Input x&y:);scanf(%d%d,&x,&y);printf(x=%d y=%dn,x,y);t=x;x=y;y=t;printf(x=%d y=%dn,x,y);上一页上一页下一页下一页返返 回回【程序代码程序代码】#include stdio.hmain()double x,y;printf(Inpu
47、t x:);scanf(%lf,&x);printf(x=%fn,x);y=(int)(x*100+0.5)/100.0;printf(y=%fn,y);【例例2_11b】输入一个输入一个double类型的数,使该数保留小数点后两位,类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入处理,然后输出此数,以便验证处理是对第三位小数进行四舍五入处理,然后输出此数,以便验证处理是否正确否正确上一页上一页下一页下一页返返 回回3.5 本章小结本章小结(1)C语言的数据类型。语言的数据类型。(2)常量、变量和标识符。)常量、变量和标识符。(3)算术运算)算术运算(4)赋值运算)赋值运算(5)自增)自增/自减运算自减运算(6)类型转换)类型转换(7)格式输入输出函数)格式输入输出函数(8)字符输入输出函数)字符输入输出函数上一页上一页下一页下一页返返 回回作业及上机内容作业及上机内容v课后作业课后作业v第第34页,习题页,习题2.1、2.7v上机内容上机内容v练习本章例题及作业题练习本章例题及作业题上一页上一页返返 回回