单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,YHY,输入输出,第四章,回顾,运算符的分类,表达式的含义,算术运算符与算术表达式,赋值运算符与赋值表达式,自增自减运算符与自增自减表达式,逗号运算符与逗号表达式,数据类型的转换,目标,格式化输入、输出,scanf,(“,格式控制字符串”,输入列表,);,printf,(“,格式控制字符串”,输出列表,);,字符输入、输出,char,ch,;,输入,:,ch,=,getchar,();,输出,:,putchar(ch,);,getch,(),的使用,所谓输入输出是以计算机为主体而言的,输入,:,从输入设备,(,键盘,鼠标,扫描仪,),向计算机输入数据。,输出,:,从计算机向外部输出设备,(,显示器,打印机,),输出数据。,C,语言本身不提供输入输出语句,输入和输出操作是由,C,函数库中的函数来实现的,。,例如,:,格式输入函数,:,scanf,格式输出函数,:,printf,字符输入函数,:,getchar,字符输出数,:,putchar,字符串输入函数:,gets,字符串输出函数,:puts,数据输入输出在,C,语言中的实现,在使用系统库函数时,要用预编译命令,“,#include,”,将有关的,“,头文件,”,包括到用户源文件中,。,例如:,在调用标准输入输出库函数时,文件开头应该有:,#include,或:,#include,“,stdio.h,”,数据输入输出在,C,语言中的实现,格式输出函数,printf,函数作用:向终端(显示器)输出,任意类型,的数据。,格式:,(,),说明:,1,、,printf,:输出函数名,2,、括号内用逗号(,)分成两部分,“格式控制字符串”,输出列表,printf,3,、格式控制字符串,格式控制字符串是由双引号引起来的一串字符,用于指定输出数据的格式,(,1,)格式说明符:,格式转换字符,例如:,%d-,基本整型格式,%ld-,长整型格式,%f-,单精度实型格式,%lf-,双精度实型格式,%c-,字符型格式,格式输出函数,printf,(,2,)原样输出的字符:除格式说明符之外的字符原样输出,(,3,)转义字符:,n,使输出换行,4,、输出列表:要输出的数据,(,1,)可以没有输出列表,此时,printf,仅将双引号内的字符串输出到屏幕上,通常作为提示用。,例如:,printf(“Please,input a and b:”);,格式输出函数,printf,(,2,)可以是常量、变量及其他表达式,(,3,)若有多个输出,各输出项用逗号隔开,(,4,)与格式说明符按顺序一一对应,例:,int,num1=97,num2=65;,printf(,“,%c,%,dn,”,num1,num2);,printf(,“,%c,%,dn,”,num2,num1);,格式输出函数,printf,格式说明符,1,、,%,格式符:用来输出十进制整数。,几种用法:,:,按十进制整型数据的实际长度输出。,:,输出长整型数据。,例,:,;,/*,定义,a,为长整型变量*,/,(,,);,:,为指定的输出字段的宽度。如果实际数据的位数小于,则左端补空格,若大于,则按实际位数输出。,例,:,int,a=123,b=12345;,(,n,a);,(,n,),;,注:对其他格式同样适用,格式输出函数,printf,2,、,%,格式符:以八进制整数形式输出。,输出的数值不带符号,符号位也一起作为八进制数的一部分输出。,例:,int,a=10;,printf(%d,,,%o,,,a,,,a);,输出为,:,10,,,12,注:对长整数(型)可以用,“,”,格式输出。同样可以指定字段宽度。,例,:,(,,),;,输出为,:12 (,数字前有,6,个空格,),格式输出函数,printf,3,、,%,格式符。以十六进制数形式输出整数。,例:,10,;,(,,,,);,输出结果为,:a,,,10,4,、,%,格式符:用来输出一个字符。,如:,ch,;,(,,,ch,);,输出字符,:,.,注意:一个整数,可以用,“,”,使之按字符形式输出,在输出前,系统会将该整数作为,ASCII,码转换成相应的字符;同样一个字符数据也可以用整数形式输出。,格式输出函数,printf,5,、,%,格式符:用来以小数形式输出实数,有以下几种用法:,:不指定字段宽度,由系统自动指定字段宽度,使整数部分全部输 出,并输出位小数。,f:,输出双精度型,(double),数据。,例,:,double,1234.455994,;,/*,定义,a,为双精度型变量*,/,(,f,,);,.,:指定输出的数据共占列,其中有位小数。如果实际数值长度小于,则左端补空格,如果实际数值长度大于,原样输出;如果小数位数小于,n,,则右端补,0,,果小数位数大于,n,,按指定位数输出。,格式输出函数,printf,注意,:,在输出的数字中并非全部数字都是有效数字。单精度实数的有效位数一般为位。双精度实数的有效位数一般为,16,位,6,、,%,格式符,:,以指数形式输出实数。,小数点前保留一位非,0,数字,小数点后保留六位小数,7,、,%s,格式符:输出字符串,(,n,,,),输出字符串“”(不包括双引号)。,%ms,,输出的字符串占,m,列,若串长大于,m,,则全部输出,若串长,小于,m,,则左补空格。,%m.ns,输出占,m,列,只取字符串中左端,n,个字符,输出在,m,列的右侧,左补空格。,格式输出函数,printf,格式说明符,说 明,%d,以十进制形式输出整数,%o,以八进制无符号形式输出整数,%x,以十六进制无符号形式输出整数,%c,以字符形式输出,仅输出一个字符,%f,以小数形式输出单、双精度数,%e,以标准指数形式输出单、双精度数,%s,输出字符串,格式输出函数,printf,附加说明符 说 明,l,用于输出长整型数据或双精度实型数据,,如,%ld ,%lf,m(,正整数,),输出数据的宽度,.n(,正整数,),对实数,表示输出,n,位小数;,对字符串,表示截取的字符个数,输出的数据在输出域内向左对齐空格移到后面,格式输出函数,printf,说明:,除了,X,,,E,G,外,其他格式字符必须用小写。,可以在,printf,函数中的“格式控制”字符串中包含转义字符,如,n,t,。,一个格式说明必须以“,%”,开头,以格式字符结束,中间可以插入附加格式字符,格式字符以输出的数据类型而定,int,型数据使用,%d,float,型数据使用,%f,double,型数据使用,%lf,char,型数据使用,%c,格式说明符的数量要与输出项的数量一致,想输出,%,,则应该在格式控制字符串中用连续两个,%,表示。,格式输出函数,printf,格式输入函数,scanf,函数作用:,从标准输入设备上读取输入数据,相当于对变量赋值。,格式:,(,),说明:,1,、,scanf,:输入函数名,2,、括号内用逗号(,)分成两部分,“格式控制字符串,”,输入列表,scanf,3,、格式控制字符串:控制输入数据的格式,写法同,printf,4,、输入列表:要输入的数据,(,1,),若为一般变量,要在变量名前加,“,&”,(取地址运算符),表示将输入的数据存入变量对应的内存单元(地址)中。,(,2,),若有多个输入,各输入项用逗号隔开,(,3,)与格式说明符按顺序一一对应,例:,int,i;char j;,scanf(“%d,%c”,格式输入函数,scanf,三、输入方式:逐个输入数据,最后用回车结束输入,1,、当格式说明符之间无任何字符或是空格时,可以使用空格、,TAB,或回车作为间隔符,(,无字符型数据时,),例:,scanf(“%d%d%d”,&a,&b,&c,);,scanf(“%d,%d%,d”,&a,&b,&c,);,主要使用方式,2,、当格式控制符中有其他字符,其他字符要原样输入,例:,scanf(“%d,,,%d,,,%,d”,&a,&b,&c,);,scanf(“a,=%d,b=%,d,c,=%,d”,&a,&b,&c,);,格式输入函数,scanf,说明:,可以指定输入数据所占的列数,系统自动按它截取所需数据。,如果在,%,后有一个“*”附加说明符,表示跳过它指定的列数。,输入数据时不能规定精度。,在用“”格式输入字符时,如果控制符之间无任何字符,则在输入字符时连续输入,字符之间也不加任何字符;如果有其他分隔符存在,则按实际的分隔符输入。,格式输入函数,scanf,字符输入输出函数,只用于单个字符的输入输出,格式,输入:变量名,=,getchar,();,例:,char c;,c=,getchar,();,输出:,putchar,(,字符型变量或常量,),;,例:,putchar(c,);,putchar(a,);,getch,(),getch,(),的功能与,getchar,(),相似,区别在于使用,getchar,(),时输入的字符都显示出来,,getch,(),不显示输入的字符,使用,getch,(),需包含头文件,#include ,使用举例,main(),printf,(“,请按任意键继续,”),;,getch,();,总结,格式输入输出的规则,字符输入函数的使用,getch,()的用法,