收藏 分销(赏)

c2数据类型.ppt

上传人:pc****0 文档编号:13182300 上传时间:2026-01-31 格式:PPT 页数:109 大小:3.60MB 下载积分:10 金币
下载 相关 举报
c2数据类型.ppt_第1页
第1页 / 共109页
c2数据类型.ppt_第2页
第2页 / 共109页


点击查看更多>>
资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,计算机科学学院,*,单击此处编辑母版标题样式,1,C,语言程序设计,计算机科学学院:杨绪华,E_mail:710649196,Tel:15882620518,计算机科学学院,2,第,2,章 数据类型与基本运算,1,基本数据类型,常量和变量,运算符与表达式,标识符,数据类型转换,基本输入和输出,2,3,4,5,6,应用举例,7,计算机科学学院,3,回顾,程序是为执行一项任务而编写的有序指令集,算法是解决问题的具体方法和步骤,流程图是算法的图形化表现形式,C,语言的特点,C,程序的编译和运行过程,编译器将源程序转换成机器能理解的程序,连接器用于连接相关的目标文件以生成可执行程序,计算机科学学院,4,本章目标,理解变量和常量的含义,熟悉使用基本数据类型,-int,、,char,、,float,和,double,使用,各种,运算符,理解类型转换,熟练使用,scanf(),和,printf(),函数,熟练使用,getchar(),和,putchar(),函数,计算机科学学院,5,2.1,基本数据类型,数据属于不同类别,Africa,The quick brown fox,TRUE,数据,非数值,数值,整型,非整型,9002.12,999,9/12/2003,2.175,123,Jackie Chan,char,数据类型,非数值,数值,整型,int,short int,long int,double,float,非整型,计算机科学学院,6,整型,名称,全称类型说明符,缩写类型说明符,位数,范围,整型,int,int,16,-32768,至,+32767,无符号整型,unsigned int,unsigned,16,0,至,65,535,短整型,short int,short,16,-32768,至,+32767,无符号短整型,unsigned short int,unsigned short,16,0,至,65,535,长整型,long int,long,32,-2,147,483,648,至,2,147,483,647,无符号长整型,unsigned long int,unsigned long,32,0,至,4,294,967,295,计算机科学学院,7,单精度浮点型,float,在,C,语言中用于存储单精度浮点数,float,32,位,10,-38,至,10,+38,,,7,位有效数字,计算机科学学院,8,双精度浮点型,内存,float,double,213.5671435568967,64,位,取值范围,:,10,-308,至,10,308,16,位有效数字,计算机科学学院,9,在线保险单,年龄,:,_,保险总额,:,_,性别,:,_,字符型,3-1,23,98340,M,数值型,字符型,int/float,char,计算机科学学院,10,字符型,3-2,5,p,$,有效的字符型值,2,2,正确,2,+,2,=4,X,值,符号,值,符号,值,符号,0,空字符,44,91,32,空格,45,-,92,33,!,46,.,93,34,47,/,94,35,#,48 57,0 9,95,-,36,$,58,:,96,37,%,59,;,97 122,a z,38,&,60,125,41,),63,?,126,42,*,64,127,DEL(Delete,键,),43,+,65 90,A Z,计算机科学学院,11,字符型,3-3,char,占,8,位内存,signed,或,unsigned,Signed,-,128,至,+127,unsigned,0,至,255,计算机科学学院,12,2.2,标识符,标识符,:,是给程序中的实体,(,变量、常量、函数、数组、结构体以及文件,等,),所起的名字。,系统定义标识符,C,语言中的标识符,用户定义标识符,计算机科学学院,13,系统定义标识符,系统定义标识符,:,是指具有固定名字和特定含义的标识符,如,int,、,for,、,break,等。,关键字,系统定义标识符,预定义标识符,关键字,:,又称保留字,是,C,语言规定的具有特定含义的标识符。关键字必须用小写字母。,计算机科学学院,14,系统定义标识符,-,关键字,数据类型,存储类别,语句命令字,运算符,int,longshortcharfloatdoublesignedunsigned,autostaticregisterextern,gotoreturnbreakcontinueif,,,else whiledofor,sizeof,计算机科学学院,15,系统定义标识符,-,预定义标识符,1,2,编译,预处理,命令,标准,库函数,数学函数:,sqrt,,,fabs,,,sin,,,cos,,,pow,等。,输入输出函数:,scanf,,,printf,,,getchar,,,putchar,,,gets,,,puts,等。,define,,,endef,,,include,,,ifdef,,,ifndef,,,endif,,,line,,,if,,,else,等,计算机科学学院,16,用户定义标识符,1,以字母或下划线开头,由字母、数字和下划线三种字符组成。,2,语言中有,32,个关键字,每个关键字都代表着某一固定含义。用户不应采用与它们同名的标识符。,计算机科学学院,17,2.3,常量和变量,常量,变量,符号常量,直接常量,计算机科学学院,18,程序,指令,C,语言中的基本元素,标识符,关键字,常量,运算符,分隔符,等,常量是在程序中保持不变的量,常量用于定义具有如下特点的数据:,在程序中保持不变,在程序内部频繁使用,需要用比较简单的方式替代某些值,变量,计算机科学学院,19,变量是在程序运行过程中可以,被改变,或者可以,被赋予新的值,变量的名,变量的值,计算机科学学院,20,变量命名,在,C,语言中,变量命名需要遵循一定的规则,有效名称,principal,cost_price,marks_3,lastname,city,无效名称,123rate,currency$,discount%,zip code,变量,名,的命名规则:,变量名可以由,字母、数字和,_,(下划线),组合而成,变量名不能包含除,_,以外的任何特殊字符,如:,%,、,#,、逗号、空格等,变量名必须以,字母或,_,(下划线),开头,变量名不能包含,空白字符,(换行符、空格和制表符称为空白字符),C,语言中的某些词(例如,int,和,float,等)称为保留字,具有特殊意义,不能用作变量名,C,语言,区分大小写,,因此变量,price,与变量,PRICE,是两个不同的变量,计算机科学学院,21,变量,程序,内存,编写程序时,常常需要将数据存储在内存中,方便后面使用这个数据或者修改这个数据的值。,通常使用变量来存储数据。使用变量可以引用存储在内存中的数据,并随时根据需要显示数据或执行数据操纵。,存储,Rate,Rate*5%,将值存储为,DiscAmt,Rate-DiscAmt,10,0.5,将值存储为,Result,9.5,计算机科学学院,22,声明和使用变量,声明变量:,Datatype,variablename;,定义时初始化变量:,Datatype,variablename=value;,定义后初始化变量:,variablename=value;,给变量赋值,除了给一个直接的值以外,还可以通过计算获得。,注意:变量必须先定义后使用,计算机科学学院,23,使用整型变量,声明:,int,page_number;,long int,population;,unsigned int,age;,可按如下方式初始化:,page_number,0;,int,max_marks=100;,在同一语句中可以声明多个类型相同的变量:,int page_number,copies,paper_width;,使用单精度浮点数,计算机科学学院,24,声明:,float,selling_price;,初始化:,float,selling_price=11.3;,selling_price=65.90;,使用双精度浮点数,计算机科学学院,25,声明:,double,pressure_level;,初始化:,pressure_level=213.5671435568967;,double,dvalue=35.4;,使用字符型数据,计算机科学学院,26,char gender;,gender=,m,;,char gender=,m,;,2.4,运算符与表达式,计算机科学学院,27,算术运算符和表达式,赋值运算符和表达式,关系运算符和表达式,逻辑运算符和逻辑表达式,条件运算符和条件表达式,逗号运算符和逗号表达式,其他运算符,运算符,运算符,单目运算符,双目运算符,三目运算符,计算机科学学院,28,1,基本算术运算符,算术运算符和算术表达式,3-1,+,加法运算符,如,2+3,,,x+y,。,-,减法运算符,如,3-2,,,x-y,*,乘法运算符,如,4*6,,,x*y,/,除法运算符,如,5/3,,,x/y,%,求余运算符,如,11%3,,,x%y,若,/,两边是整型数据,则结果是整型数据(,向零取整,),否则为实型数据,要求两边必须是整型数据,2,自增,(,“,+,”,),自减,(,“,-,”,),运算符,都是,单目运算符,,而且运算对象必须是,变量,,不能是常量。,结合方向都是,“,自右至左,”,,它们的作用是使运算对象的值加,1,或减,1,。,可以作前置运算符,(,如,+x,和,-x),,也可以作后置运算符。,不考虑表达式值的情况下,前缀运算和后缀运算的效果完全相同,算术运算符和算术表达式,3-2,【,程序源代码,】,main(),int i,x,y;,i=5;,x=i+;,printf(i=%d,x=%dn,i,x);,i=5;,y=+i;,printf(i=%d,y=%dn,i,y);,【,例,2-6】,分析下列程序的输出结果。,后缀运算,先把,i,的值赋给,x,,然后,i,的值加,1,前缀运算,先使,i,的值加,1,,然后将,i,的值赋给,y,【,程序运行结果,】,i=6,x=5,i=6,y=6,分析程序,【,例,2-7】,分析下列程序的输出结果。,main(),int a=3,b=5,c;,c=(+a)*b;,printf(a=%d,c=%dn,a,c);,a=3;,b=5;,c=(a+)*b;,printf(a=%d,c=%dn,a,c);,a,的值先加,1,,,a,的值变成了,4,,然后再将此值与,b,相乘,即,c=4*5;,a,的值先与,b,相乘,即,c=3*5,然后,a,的值加,1,变成了,4,。,【,程序运行结果,】,a=4,c=20,a=4,c=15,分析程序,用,算术运算符,或,圆括号,将运算对象(常量、变量和函数)连接起来的式子。,例如:,x*y%c-0.9+A,,,a*b/c+8.2,都是合法的算术表达式。,算术运算符和算术表达式,3-3,进行算术运算时,应注意:,算术运算符的优先级别是先乘除后加减;,当运算符的优先级别相同时,应按照运算符的,结合方向,处理,算术运算符的结合方向为,“,自左至右,”,。,程序分析,例如:计算下列两个表达式的值:,(,1,),2*3+6,(,2,),2*(3+6),【,例,2-8】,分析下列程序的输出结果,注意其中的算术表达式。,main(),int a,b,c;,a=6;,b=6;,c=6;,a=+b-+c;,printf(%d,%d,%dn,a,b,c);,a=+b+c+;,printf(%d,%d,%dn,a,b,c);,a=b-+-c;,printf(%d,%d,%dn,a,b,c);,【,程序运行结果,】,0,7,7,15,8,8,15,7,7,分析程序,a=(+b)-(+c),a=(+b)+(c+),a=(b-)+(-c),复习:第二次课重点内容,计算机科学学院,36,1,、变量,类型说明符,变量名,2,、算术运算符,重点注意:,自增,(,“,+,”,),自减,(,“,-,”,),运算符,“,/,”,和,“,”,结合性,1,赋值运算符,“,=,”,作用:将一个数据赋给一个变量。,在赋值运算符,“,=,”,之前加上其他运算符,就构成了复合赋值运算符。,赋值运算符和赋值表达式,2-1,C,语言中总共有,10,种复合赋值运算符:,+=,,加赋值运算符,-=,,减赋值运算符,*,=,,乘赋值运算符,/=,,除赋值运算符,%=,,取余赋值运算符,&=,,位与赋值运算符,|=,,位或赋值运算符,=,,异或赋值运算符,=,,右移赋值运算符,2,赋值表达式,由赋值运算符,“,=,”,将一个变量和表达式连接起来的式子。一般格式为:,变量,=,表达式;,赋值运算符和赋值表达式,2-2,注意:,(,1,)赋值运算符,左边,必须是,变,量。被赋值变量的值就是赋值表达式的值。,(,2,)当赋值表达式中左边变量与右边表达式的数据,类型不同,时,需要进行,类型转换,。,转换规则,是:右边表达式的值被转换成左边变量的数据类型,然后再赋值给变量。,【,例,2-9】,分析下列程序的输出结果。,#include stdio.h,main(),float a,b=1;,a=3/2;,b+=b;,printf(a=%fn,a);,printf(,“,b=%fn,b);,【,程序运行结果,】,a=1.000000,分析程序,相当于,b=,b+,b;,计算机科学学院,40,【,例,2-10】,分析下列程序的输出结果。,#include stdio.h,main(),int a=10;,a,=a*=a;,printf(a=%dn,a);,【,程序运行结果,】,a=200,a=a*a,a=a+a,注意变量,a,值的变化,复习:第二次课重点内容,计算机科学学院,41,1,、变量,类型说明符,变量名,2,、算术运算符,重点注意:,自增,(,“,+,”,),自减,(,“,-,”,),运算符,“,/,”,和,“,”,结合性,3,、赋值运算符,重点注意:,赋值运算符,左边,必须是,变,量,复合,赋值运算符的计算(注意变量,值的变化,),结合性,1,关系运算符,关系运算符用于比较两个运算对象的大小。,C,语言提供的关系运算符,如下所示:,关系运算符和关系表达式,,小于运算符,,大于运算符,=,,大于等于运算符,=,,等于运算符,!=,,不等于运算符,使用关系运算符,应注意,优先级,:,关系运算符和关系表达式,前,4,个运算符(,=,关系,赋值,2,关系表达式,关系表达式就是用关系运算符将两个或两个以上运算对象连接起来的式子。其中运算对象可以是常量、变量或表达式。,关系运算符和关系表达式,关系表达式的运算结果有两种:,“,真,”,或,“,假,”,。在,C,语言中用,1,表示,“,真,”,,用,0,表示,“,假,”,。,【,例,2-11】,若有定义如下:,char c=d;,int m=2,n=5;,求下列各表达式的值。,(,1,),c+1=e,(,2,),c+A-a!=D,(,3,),m-2*n=n+9,(,4,),m=2b,),&,(,y=ba,)的值及变量,x,和,y,的值。,【,分析,】,求表达式,“,(,x=ab,),&(y=ba),”,的值,先求表达式,“,(,x=ab,),”,的值。,ab,为假,变量,x,的值为,0,,表达式,“,(,x=ab,),”,的值为假。,对于运算符,“,&,”,,左边的运算对象为,0,,则右边的表达式,“,(y=ba),”,不再进行求解,表达式,“,(,x=ab,),&(y=ba),”,的值为,0,,变量,y,的值不变。,【,结果,】,x=0 y=7,逻辑运算符示例,严格执行“短路计算”,程序分析,【,例,2-13】,分析下列程序的输出结果,注意其中的逻辑表达式。,main(),int a,b,c;a=b=c=1;,+a,printf(%d,%d,%dn,a,b,c);,a=b=c=1;,-a|+b|+c;,printf(%d,%d,%dn,a,b,c);,a=b=c=-1;,+a&+b|+c,;,printf(%d,%d,%dn,a,b,c);,a=b=c=0;,+a|-b,printf(%d,%d,%dn,a,b,c);,【,程序运行结果,】,2,0,1,0,2,1,0,-1,0,1,0,0,严格执行短路计算,C,语言程序设计,第二章 数据类型、运算符和表达式,SCS-SWPU,50,例:,用逻辑表达式来表示闰年的条件,能被,4,整除,但不能被,100,整除。,能被,400,整除。,(year%4=0&year%100!=0)|year%400=0,值为真,(1),是闰年,否则为非闰年。,逻辑运算符的实际应用,C,语言程序设计,第二章 数据类型、运算符和表达式,SCS-SWPU,51,例:能且只能被和中的一个数整除。,(m%3=0)&(m%2!=0)|(m%2=0)&(m%3!=0),例:,ch,是大写字母。,ch=,A,&ch=,Z,思考,上述命题可否描述为,A,chy?y:cd?x:y),;,注意:算术,关系,逻辑,条件,赋值,【,例,2-14】,输入两个整数,求最大数。,计算机科学学院,54,【,分析,】,输入模块(输入数据):,a,和,b;,处理模块:,比较,a,和,b,的大小,将大的赋值给,max;,输出模块(输出数据,):,max;,【,流程图,】,开始,接受,a,和,b,Max=a,显示,max,结束,ab?,Max=b,否,是,利用条件表达式实现,#include stdio.h,main(),int a,b,max;,printf(input a,b:);,scanf(%d,%d,max=ab?a:b;,printf(the max is%dn,max);,【,程序运行结果,】,input a,b:4,5,the max is 5,程序代码:,思考:条件表达式的应用对象?,1,逗号运算符,逗号,“,”,是一种特殊的运算符,用于将若干个表达式连接起来。,2,逗号表达式,用逗号运算符将各种类型的表达式连接成的式子。逗号表达式的一般格式为:,表达式,1,,表达式,2,,,,表达式,n,逗号运算符和逗号表达式,逗号表达式的,运算规则,是:先计算表达式,1,,再计算表达式,2,,依次计算到表达式,n,。,最后一个表达式,的值就是整个,逗号表达式的值,。,逗号运算符练习,计算机科学学院,57,位运算符和位表达式,1,位运算符,位运算符是对二进制位进行运算。,C,语言提供了,4,个逻辑运算符,分别是:,&:,按位与,同为,1,结果为,1,,否则为,0,|:,按位或,有一个为,1,,结果为,1,,否则为,0,:,按位取反,按位取反,:按位异或,相同为,0,,不同为,1,1,移位运算符,(右移),2,移位表达式,移位表达式的一般格式为:,表达式,1,表达式,2,移位算符和移位表达式,其中:表达式,1,是移位对象,表达式,2,是移位位数。,注意:右移后前方置,1,还是,0,由系统决定。,1,sizeof,运算符,求字节数运算符,可以计算某一种类型数据所占存储单元的,字节个数,。它是,单目,运算符。,格式:,sizeof(),2,使用说明,sizeof,运算符的,运算对象,只能是,变量名,或,数据类型标识符,。,其他运算符,程序分析,计算机科学学院,61,【,例,2-15】,分析下列程序的输出结果,注意其中,sizeof,运算符的应用。,main(),float m;,printf(char:%d bytesn,sizeof(char),);,printf(float:%d bytesn,sizeof(float),);,printf(m:%d bytesn,sizeof(m),);,【,程序运行结果,】,char:1 bytes,float:4 bytes,m:4 bytes,小结:常用运算符优先级,计算机科学学院,62,单目,双目,算术,关系,逻辑,条件,赋值,逗号,思考以下问题的结果:,3+2.5,a+3,A+12.34,计算机科学学院,63,2.6,数据类型转换,Int+float,Char+int,char+float,类型转换,以不丢失结果精度为原则,计算机科学学院,64,2.6,数据类型转换,自动类型转换,原则:把表示范围小的类型的值转换到表示范围大的类型的值,short,int,long,float ,double,例:已知,char a;int b;float c;double d;,则表达式,a+b+c+d,的结果为()型,强制类型转换,语法:,(,类型名,),变量或数值,例如:,int a=5,b=3;float qu=,(,float,),a/b;,由系统自动进行,注意:两边的括号一定不能省略,C,语言程序设计,算法的描述,SCS-SWPU,65,2.7 C,数据输入与输出的实现,(,一,),所谓输入输出是以计算机主机为主体而言的,输出,:,从计算机向外部输出设备,(,显示器,打印机,),输出数据。,输入,:,从输入设备,(,键盘,鼠标,扫描仪,),向计算机,输入数据。,(,二,)C,语言本身不提供输入输出语句,输入和输出操作是由,C,函数库中的函数来实现的,例如,:,字符输入函数,:,getchar,字符输出函数,:,putchar,格式输入函数,:,scanf,格式输出函数,:,printf,字符串输入函数,:gets,字符串输出函数,:puts,C,语言程序设计,算法的描述,SCS-SWPU,66,2.7 C,数据输入与输出的实现,C,语言程序设计,算法的描述,SCS-SWPU,67,(,三,),在使用系统库函数时,要用预编译命令,“,#include,”,将有关的,“,头文件,”,包括到用户源文件中,例如:在调用标准输入输出库函数时,应该有:,#include“stdio.h”,或:,#include ,2.7 C,数据输入与输出的实现,计算机科学学院,68,字符型变量,getchar(),字符型数据,字符型数据,putchar(),2.7.1,字符数据的输入输出,接受并显示字符,C,语言程序设计,算法的描述,SCS-SWPU,69,2.7.1,字符数据的输入输出,1,、,putchar(),函数的用法,putchar(),是向标准输出设备上输出,一个字符,,一般是显示器。,使用格式:,putchar(,ch,);,已定义:,int c;,c=A;,若想输出字符,A,,可以用几种方式?,putchar(c);,或,putchar(A);,或,putchar(65);,putchar(,0,101);,或,putchar(,0 x,41);,或,putchar(,101,);,注意:,ch,可以是字符常量或字符变量,也可以是整型常量或整型变量,不能是字符串,C,语言程序设计,算法的描述,SCS-SWPU,70,例,输出单个字符。,#includevoid main()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);putchar(n);,运行结果:,BOY,putchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);,运行结果:,B,O,Y,2.7.1,字符数据的输入输出,C,语言程序设计,算法的描述,SCS-SWPU,71,2,、,getchar(),函数的用法,从标准输入设备上输入,一个,字符,一般是,键盘,使用格式:,ch=getchar();,例,#include ,void main(),char c;,c=getchar();,putchar(c);,#include ,void main(),putchar(getchar(),;,键盘上输入的,数字,、,空格,、,回车,、,逗号等,都将作为一个字符输入,2.7.1,字符数据的输入输出,计算机科学学院,72,#include,void main(),char a,b;,printf(,请输入两个字符,:,n);,a=getchar();,fflush(stdin);,b=getchar();,fflush(stdin);,putchar(a);,putchar(b);,putchar(n);,getchar(),和,putchar(),示例,内存,a,b,O,K,输出:,请输入两个字符:,O,K,OK,Press any key to continue,_,C,语言程序设计,算法的描述,SCS-SWPU,73,2.7.2,格式输出函数,printf,例如:,printf(,“,a=%d,,,b=%f,a,b,);,调用格式:,printf(“,格式控制字符串”,输出列表,);,格式控制:格式说明(,%,格式字符),+,普通字符,输出列表:即需要输出的数据,可以是表达式,函数名,输,出,表,列,普通字符,格式说明:,%,格式说明符,C,语言程序设计,算法的描述,SCS-SWPU,74,符号,作用,%c,单个字符,%s,输出字符串,%d,十进制有符号整数,%u,输出无符号十进制整数,%o,无输出无符号八进制整数,(,不输出前缀,0),%x,%X,输出无符号十六进制整数,(,不输出前缀,0 x),%f,输出十进制,float,数,不带域宽时,保留,6,位小数,%lf,输出十进制,double,数,不带域宽时,保留,6,位小数,%le,以“科学记数法”的形式输出,double,数 如,2.4e+02,%e,以“科学记数法”的形式输出,float,数 如,2.4e+02,%g,选用,e,或,f,格式中较短的一个输出浮点数,不输出无效零,%p,指针的值,2.7.2,格式输出函数,printf,的格式字符,C,语言程序设计,算法的描述,SCS-SWPU,75,格式符,按十进制整数的实际长度输出数据,#include stdio.h /*,包含头文件*,/,main()/*,主函数*,/,int x,,,y,,,z;/*,定义变量*,/,x=3;y=1;/*,给变量赋值*,/,z=x+y;/*,求,a,与,b,的和*,/,printf(“%d+%d=%dn”,x,y,z);/*,输出结果*,/,2.7.2,格式输出函数,printf,的格式字符,例题:,从屏幕输入圆柱体的底面圆的半径,r,和高,h,,求圆柱体的表面积,C,语言程序设计,算法的描述,SCS-SWPU,76,#include,#define PI 3.14159,void main(),float,r,h;,double area;,printf(input the r and h:n);,scanf(,%f%f,area=2*PI*r*r+2*PI*r*h;,printf(%lfn,area);,2.7.2,格式输出函数,printf,的格式字符,默认情况下精确到六位小数,C,语言程序设计,算法的描述,SCS-SWPU,77,若实际位数多于定义的宽度:则按实际位数输出。,若实际位数少于定义的宽度:默认右对齐,有负号左对齐,n:,精度,m:,域宽,即输出项在输出设备上所占的,宽度,输出,实型数据,,,n,指定实型数据所占的小数位数,输出,字符串,,,n,指定最多输出的字符个数,2.7.2,格式输出函数,printf,的格式字符,计算机科学学院,78,int salary=5500;,printf(,%10d,salary);,输出结果:,5500,输出结果的左边显示了,6,个空格,%10d,2.7.2,格式输出函数,printf,的格式字符,计算机科学学院,79,double mercury_level=168.2251074;,printf(,%7.2f,mercury_level);,输出结果:,168.23,宽度:表示所有的数字和小数点所占的位数。不够,7,位右对齐。,%7.2f,精度:精确到小数点后多少位,2.7.2,格式输出函数,printf,的格式字符,计算机科学学院,80,double mercury_level=168.2251074;,printf(,%7.2f,mercury_level);,输出结果:,168.23,宽度,表示所有的,数字和小数点,所占的位数。不够,7,位右对齐。,%7.2f,精度(精确到小数点后多少位),C,语言程序设计,算法的描述,SCS-SWPU,81,标志:,-,、,+,、,#,、空格、,0,的意义如下所示:,-,结果左对齐,右边填空格,+,输出符号,(,正号或负号,)(,只对十进制数),空格,输出值为正时冠以空格,为负时冠以负号,#,对,c,s,d,i,u,类无影响;对,o(,八进制,),类,在输出时加前缀,0,;对,x(,十六进制,),类,在输出时加前缀,0 x,;对,e,g,f,类,确保出现小数点,即使无小数位时亦如此,0,右对齐输出数据时,不够宽度补,0,2.7.2,格式输出函数,printf,的格式字符,C,语言程序设计,算法的描述,SCS-SWPU,82,#include stdio.h,void main(),float f,g;,f=1.27;,g=23.2;,printf(%f+%f=%fn,f,g,f+g);,在输出的数字中并非全部数字都是有效数字,单精度实数的有效位数一般为位;,双精度实数的有效位数一般为,16,位,printf(%2.2f+%2.2f=%4.2fn,f,g,f+g);,2.7.2,格式输出函数,printf,的格式字符,C,语言程序设计,算法的描述,SCS-SWPU,83,例,1,:,printf,(,“%d,%4d,%-4d,%4d”,a,a,a,b);,若,a=123,,,b=12345,则输出结果是:,123,123,123,12345,例,2,:,printf(%lf,%8.2lfn,b,b);,若,b=123.4567,则输出结果是:,123.456700,123.46,例,3,:,printf,(,“%s,%8s,,,%8.3s”,“china”,“china”,“china”);,则输出结果是:,china,china,chi,2.7.2,格式输出函数,printf,的格式字符,计算机科学学院,84,转义序列,输出结果,:,Name:Audrey Hepburn,Movie:Roman Holiday,代码:,printf,(,“Name:Audrey Hepburn n Movie:Roman Holiday”,);,转义序列允许在输出结果中包括特殊字符,转义序列,名称,描述,a,警告,产生一则警告。,b,退格,将光标回退一格。,f,换页,将光标移到下一页的第一格。,n,换行,将光标移到下一行的第一格。,r,回车,将光标移到当前行的第一格。,t,水平制表,将光标移到下一个水平制表位置。,v,垂直制表,将光标移到下一个垂直制表位置。,单引号,产生一个单引号。,双引号,产生一个双引号。,?,问号,产生一个问号。,反斜线,产生一条反斜线。,0,空,产生一个空字符。,C,语言程序设计,算法的描述,SCS-SWPU,85,#include,main(),int a=100;,float b=123.255;,printf(a=%dn,a);,printf(a=%10dn,a);,printf(a=%-10dn,a);,printf(a=%+dn,a);,printf(a=%dn,a);,printf(a=%#on,a);,printf(a=%#xn,a);,printf(b=%07.1fn,b);,/,a=100,/a=,100,/a=100,/a=+100,/a=,100,/a=0144,/a=0 x64,/b=00123.3,例,4,2.7.2,格式输出函数,printf,的格式字符,C,语言程序设计,算法的描述,SCS-SWPU,86,printf,函数的注意事项,格式控制必须与输出项匹配,否则不能正确输出,请判断下列输出是否正确:,main(),int a=65;,printf(%f,a);,main(),int a=65;,printf(%dn,a);,main(),int a=65;,printf(%c,a);,2.7.2,格式输出函数,printf,的格式字符,输出数据的类型必须与格式控制匹配,C,语言程序设计,算法的描述,SCS-SWPU,87,例如:,main(),int x,y;,x=11/3;y=5;,printf(%d,%dn,x,y);,程序的运行结果为:,%d,%3,C,语言规定,在格式控制字符串中若连续出现两个“”,系统视为一个“”字符输出。,2.7.2,格式输出函数,printf,的格式字符,计算机科学学院,88,scanf(,%d,&num,);,scanf,函数从标准输入(键盘),读取,信息,按照格式描述把读入的信息转换为指定数据类型的数据,并把这些数据赋给指定的程序,变量,。,格式控制字符串,&,符号(附在读取的每个变量上)用于指明变量在内存中的位置,变量的名称,格式控,制字符串,参数变量的类型,要求的实际输入,%d,int,十进制数字序列,%ld,long,十进制数字序列,%f,float,十进制数,可以有小数点及指数部分,%lf,double,十进制数,可以有小数点及指数部分,2.7.2,格式输入函数,scanf,C,语言程序设计,算法的描述,SCS-SWPU,89,符号,作用,%c,输入单个字符,%s,输入字符串,%d,输入,十进制有符号整数,%u,输入无符号十进制整数,%o,无输入无符号八进制整数,(,不输出前缀,0),%x,%X,输入无符号十六进制整数,(,不输出前缀,0 x),%f,%e,以小数或指数形式输入,float,型数据,%lf,%le,以小数或指数形式输入,double,型数据,2.7.2,格式输入函数,scanf,计算机科学学院,90,内存,scanf,float tax_rate;,scanf(,%f,tax_rate,在内存中分配一块,32,位存储空间,存储空间使用名称“,tax_rate”,标识,提示用户输入一个值,输入的值存储在变量中(因为,scanf,提供此变量的地址),12.234,C,语言程序设计,算法的描述,SCS-SWPU,91,例 用,scanf,函数输入数据。,#includevoid main()int a,b,c;scanf(“%d%d%d”,&,a,&,b,&,c);printf(“%d,%d,%dn”,a,b,c);,a,在内存中的地址,&,是地址运算符,2.7.2,格式输入函数,scanf,C,语言程序设计,算法的描述,SCS-SWPU,92,使用,scanf,函数的注意事项,(,1,),scanf(),函数可以设置输入宽度,不能设置精度,float a;,scanf(“%4f”,&,a);,正确,scanf(“%,4.2,f”,&,a);,是,非法,的,(,2,),scanf(),函数中一定给出变量地址,不可是变量名,否则出错。,如:,scanf(“%d”,a);,错,scanf(“%d”,&,a);,对,(,3,)输入多个数据时,格式控制串中没有非格式字符,则输入时数据间的分隔符可用,空格、,TAB,键、回车键,。,如:,scanf(“%d%d%f”,C,语言程序设计,算法的描述,SCS-SWPU,93,(,4,)用连续,%c,输入字符数据时,任意字符都有效,scanf(“%c%c%c”,printf(“a=%c,b=%c,c=%c”,a,b,c);,输入:,A,,,B,,,C,输出:,a=A,b=,c=B,(,5,)如果格式控制字符串中有非格式字符,则输入时也要输入非格式字符。,scanf(“%d,%d,%d”,输入应为:,5,,,6,,,7,若为:,scanf(“a=%d,b=%d,c=%d”,输入应为:,a=5,,,b=
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服