C语言程序设计第02章-数据类型、运算符和表达式.ppt

上传人:wuy****n92 文档编号:70104075 上传时间:2023-01-16 格式:PPT 页数:102 大小:813.50KB
返回 下载 相关 举报
C语言程序设计第02章-数据类型、运算符和表达式.ppt_第1页
第1页 / 共102页
C语言程序设计第02章-数据类型、运算符和表达式.ppt_第2页
第2页 / 共102页
点击查看更多>>
资源描述

《C语言程序设计第02章-数据类型、运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计第02章-数据类型、运算符和表达式.ppt(102页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第2 章 基本数据类型l2.1 C的数据类型的数据类型l2.2 常量与变量常量与变量l2.3 整型整型l2.4 字符型字符型l2.5 浮点型浮点型(Floating Point)数据数据l2.6 字面值常量字面值常量l2.7 变量赋初值变量赋初值(Initialization)l2.8 各类数值型数据间的混合运算各类数值型数据间的混合运算l小结、作业及实验小结、作业及实验1 1第2章 基本数据类型l在实际问题中,可能会遇到各种各样的数据。这在实际问题中,可能会遇到各种各样的数据。这些数据都以某种特定的形式存在着。些数据都以某种特定的形式存在着。n年龄年龄:22 整数整数 n工资工资:2381.

2、85 实数实数n姓名姓名:Hussein Sadam 字符串字符串l为了方便地表示这些不同种类的数据,为了方便地表示这些不同种类的数据,C语言提供语言提供了丰富的数据类型。了丰富的数据类型。l本章仅介绍基本数据类型本章仅介绍基本数据类型 2 22.1 C的数据类型(Data Types)数据类型数据类型 C C语言要求,必须为出语言要求,必须为出现在程序中的所有数据现在程序中的所有数据指定数据类型。指定数据类型。由于由于C C语言把程序中的数语言把程序中的数据又分为据又分为变量变量和和常量常量两大两大类,因此,不论是常量数类,因此,不论是常量数据还是变量数据据还是变量数据,都要指都要指定数据类

3、型。定数据类型。C语言根据什么把数语言根据什么把数据分为变量和常量?据分为变量和常量?3 32.2 常量与变量l计算机处理的数据都要存储,存储就要有空间。计算机处理的数据都要存储,存储就要有空间。l若空间中的数据被可以修改,这个空间就称为若空间中的数据被可以修改,这个空间就称为变量空间变量空间,简称,简称变量变量。l若空间中的数据不能被修改,这个空间就称为若空间中的数据不能被修改,这个空间就称为常量空间常量空间,简称,简称常量常量。l空间的大小和数据的存储格式由数据类型来决定空间的大小和数据的存储格式由数据类型来决定。l若需要一个变量空间,一般需要通过定义来要求系统分配,定义时要若需要一个变量

4、空间,一般需要通过定义来要求系统分配,定义时要指出变量(空间)的类型,并给出变量(空间)的名称,也称指出变量(空间)的类型,并给出变量(空间)的名称,也称变量变量(空间)标识符(空间)标识符。n这个名称由用户指定,但要符合命名规则。这个名称由用户指定,但要符合命名规则。n通过变量名读写变量空间数据的方式称为直接引用方式。通过变量名读写变量空间数据的方式称为直接引用方式。l变量定义的格式为:数据类型变量定义的格式为:数据类型 标识符标识符 变量名变量名;nint m,n;/定义两个普通整型变量定义两个普通整型变量m 和和nnfloat x;/定义一个单精度浮点实型变量定义一个单精度浮点实型变量x

5、nchar ch;/定义一个字符型变量定义一个字符型变量ch4 4标识符(Identifier)l标识符标识符n变量名、符号常量名、函数名、类型名变量名、符号常量名、函数名、类型名l标识符命名规范标识符命名规范n由字母、数字、下划线由字母、数字、下划线(Underscore,_)组成组成n第一个字符必须为字母或下划线第一个字符必须为字母或下划线nC语言标识符是大小写敏感的语言标识符是大小写敏感的l关于标识符应注意以下方面:关于标识符应注意以下方面:n大小写敏感,大小写敏感,sum,Sum,SUM是是3个不同的标识符。个不同的标识符。n关键字不能作为标识符。关键字不能作为标识符。n一般不要使用以

6、下划线开头的标识符一般不要使用以下划线开头的标识符nANSI C未规定标识符的最大长度,未规定标识符的最大长度,TC最多允许最多允许32个个字符。字符。n应尽量做到应尽量做到“见名知意见名知意”5 5标识符示例l正确的标识符正确的标识符nstudent、num1、_SUM、_1_2_3nMyName、myname、my_namel错误的标识符错误的标识符nroom3-1包含了其他字符(减号)包含了其他字符(减号)n2men以数字开头以数字开头nlong与关键字重复与关键字重复nMr.Zhu 包含了其他字符(小数点)包含了其他字符(小数点)6 6常量(Constants)l常量常量n程序运行过程

7、中,其值不能被改变的量程序运行过程中,其值不能被改变的量n例如:例如:12、-6.7、an常量不仅能以字面常量的形式出现在程序中,还能以符常量不仅能以字面常量的形式出现在程序中,还能以符号常量的形式出现在程序里。号常量的形式出现在程序里。l常量与变量举例常量与变量举例nint a;nfloat b;na=-90;nb=3.14*2.1;变量变量变量变量常量常量常量常量7 7常量示例:例2_补_1.c#define PRICE 30#define NUM 12void main().total=NUM*PRICE;total2=84*PRICE2;printf(total=%d,total);.

8、不会被替换=total=12*30;常量符号常量8 8符号常量(Symbolic Constants)l概念概念n符号常量,就是用符号符号常量,就是用符号(标识符标识符)代表的一个常量。代表的一个常量。l定义方式:定义方式:#define 符号名符号名 常量值常量值l作用作用n相当于把标识符用一个常量简单替换下来相当于把标识符用一个常量简单替换下来n标识符是一个整体,不要试图拆开来替换标识符是一个整体,不要试图拆开来替换l在程序中,适当使用符号常量的好处:在程序中,适当使用符号常量的好处:n能起到能起到“见名知意见名知意”的作用,比直接写个常量直观。的作用,比直接写个常量直观。n能做到能做到“

9、一改全改一改全改”。l关于符号常量再强调以下几点:关于符号常量再强调以下几点:n符号常量名习惯上常用大写;符号常量名习惯上常用大写;n符号常量是常量而不是变量,不允许用赋值运算等改变符号常量是常量而不是变量,不允许用赋值运算等改变它的值。它的值。9 9符号常量l 所谓符号常量,就是用符号代表的一个常量。所谓符号常量,就是用符号代表的一个常量。l符号常量的定义方式为:符号常量的定义方式为:#define 符号名符号名 常量常量值值#define PI 3.14#define SNO 1001 L=2*PI*1.5;s=PI*0.6*0.6;符号常量符号常量符号常量符号常量file1.c l如果在

10、程序中某处定义了符如果在程序中某处定义了符号常量(以号常量(以PI为例),为例),l从此往后,本文件中凡是出从此往后,本文件中凡是出现现PI的地方都代表的地方都代表3.14;PI可可以和常量以和常量3.14一样参加运算一样参加运算.。l为什么要用符号来表示一个为什么要用符号来表示一个常量呢?常量呢?l这样做有什么好处?这样做有什么好处?1010符号常量l在程序中,适当使用符号常量在程序中,适当使用符号常量的好处在于:的好处在于:n能起到能起到“见名知意见名知意”的作用,的作用,比直接写个常量直观。比直接写个常量直观。n能做到能做到“一改全改一改全改”。l关于符号常量再强调以下几点关于符号常量再

11、强调以下几点n符号常量名习惯上常用大写;符号常量名习惯上常用大写;n符号常量是常量而不是变量,符号常量是常量而不是变量,不允许用赋值运算等改变它的值不允许用赋值运算等改变它的值#define PI 3.14#define SNO 1001 L=2*PI*1.5;s=PI*0.6*0.6;1111变量(Variables)l内存内存(memory):n每台计算机都要有内存,程每台计算机都要有内存,程序只有装入内存中,才可能序只有装入内存中,才可能被执行。被执行。从逻辑上看,内存是由一从逻辑上看,内存是由一个个的字节构成的。个个的字节构成的。每个字节可以容纳每个字节可以容纳8位二进位二进制数。制数

12、。每个字节都有唯一的内存每个字节都有唯一的内存地址。地址。201202203204205206207内存地址内存地址内存00001111一个字节一个字节34一一个个二二进进制制位位1212变 量 所谓变量,就是在程序执行过程中,其值可以被改变的量。所谓变量,就是在程序执行过程中,其值可以被改变的量。通俗地讲,变量就像高档饭店的房间,这体现在以下几个方面:通俗地讲,变量就像高档饭店的房间,这体现在以下几个方面:对某个房间来说,一拨客对某个房间来说,一拨客人走后,另一拨客人可以进来人走后,另一拨客人可以进来,虽然房间不变,但里头吃饭的虽然房间不变,但里头吃饭的人在变。人在变。在在C C程序中,变量

13、就是建立程序中,变量就是建立在内存里的房间,它用来存储不在内存里的房间,它用来存储不断变化的信息。存放在变量中的断变化的信息。存放在变量中的信息称为信息称为变量值变量值。为了区分不同的房间,人为了区分不同的房间,人们为每个房间起一个名字,比们为每个房间起一个名字,比如百合厅、玫瑰厅等。如百合厅、玫瑰厅等。每个变量也有变量名。每个变量也有变量名。房间有大小、档次之分。房间有大小、档次之分。变量有类型之分,变量的数变量有类型之分,变量的数据类型决定了可以容纳的信息种据类型决定了可以容纳的信息种类,也决定了所占单元的大小。类,也决定了所占单元的大小。每个房间有自己的房间号每个房间有自己的房间号,而且

14、房间名与房间号有对应关而且房间名与房间号有对应关系。系。每个变量有自己的存储地址每个变量有自己的存储地址,而且变量名与存储地址有对应关而且变量名与存储地址有对应关系。系。总之,变量具有名字、类型、值、地址等属性。总之,变量具有名字、类型、值、地址等属性。1313下面结合例子来理解变量的这些属性。下面结合例子来理解变量的这些属性。#include void main()int a;a=10;a=50;a=a*2;printf(”a=%dn”,a);在在C C程序中,变量都是先定义、后使用程序中,变量都是先定义、后使用变量的定义格式:数据类型变量的定义格式:数据类型 变量名;变量名;对于程序中定义

15、的每个变量,对于程序中定义的每个变量,TCTC会根据变量的数据类型,为会根据变量的数据类型,为它分配一定大小的存储单元。它分配一定大小的存储单元。同时,也在变量名与变量的内同时,也在变量名与变量的内存地址之间建立了对应关系。存地址之间建立了对应关系。该赋值语句会把该赋值语句会把1010存放到变量存放到变量a a中中,于是于是a a的值变为了的值变为了1010。变量(Variables)下面结合例子来理解变量的这些属性。下面结合例子来理解变量的这些属性。1414程序举例程序举例程序举例程序举例2.12.1:定义变量,检验变量空间大小和地址,给变量赋值,并在显:定义变量,检验变量空间大小和地址,给

16、变量赋值,并在显:定义变量,检验变量空间大小和地址,给变量赋值,并在显:定义变量,检验变量空间大小和地址,给变量赋值,并在显示器上显示变量的值示器上显示变量的值示器上显示变量的值示器上显示变量的值(参见演示参见演示参见演示参见演示)#include /包含包含printf 的原型的原型int main()int m,n;/定义两个整型变量定义两个整型变量 float x;/定义一个单浮点型变量定义一个单浮点型变量 char ch;/定义一个字符型变量定义一个字符型变量 printf(“%d,%d,%dn”,sizeof(m),sizeof(x),sizeof(ch);/按十进制输出变量值按十进

17、制输出变量值 printf(%x,%x,%x,%xn,&m,&n,&x,&ch);/按十六进制输出变量空间地址按十六进制输出变量空间地址 m=70;/用常量给变量赋值,用常量给变量赋值,70 表示普通整型常量表示普通整型常量 x=3.14F;/用常量给变量赋值,用常量给变量赋值,3.14F 表示单浮点型常量表示单浮点型常量 ch=A;/用常量给变量赋值,用常量给变量赋值,A表示字符型常量表示字符型常量 n=m;/把变量把变量m 的值赋给变量的值赋给变量n printf(%d,%d,%f,%cn,m,n,x,ch);/输出变量的值输出变量的值 printf(“m=%d,n=%d,x=%f,ch=

18、%cn”,m,n,x,ch);/另一种输出变量值的格式另一种输出变量值的格式 return(0);ll4,4,1l12ff7c,12ff78,12ff74,12ff70l70,70,3.140000,Alm=70,n=70,x=3.140000,ch=A1515说明:l主函数框架主函数框架nint main()nn 一组程序语句一组程序语句n return(0);nlmain 是主函数名,相当于机器语言程序的入口地址。是主函数名,相当于机器语言程序的入口地址。n一对大括号是函数体,包括一组程序语句(简称语句),语句相当于机器一对大括号是函数体,包括一组程序语句(简称语句),语句相当于机器语言指

19、令,每条语句以分号结束。语言指令,每条语句以分号结束。l“/”是注释部分,说明语句功能,便于理解,它不是程序语句。是注释部分,说明语句功能,便于理解,它不是程序语句。n如果一个注释有多行,每行前都要加如果一个注释有多行,每行前都要加“/”。例如:。例如:n注释行也常常采用注释行也常常采用“/*/”的形式,的形式,l一条语句可以同时定义几个变量,变量名彼此用逗号分隔,一条语句可以同时定义几个变量,变量名彼此用逗号分隔,n例如:例如:int m,n;一行可以书写几条语句,一行可以书写几条语句,n例如:例如:int m,n;float x;char ch;一条语句如果很长,可以分几行书写,但一条语句

20、如果很长,可以分几行书写,但是变量名或函数名不能分行写。是变量名或函数名不能分行写。1616说明:l变量初始化变量初始化n变量可以在定义的同时赋值,称为初始化:变量可以在定义的同时赋值,称为初始化:int m=70;/初始化初始化n变量初始化与赋初值是不同的:初始化是在变量定义的变量初始化与赋初值是不同的:初始化是在变量定义的同时赋值,赋初值是指变量定义之后的第一次赋值。初同时赋值,赋初值是指变量定义之后的第一次赋值。初始化等于赋初值,但是赋初值不等于初始化。始化等于赋初值,但是赋初值不等于初始化。n下面的例子是赋初值,但不是初始化:下面的例子是赋初值,但不是初始化:int m,n;m=70;

21、/给给m 赋初值赋初值n=m;/给给n 赋初值赋初值1717说明:l赋值操作符赋值操作符n变量位于赋值操作符变量位于赋值操作符“=”左端,表示给变量赋值或写左端,表示给变量赋值或写入,位于右端,表示从变量取值或读取。入,位于右端,表示从变量取值或读取。l文件包含命令文件包含命令n#include是文件包含命令,是文件包含命令,stdio.h 是库文件,是库文件,含有包括系统函数含有包括系统函数printf 在内的输入输出函数的原型。在内的输入输出函数的原型。n如果不包含这个命令而调用如果不包含这个命令而调用printf 函数,系统视为非法。函数,系统视为非法。系统报错:系统报错:printfu

22、ndefined(printf 没有定义)没有定义)1818格式输出函数printfl前面的例题中我们已多次用过这个函数。前面的例题中我们已多次用过这个函数。l函数的一般形式:函数的一般形式:nprintf(“格式控制字符串格式控制字符串”,输出表列,输出表列)l函数功能:函数功能:n对于对于任意类型数据任意类型数据按用户指定的数据按用户指定的数据格式输出格式输出到显示器到显示器屏幕上。屏幕上。l返回值返回值n若成功,返回输出的字节数,包括换行符若成功,返回输出的字节数,包括换行符n若失败,返回若失败,返回EOF(End of File)l参数说明(见下一页)参数说明(见下一页)1919函数p

23、rintf的参数说明l格式控制字符串:格式控制字符串:n由包括由包括“格式说明格式说明”和和“普通字符普通字符”组成,用于指定输出格式。组成,用于指定输出格式。n“格式说明格式说明”:由:由%和和“格式字符格式字符”组成,以说明输出数据的类型、组成,以说明输出数据的类型、形式、长度、小数位数等。形式、长度、小数位数等。n“普通字符普通字符”:在输出时原样照印,在显示中起提示作用:在输出时原样照印,在显示中起提示作用l输出列表输出列表n给出了需要输出的数据项给出了需要输出的数据项n可以是变量、常量、表达式、函数调用等可以是变量、常量、表达式、函数调用等n输出数据项与输出数据项与“格式说明格式说明

24、”在数量和类型上应该一一对应在数量和类型上应该一一对应nprintf(“格式控制字符串格式控制字符串”,输出表列,输出表列)2020函数printf的格式举例printf(a=%d b=%d,a,b);格式说明普通字符输出列表输出结果:a=3 b=4格式字符串其一般形式为:格式字符串其一般形式为:标志标志输出最小宽度输出最小宽度.精度精度长度长度 类类型型其格式符和意义如下所示:其格式符和意义如下所示:2121表表2.1 格式字符格式字符格式说明符格式说明符输出形式输出形式举例举例输出结果输出结果%d(%i)十进制整型十进制整型int a=123;printf(%d,a);123%x(%X)十

25、六进制整型十六进制整型int b=123;printf(%x,b);7b%o八进制整型八进制整型int c=123;printf(%o,c);173%u无符号十进制无符号十进制整型整型unsigned d=123;printf(%u,d);123%c(%C)单个字符单个字符char ch=A;printf(%c,ch);A%f浮点十进制,浮点十进制,默认小数默认小数6 位位float x=123.5;printf(%f,x);123.500000%g(或或G)浮点十进制,浮点十进制,舍无效舍无效0float y=123.5;printf(%g,y);123.52222表表2.1 格式字符格式字

26、符格式说明符格式说明符输出形式输出形式举例举例输出结果输出结果%e(%E)浮点十进制浮点十进制指数形式指数形式float z=123.5;printf(%e,z);1.235000e+002%Ld十进制长整十进制长整型型long n=123456;printf(%Ld,n);123456%Lf十进制双浮十进制双浮点型点型printf(%Lf,123.56789);123.567890%Lo八进制长整八进制长整型型long m=123456;printf(%Lo,m);361100%Lx 十六进制十六进制长整型长整型long p=123456;printf(%Lx,p);1e240%s字符串字符

27、串char*str=china;printf(%s,str);china2323函数printf格式举例说明1.d格式符格式符(例例2_补补_8.c)l作用:按整型数据的实际长度输出。作用:按整型数据的实际长度输出。l基本格式:基本格式:%dl格式一:格式一:%mdnm为指定的输出字段的宽度。为指定的输出字段的宽度。n若数据的位数小于若数据的位数小于m,则左端补以空格,则左端补以空格,n若数据的位数大于,则按实际位数输出。若数据的位数大于,则按实际位数输出。l例例1:na=123,b=12345,printf(%4d,%4d,a,b);n则输出结果为则输出结果为 123,12345l格式二:格

28、式二:%ldn输出长整型数据。输出长整型数据。l例例2:n若若 long a=135790;printf(“%ld”,a);n则输出为:则输出为:135790 2424函数printf格式举例说明2.o格式符格式符(例例2_补补_8.c)l作用:以八进制数形式输出整数。作用:以八进制数形式输出整数。l基本格式:%on说明:由于将内存中的各位值说明:由于将内存中的各位值(0或或1)按八进制形式输出,则输出的按八进制形式输出,则输出的数值不带符号,将符号位也一起输出。数值不带符号,将符号位也一起输出。n例例1:int a=-1;printf(%d,%o,a,a);-1在内存中的形式在内存中的形式(

29、补码补码)为:为:1111 1111 1111 1111输出结果输出结果 -1,177777 不会输出带负号的八进制整数。不会输出带负号的八进制整数。l格式一:%lon输出对长整数输出对长整数(long型型)l格式二:%mon指定输出数据的字段宽度。指定输出数据的字段宽度。n例例2:int a=-1;printf(“%8o”,a)输出结果:输出结果:1777772525函数printf格式举例说明3.x格式符格式符(例例2_补补_9.c)l作用:以十六进制数形式输出整数。作用:以十六进制数形式输出整数。l基本格式:基本格式:%xn不会出现负的十六进制数不会出现负的十六进制数(原理同上原理同上)

30、。n例例1:int a=-1;printf(“%x,%o,%d”,a,a,a);n 输出结果输出结果:ffff,177777,-1l格式一:格式一:%lxn输出长整型数输出长整型数,如如long a=2000;printf(“%lx”,a);l格式二:格式二:%mxn指定输出字段的宽度,如指定输出字段的宽度,如“%12x”。2626函数printf格式举例说明4.u格式符格式符(例例2_补补_8.c)l作用:作用:n用来以十进制形式输出无符号(用来以十进制形式输出无符号(unsigned型)整数。型)整数。l基本格式:基本格式:%ul例例1:int a=567,printf(“%u”,a)输出

31、结果输出结果567 main()/*例例4-4.c*/unsigned int a=65535;int b=-2;printf(a=%d,%o,%x,%un“,a,a,a,a)printf(b=%d,%o,%x,%un“,b,b,b,b);运行结果为:运行结果为:a=-1,177777,ffff,65535b=-2,177776,fffe,65534l说明:说明:l一个有符号整数一个有符号整数(int型型)也可也可以用以用%u格式输出;格式输出;l一个一个unsigned型数据也可以用型数据也可以用%d格式输出。格式输出。l按相互赋值的规则处理按相互赋值的规则处理lunsigned型数据也可用

32、型数据也可用%o或或%x格式输出格式输出2727整型数据的输出小结整型数据的输出小结整型数据可以有以下的输出格式供选择:整型数据可以有以下的输出格式供选择:按有符号的十进制形式输出整型数据,使用格式说明按有符号的十进制形式输出整型数据,使用格式说明%d。按无符号的八进制形式输出整型数据,使用格式说明按无符号的八进制形式输出整型数据,使用格式说明%o。另外,通过在另外,通过在%与格式字符之间加上修饰符与格式字符之间加上修饰符l,就能按相应,就能按相应形式输出长整型数据。例如,形式输出长整型数据。例如,按无符号的十进制形式输出整型数据,使用格式说明按无符号的十进制形式输出整型数据,使用格式说明%u

33、。按无符号的十六进制形式输出整型数据,使用格式说明按无符号的十六进制形式输出整型数据,使用格式说明%x。按有符号的十进制形式输出长整型数据,使用格式说明按有符号的十进制形式输出长整型数据,使用格式说明%ld。按无符号的十六进制形式输出长整型数据,使用格式说明按无符号的十六进制形式输出长整型数据,使用格式说明%lx.2828函数printf格式举例说明5.c格式符格式符(例例2_补补_10-1.c)l作用:用来输出一个字符。作用:用来输出一个字符。l基本格式:基本格式:%cn例例1:charc=a;printf(%c,c);输出结果:输出结果:al说明说明n “%c”中的中的c是格式符,逗号右边

34、的是格式符,逗号右边的c是变量名,不要混。是变量名,不要混。n 一个整数,只要它的值在一个整数,只要它的值在0255范围内,也可以用字符形式输出,范围内,也可以用字符形式输出,输出前,系统将该整数作为输出前,系统将该整数作为ASCII码转换成相应字符;码转换成相应字符;n反之,一个字符数据也可以用整数形式输出。反之,一个字符数据也可以用整数形式输出。l格式一:格式一:%mcn指定输出字数宽度指定输出字数宽度n例例2:char c=B;printf(“A%3c”,c);输出:;输出:“A a”。main()/*字符数据的输出。字符数据的输出。*/char c=a;int i=97;printf(

35、%c,%dn,c,c);printf(%c,%dn,i,i);运行结果为:运行结果为:a,97a,97 2929函数printf格式举例说明6.s格式符格式符(例例2_补补_10-2.c)l作用:用来输出一个字符串。作用:用来输出一个字符串。l基本格式:基本格式:%sl例例1:printf(“%s”,“china”);输出结果:;输出结果:china(没有双引号没有双引号)。l格式一:格式一:%msn输出的字符串占列,输出的字符串占列,n若字符串本身长度大于若字符串本身长度大于m,则突破的限制,将字符串全部输出。若字符,则突破的限制,将字符串全部输出。若字符串本身长度小于串本身长度小于m,则左

36、补空格。,则左补空格。l格式二:格式二:%-msn如果串长小于,则在列范围内,字符串向左靠,右补空格。如果串长小于,则在列范围内,字符串向左靠,右补空格。l格式三:格式三:%mnsn输出占列,但只取字符串中左端输出占列,但只取字符串中左端n个字符。个字符。n这这n个字符输出在列的右侧,左补空格。个字符输出在列的右侧,左补空格。l格式四:格式四:%-mnsn在列范围的左侧输出字符串左端的在列范围的左侧输出字符串左端的n个字符,右补空格。个字符,右补空格。n如果如果n,则自动取,则自动取n值,即保证值,即保证n个字符正常输出。个字符正常输出。main()/*例例4-5-2.c字符串的输出。字符串的

37、输出。*/printf(“%3s,%7.2s,%.4s,%-5.3sn”,“china”,“china”,china,china)输出结果:输出结果:china,ch,chin,chi3030字符型数据的输出小结字符型数据的输出小结输出单个字符输出单个字符,使用格式说明使用格式说明%c。字符型数据输出有两种方式:字符型数据输出有两种方式:输出字符串输出字符串,使用格式说明使用格式说明%s。3131函数printf格式举例说明7.f格式符格式符(例例2_补补_11.c)l作用:作用:n用来以小数形式输出实数用来以小数形式输出实数(包括单、双精度包括单、双精度)。l基本格式:基本格式:%fn不指定

38、字段宽度,由系统自动指定,使整数部分全部如数输出,不指定字段宽度,由系统自动指定,使整数部分全部如数输出,并输出并输出6位小数。位小数。n注意:注意:并非全部数字都是有效数字。并非全部数字都是有效数字。单精度实数的有效位数一般为单精度实数的有效位数一般为7位。位。l格式一:格式一:%.nfn指定输出的数据共占列,其中有指定输出的数据共占列,其中有n位小数。位小数。n如果数值长度小于,则左端补空格。如果数值长度小于,则左端补空格。l格式二:格式二:%-.nfn与与%.nf基本相同,只是使输出的数值向左端靠,右端补空格。基本相同,只是使输出的数值向左端靠,右端补空格。3232函数printf格式举

39、例说明7.f格式符应用举例格式符应用举例例例2_补补_11-1.c输出实数时有效位数。输出实数时有效位数。main()float x,y;x=111111111;y=222222222;printf(“%f”,x+y);输出输出结果:结果:333333328125例例2_补补_11-2.c输出双精度数有效输出双精度数有效位数。位数。main()double x,y;y=2222222222222.222222222;printf(%f,x+y);输出结果:输出结果:3333333333333.333010 例例2_补补_11-3.c输出实数时指定小数位数。输出实数时指定小数位数。main()f

40、loat f=123.456;printf(%f%10f%10.2f%.2f%-10.2fn,f,f,f,f,f);输出结果:输出结果:123.456001 123.456001 123.46 123.46 123.463333函数printf格式举例说明7.e格式符格式符(例例2_补补_12.c)l作用:作用:n按规范化指数形式按规范化指数形式(小数点前有且只有小数点前有且只有1位非零数字位非零数字)输出实数。输出实数。l基本格式:基本格式:%el说明:说明:n不指定输出数据所占的宽度和数字部分的小数位数;不指定输出数据所占的宽度和数字部分的小数位数;n有的有的c编译系统自动指定编译系统自动

41、指定6位小数,指数部分占位小数,指数部分占5位位(如如e+002),其中,其中“e”占占1位,指数符号占位,指数符号占1位,指数占位,指数占3位。位。nprintf(%e“,123.456);输出:;输出:1.234560e+002。(不同系统略有不同不同系统略有不同)l格式一:格式一:%m.ne 和和%-m.nen、n和和“-”字符含义与前相同。此处字符含义与前相同。此处n指拟输出的数据的小数部分指拟输出的数据的小数部分(又称又称尾数尾数)的小数位数。的小数位数。l例如,例如,f=123.456,nprintf(“%e%10e%10.2e%.2e%-10.2e”,f,f,f,f,f);n结果

42、:结果:1.234560e+002 1.234560e+002 1.23e+002 1.23e+002 1.23e+0023434函数printf格式举例说明9.g格式符格式符l作用:作用:n用来输出实数,它根据数值的大小,自动选用来输出实数,它根据数值的大小,自动选f格式或格式或e格式中输出宽格式中输出宽度较小的一种,且不输出无意义的零。度较小的一种,且不输出无意义的零。l基本格式:基本格式:%gl例例1,若,若f=123468,则,则printf(“%f%e%g”,f,f,f);n输出:输出:123.468000 1.234680e+002 123.468 n 10列列 13列列 10列列

43、l说明:说明:n用用%f格式输出占格式输出占10列,用列,用%e格式输出占格式输出占13列,列,n用用%g格式时,自动从上面两种格式中选择短者,故占格式时,自动从上面两种格式中选择短者,故占10列,列,n按按%f格式输出,最后格式输出,最后3个小数位个小数位“0”为无意义的为无意义的0,不输出,不输出,n因此输出因此输出123.468,然后右补,然后右补3个空格。个空格。n%g格式用得较少格式用得较少3535实型数据的输出小结实型数据的输出小结实型数据的输出常采用两种方式:实型数据的输出常采用两种方式:按十进制小数形式,使用格式说明按十进制小数形式,使用格式说明%f,这种输出方式除输出,这种输

44、出方式除输出整数部分外,还会输出整数部分外,还会输出6位小数位小数按规范化的指数形式,使用格式说明按规范化的指数形式,使用格式说明%e,这种输出方式会按,这种输出方式会按规范化的指数形式输出。规范化的指数形式输出。关于实型数据输出强调以下几点:关于实型数据输出强调以下几点:在输出单精度数据和双精度数据时,使用相同的格式说明。在输出单精度数据和双精度数据时,使用相同的格式说明。在输出的数字中,并非所有的数字都是有效数字。系统在输在输出的数字中,并非所有的数字都是有效数字。系统在输出单精度数据时,一般前出单精度数据时,一般前67位是有效数字;双精度数据是位是有效数字;双精度数据是1516位。位。可

45、以用可以用%m.nf指定数据的最小输出宽度以及小数部分的位数。指定数据的最小输出宽度以及小数部分的位数。可以用修饰符可以用修饰符“”(如(如%m.nf)实现左对齐的效果。)实现左对齐的效果。3636格式输出函数printf小结l上面介绍了主要的格式字符。上面介绍了主要的格式字符。l关于格式输出再强调以下几点:关于格式输出再强调以下几点:n 转义字符可以出现在格式控制串中。转义字符可以出现在格式控制串中。例如,例如,printf(”nabct%d”,i);n 在格式控制串中,除格式说明之外的字符均作为普在格式控制串中,除格式说明之外的字符均作为普通字符输出。通字符输出。例如,例如,printf(

46、”c=%cf=%fs=%s”,A+32,3.14,”BYE”);n 在格式控制串中,要输出字符在格式控制串中,要输出字符%,必须用,必须用%表示。表示。例如,例如,printf(”%.2f%”,5.126);会输出会输出 5.13%。n 要根据被输出表达式的数据类型以及希望的格式,要根据被输出表达式的数据类型以及希望的格式,选用合适的格式说明。选用合适的格式说明。3737程序中常见错误l 变量必须先定义或声明,后使用,否则就是一变量必须先定义或声明,后使用,否则就是一个错误。出现这种错误的原因大多是拼写有误。个错误。出现这种错误的原因大多是拼写有误。n例如:例如:int temp;tmp=5;

47、/把把temp 错写为错写为tmpn系统报错:系统报错:tmp:undeclared identifier(tmp 是没有是没有声明的标识符即名称)。声明的标识符即名称)。l如果变量没有赋初值,它的值是一个不可预测如果变量没有赋初值,它的值是一个不可预测的值。例如:的值。例如:nint temp;printf(%d,temp);/变量变量a 没有赋初值,结没有赋初值,结果是一个不可预测的值果是一个不可预测的值n系统警告:系统警告:local variable temp used without having been initialized(局部变量(局部变量temp 没有初值)。没有初值)。

