单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,4,章:基本输入输出和顺序程序设计,学习的意义,程序对数据的处理流程:,程序的主要功能就是对数据的处理,其整个流程主要包括数据的输入、数据的处理、数据的输出。,语言程序设计教程,第四章,基本输入输出和顺序程序设计,C,数据处理,数据输入,数据输出,C,程序中如何实现数据输入,?,C,程序中如何实现数据输出,?,程序的结构:,写文章有文章的结构,建房子有房子的结构,制造机械产品由机械产品的结构,那么编写程序是否有程序的结构呢?,学习的意义,程序结构,顺序结构,选择结构,循环结构,YES!,本章讨论,第,5,章讨论,第,6,章讨论,语言程序设计教程,第四章,基本输入输出和顺序程序设计,C,格式化输出,printf,格式化输入,scanf,字符数据的非格式化输入、输出,程序的控制结构,顺序程序设计举例,本章小结,学习目标,掌握各种类型数据的格式化输入输出方法;,掌握字符数据的非格式化输入输出方法;,理解三种程序控制结构的流程图;,学会简单顺序程序的设计;,养成良好的程序设计习惯;,语言程序设计教程,第四章,基本输入输出和顺序程序设计,C,学习内容,4.1,格式化输出,printf,语言程序设计教程,第四章,基本输入输出和顺序程序设计,C,一般格式,printf,(,格式控制字符串,,表达式,1,,表达式,2,,,,表达式,n);,功能,按照“格式控制字符串”的要求,将,表达式,1,,表达式,2,,,,表达式,n,的值显示在计算机屏幕上。,说明,格式控制字符串用于指定输出格式。它包含两类字符:,常规字符:,包括可显示字符和用转义字符表示的字符。,格式控制符:,以,%,开头的一个或多个字符,以说明输出数据的类型、形式、长度、小数位数等。其格式为:,%,修饰符,格式转换字符,例:,long,int,x=0 x8AB6;,printf,(“,The Value of x is,%ld,n,”,x);,常规字符,常规字符,(,转义符,),格式控制符,(修饰符),格式控制符,(格式转换符),语言程序设计教程,第四章,基本输入输出和顺序程序设计,C,printf,使用时的注意事项,(1),格式控制字符串可以不包含任何格式控制符。,(2),当格式控制字符串中既含有常规字符,又包含有格式控制符时,则表达式的个数应与格式控制符的个数一致。此时,常规字符原样输出,而格式控制符的位置上输出对应的表达式的值,其对应的顺序是:,从左到右的格式控制符对应从左到右的表达式。,(3),如果格式控制字符串中格式控制符的个数多于表达式的个数,则余下的格式控制,符的值将是不确定的。,(4),不同类型的表达式要使用不同的格式转换符,,同一表达式如果按照不同的格式转换符来输出,其结果可能是不一样的。,printf,(“how are you?n”);,/,只有一个字符串参数,,输出为:,how are you?,printf,(“how old are you?n”,20);,/,带有两个参数,,20,没有意义,,输出为:,how old are you?,已 知:,int,a=2;,函数调用:,printf(,a,*a=,%d,a+5=,%,d,n,a*a,a+5);,实际输出:,a*a=4,a+5=7,printf,(5+3=%d,5-3=%d,5*3=%d,5+3,5-3);,输出结果将是:,5+3=8,,,5 3=2,,,5*3=-28710,输出随机,char,ch,=A;,printf,(,ch,=%c,ch,);,/,输出结果:,ch,=A,(以字符形式输出),printf,(,ch,=%d,ch,);,/,输出结果:,ch,=65,(以,A,字符的,ASCII,码形式输出),语言程序设计教程,第四章,基本输入输出和顺序程序设计,C,printf,函数中的格式转换字符及其含义,格式转换符,含 义,对应的表达式数据类型,%d,或,%i,以十进制形式输出一个整型数据。,例如:,int,a=20;,printf,(%d,a);/,输出,20,有符号整型,%x,,,%X,以十六进制形式输出一个无符号整型数据。,例如:,int,a=164;,printf,(%x,a);/,输出,a4,printf,(%X,a);/,输出,A4,无符号整型,%o (,字母,o),以八进制形式输出一个无符号整型数据。,例如:,int,a=164;,printf,(%o,a);/,输出,244,无符号整型,%u,以十进制形式输出一个无符号整型数据。,例如:,int,a=-1;,printf,(%u,a);/BC,下输出,65535,,,VC,下,4294967295,无符号整型,%c,输出一个字符型数据。,例如:,char,ch,=A;,printf,(%c,ch,);/,输出,A,字符型,语言程序设计教程,第四章,基本输入输出和顺序程序设计,C,printf,函数中的格式转换字符及其含义,格式转换符,含 义,对应的表达式数据类型,%s,输出一个字符串。,例如:,printf,(my name is%s,wangjinghua,);,/,输出,my name is,wangjinghua,字符串,%f,以十进制小数形式输出一个浮点型数据。,例如:,float f=-12.3;,printf,(%f,f);/,输出,-12.300000,浮点型,%e,,,%E,以指数形式输出一个浮点型数据。,例如:,float f=1234.8998;,printf,(%e,f);/,输出,1.234900e+003,printf,(%E,f);/,输出,1.234900E+003,浮点型,%g,,,%G,按照,%f,或,%e,中输出宽度比较短的一种格式输出。,浮点型,语言程序设计教程,第四章,基本输入输出和顺序程序设计,C,【例,】,有符号整数的格式化输出,#include,void main(),int,a=123;,long L=65537;,printf,(12345678901234567890n);,printf,(a=%d-(a=%,d)n,a);,printf,(a=%6d-(a=%6d)n,a);,printf,(a=%-6d-(a=%-6d)n,a);,printf,(L=%ld-(L=%ld)n,L);,printf,(L=%,hd,-(L=%,hd)n,L);,12345678901234567890,a=123-(a=%d),a=123-(a=%6d),a=123 -(a=%-6d),L=65537-(L=%ld),L=1-(L=%,hd,),运行结果:,L,是一长整型数,65537,,其值为十六进制,0X0001,0001,,所以要将其转换成短整型,即取低,16,位,0 x0001,,将其输出,故输出为,1,。,Why?,%d,格式:按,十进制,输出有符号整数,(-2,31,2,31,-1),。,%ld,格式:按,十进制,输出有符号整数,(-2,31,2,31,-1),。,%5d,格式:按,十进制,输出有符号整数,(-2,31,2,31,-1),至少占,5,位,右对齐。,%-5d,格式:按,十进制,输出有符号整数,(-2,31,2,31,-1),至少占,5,位,左对齐。,%8ld,格式:按,十进制,输出,(-2,31,-2,31,-1),之间的长整型整数,至少占,8,位,右对齐,超过,8,位时按实际位数。,语言程序设计教程,第四章,基本输入输出和顺序程序设计,C,【例,】,实数的格式化输出,#include,void main(),double f=2.5e5;,printf,(12345678901234567890n);,printf,(f=%15f-(f=%15f)n,f);,printf,(f=%-15.0f-(f=%-15.0f)n,f);,printf,(f=%15.4f-(f=%15.4f)n,f);,printf,(f=%15.4E-(f=%15.4E)n,f);,12345678901234567890,f=250000.000000-(f=%15f),f=250000 -(f=%-15.0f),f=250000.0000-(f=%15.4f),f=2.5000E+005-(f=%15.4E),运行结果:,%f,格式:按,十进制,输出实数,保留,6,位小数。,%e,格式:按,指数形式,输出实数,尾数部分保留,6,位有效数字。,%.3f,格式:按,十进制,输出实数,保留,3,位小数。,%8.3f,格式:按,十进制,输出实数,保留,3,位小数,至少占,8,位,超过,8,位时按实际位数。,%8.3e,格式:按,指数形式,输出实数,尾数部分保留,3,位有效数字,至少占,8,位,超过,8,位时按实际位数。,%g,格式:按,%e,和,%f,中较短,的一种格式输出实数。,提示,:对于实数也可使用,%e,,,以,标准指数形式,输出;,%e,,不指定输出数据所占的宽度和数字部分小数位数,由系统自动指定给出,6,位小数,指数部分占,5,位(如,e+002,),其中,e,占,1,位,指数符号占,1,位,指数占,3,位,数值按规范化指数形式输出(即小数点前必须有而且只有,1,位非零数字)。,例:,8,列,5,列,或使用,%g,,,让,系统,根据数值的大小,,自动选择,%f,或,%e,格式、且不输出无意义的零。,语言程序设计教程,第四章,基本输入输出和顺序程序设计,C,【例,】,字符及字符串的格式化输出,#include,void main(),char,ch,=A;,printf,(12345678901234567890n);,printf,(,ch,=%,c-(ch,=%,c)n,ch,);,printf,(,ch,=%4c-(ch=%4c)n,ch,);,printf,(,ch,=%-4c-(ch=%-4c)n,ch,);,printf,(,st,=%,s-(st,=%,s)n,CCNU);,printf,(,st,=%6s-(st=%6s)n,CCNU);,printf,(,st,=%6.3s-(st=%6.3s)n,CCNU);,12345678901234567890,ch,=A-(,ch,=%c),ch,=A-(,ch,=%4c),ch,=A -(,ch,=%-4c),st,=CCNU-(,st,=%s),st,=CCNU-(,st,=%6s),st,=CCN-(st=%6.3s),运行结果:,%c,格式:按,字符,输出一个字符,,,但不输出单引号。,%d,格式:按,数值,输出,输出该字符相应的,ASCII,码值,%3c,格式:按,字符,输出一个字符,占,3,位,右对齐。,%-8c,格式:按,字符,输出一个字符,占,8,位,左对齐。,%s,格式:输出一个,字符串,。,%6s,格式:输出一个,字符串,,至少占,6,位,右对齐,超过,6,位,按实际位数。,%-6s,格式:输出一个,字符串,,至少占,6,位,左对齐,超过,6,位,按实际位数。,Scanf,()函数,语言程序设计教程,第四章,基本输入输出和顺序程序设计,C,一般格式,sc,anf,(“,格式控制字符串”,变量,1,的地址,变量,2,的地址,,,变量,n,的地址,);,功能,第一个参数格式控制字符串的控制下,接受用户的键盘输入,并将输入的数据依此存放在,变量,1,、变量,2,、,、变量,n,中,。,int,a;,scanf,(%d,取地址运算符,只能作用于变量!,格式控制符与后续参数中的变量地址的对应关系,已 知:,int,a,b;,函数调用:,scanf,(%,d%d,假设输入:,1020,变量的值:,a,的值是,10,,,b,的值是,20,取地址运算符,&,变量地址的表示:,&,变量名,scanf,函数,格式说明符,的,修饰符,l,修饰符,功 能,m,*,用于,d,o,x,前,指定输入为,long,型整数,