48、3838程序中常见错误l 语句之后丢失分号。语句之后丢失分号。n例如:例如:int a,b/丢失分号。丢失分号。n正确的书写是:正确的书写是:int a,b;a=3;b=4;n系统报错:系统报错:missing;before identifier a(标识符(标识符a 之之前缺少分号)。而且系统的错误标志指向的是第前缺少分号)。而且系统的错误标志指向的是第2 条语条语句,而不是第句,而不是第1 条语句,这是为什么呢?条语句,这是为什么呢?n因为语句可以换行,定义语句因为语句可以换行,定义语句“inta,b;”可以分两行可以分两行书写,其中的分号可以单独出现在第书写,其中的分号可以单独出现在第2

49、 行,所以系统是行,所以系统是在语句在语句“a=3;”之前还没有遇到分号时才报错。之前还没有遇到分号时才报错。l 在格式控制字符串之后丢失逗号:在格式控制字符串之后丢失逗号:nprintf(%dn);/正确的书写是:正确的书写是:printf(%d,n);n系统报错:系统报错:missing)before n(n 之前丢失右括号)。之前丢失右括号)。系统按最简单的形式处理。系统按最简单的形式处理。3939程序中常见错误l 整型数和浮点型数的存储格式不同,整型数不整型数和浮点型数的存储格式不同,整型数不能按浮点格式显示,反之亦然。能按浮点格式显示,反之亦然。n例如:例如:nint a=12;fl

50、oat f=12.5;nprintf(a=%fn,a);/错!整型数不能按浮点格式显示错!整型数不能按浮点格式显示nprintf(f=%dn,f);/错!浮点型数不能按整型格式显错!浮点型数不能按整型格式显示示n系统没有报错,但是显示结果都是系统没有报错,但是显示结果都是0。l 对程序语句中出现的中文输入方式下的逗号、对程序语句中出现的中文输入方式下的逗号、分号、小括号等分隔符,系统都要报错:分号、小括号等分隔符,系统都要报错:unknown character 0 xa3。40402.3整型(Integer)数据l数制和数制之间的转换数制和数制之间的转换l整型常量的表示方法整型常量的表示方法

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com