(中职)计算机程序设计(C语言)第三章第3节教学课件工信版.ppt

上传人:春哥&#****71; 文档编号:90598886 上传时间:2023-05-16 格式:PPT 页数:38 大小:1,019.50KB
返回 下载 相关 举报
(中职)计算机程序设计(C语言)第三章第3节教学课件工信版.ppt_第1页
第1页 / 共38页
(中职)计算机程序设计(C语言)第三章第3节教学课件工信版.ppt_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《(中职)计算机程序设计(C语言)第三章第3节教学课件工信版.ppt》由会员分享,可在线阅读,更多相关《(中职)计算机程序设计(C语言)第三章第3节教学课件工信版.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、YCF(中职)计算机程序设计(C语言)第三章第3节教学课件工信版3.3格式输入与输出格式输入与输出3.3.1 printf函数函数3.3.2 scanf函数函数3.3.1 printf函数函数printf()函数是一个标准库函数,它在头文件“stdio.h”中定义。它的作用是向终端(显示屏)输出若干个任意类型的数据语法格式:printf(格式控制,输出表列);例如:printf(%d,%cn,i,c);说明:1、“格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括两部分。格式说明。格式说明由“%”和格式字符组成,如%d,%c等。它的作用是将输出的数据转换为指定的格式输出。格式说

2、明总是由“%”字符开始的。普通字符。普通字符即为原样输出的字符。例如上面“”内除了格式说明之外的逗号、空格、字符串和换行符。说明:2、“输出表列”是需要输出的一些数据,可以是表达式,也可以是变量。用“”括起来表示内容可以省略,当省略该项时,该“格式控制”中只能有及普通字符。如printf(thisisCprogram);thisisCprogram直接在显示器上输出。注意双撇号不输出。输出项有多项时,之间必须用逗号作为分隔符。要求格式字符和各输出项在数量和类型上应该一一对应。输出项可以是变量,常量或表达式。例如:printf(“%d,%d”,a,b);“%d”称为格式说明,“,”称为普通字符,

3、照原样输出。如果a、b的值为6、7则输出为6,7。总而言之,变量按照格式控制的形式输出,普通字符照原样输出。下面具体的介绍常用的格式字符:对于整形数据前面已介绍过有三种形式即:十进制,八进制,十六进制。(1)d格式符。用来输出十进制整数。有以下几种用法%d。按十进制整形数据的实际长度输出。%md,%-mdm为指定的输出数据的宽度。如果数据的位数小于m,则左端补空格以满足宽度,若大于m,则按实际位数输出。当为-m时,右端补空格以满足宽度。例如:intx=1236;printf(%6d,%-6d,%3d,x);则输出结果为1236,1236,1236注意:前两个1236的前面两空格和后面两空格是因

4、为宽度不足6位,左补和右补,第三个1236前后均无空格,宽度不足原数据长度时,数据照原样输出。%ld:输出长整形数据。例如:longa=123456;printf(%ld,a);此时必需要用%ld输出,如果用%d就会出错,因为前面章节已讲过c语言中int是2个字节,数据的范围为32768至32767,(vc中int是4个字节),而123456超出了整形的范围,所以变量应定义成long,否则就会出错。当然ld前也可以加宽度m,输出指定的宽度。(2)o格式符:以八进制整数形式输出。由于整型数据是以二进制补码的形式存放的,因此输出的数值不带符号,即无负数。例如:inta=2;printf(%d,%o

5、,a,b);2在内存中的存放形式如下(这里int以16来处理,如果vc+6.0,则应以32位来理解,但原理一样的):输出结果为2,177776不会输出带负号的八进制整数。对长整形也可以用“lo”格式输出。同样前面也可以用m来指定宽度。1111111111111110(3)x格式符:以十六进制形式输出整数,也不会输出负数。例如:inta=2;printf(%d,%x,a,b);输出结果为2,fffe对长整形也可以用“lx”格式输出,前面也可以用m来指定宽度。当x大写时,输出的十六进制字母为大写。(4)u格式符:用来输出unsigned型数据,即无符号数,以十进制整数形式输出。一个有符号整(int

6、型)也可以用%u格式输出;反之,一个无符号型(unsigned)数据也可以用%d格式输出。无符号型数据也可用%o,%x格式输出。【例3.2】整形数据的几种输出形式。main()unsigneda=65535;intb=-2;printf(a=%d,%o,%x,%un,a,a,a,a);printf(b=%d,%o,%x,%un,a,a,a,a);运行结果为:a=-1,177777,ffff,65535b=-1,177776,fffe,65534注意:记住整型、无符号数据的表示范围,如果超出它们的范围就会得到不一样的值,以满足它们的范围。对于字符型数据主要有如下两种形式:(1)c格式符:用来输出

7、一个字符。例如:charx=a;printf(%c,x);输出字符a。因为字符占一个字节,在内存中是以二进制ASCII码形式存放的。所以一个整数,只要它的值在0255范围内,也可以用“%c”按字符形式输出;反之,一个字符数据也可以用整数形式输出。【例3.3】字符、整型数据的输出main()intx=65;charc=A;printf(%c,%cn,c,x);printf(%d,%dn,c,x);运行结果为:A,A65,65当然也可以用m来指定输出宽度。(2)s格式符:用来输出一个字符串。有几种用法:%s输出字符串,不包括双撇号,例如:printf(“%s”,“ABCD”);输出字符串“ABCD

8、”(不包括双撇号。%ms,%ms输出的字符串占m列,如字符串本身长度大于m,则照原样输出,如串长小于m,则左补空格,以满足宽度m。m右补空格。%m.ns,%m.ns输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格,以满足宽度m。m时n个字符输出在m列的左侧,右补空格。当n小于等于m时,字符照原样输出。当m等于n时,m可省略。【例3.4】字符串的输出。main()printf(%s,%3s,%.2sn,CHINA,CHINA,CHINA);printf(%8.2s,%5.6s,%-8.2sn,CHINA,CHINA,CHINA);运行结果为:CHINA,CHINA,C

9、HCH,CHINA,CH对于实型数据前面已讲有两种形式,小数形式,指数形式,下面分别对其进行介绍:(1)f格式符:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法。%f不指定字段宽度,由系统自动指定,使整数部分全部输出,并输出位小数。应当注意,在输出的数字中并非全部数字都是有效数字。单精度实数的有效位数一般为位。【例3.5】输出实数时的有效位数。main()floatx,y;X=111111.111;y=222222.222;printf(%f,x+y);程序运行结果为:333333.328175显然,只有前位数字是有效数字。双精度也可用%f格式输出,它的有效位数一般为位,给出小

10、数位,但无论是单精度还是双精度,小数点后面系统会自动保留位。%m.nf,%-m.nf指定输出的数据其占m列,其中有n位小数。如果数值长度小于m,则左端补空格。%-m.nf与%m.nf基本相同,只是右端补空格。【例3.6】输出实数时指定小数位数。main()floatx=123.457;printf(%f,%10.2f,%.2f,%-10.2f,%10f,x,x,x,x,x);输出结果如下:123.457000,123.46,123.46,123.46,123.457000(2)e格式符:以指数形式输出实数。可用以下形式。%e,不指定输出数据所占的宽度和数字部分的小数位数,有的C编译系统自动指定

11、给出数字部分的小数位数为6位,指数部分占5位(如e+003),其中“e”占1位,指数符号占1位,指数占3位。数值按规范化指数形式输出(即小数眯前必须有且只有1位非零数字)。例如:printf(%e,123.457);运行结果:1.234570e+002所输出的实数共占13列宽度。(注:不同系统的规定略有不同)%m.ne,%-m.n,m、n和“-”字符的含义与前面相同。此处n指输出的小数部分(又称尾数)的小数位数。若x=123.457,执行printf(%e,%10.2e,%.2e,%10.2e,%10e,x,x,x,x,x);运行结果:1.234570e+002,1.23e+002,1.23e

12、+002,1.23e+002,1.234570e+002说明:最后一个输出项按%10e输出,即只指定了m=10,未指定n,自动使n=6,整个数据长13列,超过给定的10列,则按实际长度输出。(3)g格式符:用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的零。例如,若x=123.457,执行printf(%f,%e,%g,x,x,x);运行结果:123.457000,1.234570e+002,123.457用%f格式输出占10列,用%e输出占13列,用%g格式时,自动从上面两种格式中选择短者,且不输出无意义的0,因此输出123.457,%g格

13、式用得较少。以上介绍了9种格式符,归纳如表31所示。格式格式字符字符说明说明举例举例输出结果输出结果d以带符号的十进制输出整数(正数不输出符号)以带符号的十进制输出整数(正数不输出符号)printf(“%d”,a);65o以八进制无符号形式输出整数(不输出前导符)以八进制无符号形式输出整数(不输出前导符)printf(“%o”,a);101x,X以十六进制无符号形式输出整数(不输出前导符以十六进制无符号形式输出整数(不输出前导符0 x),),当当x为小写时则输出为小写时则输出a-f,当当X大写时,输出大写时,输出-printf(“%x”,a);41u以无符号十进制形式输出整数以无符号十进制形式

14、输出整数printf(“%u”,a);4294967231c以字符形式输出,只输出一个字符以字符形式输出,只输出一个字符printf(“%c”,a);As输出字符串输出字符串printf(“%s”,a);abf以小数形式输出单、双精度数,默认输出位小数以小数形式输出单、双精度数,默认输出位小数printf(“%f”,a);31.423560e,E以指数形式输出实数,用以指数形式输出实数,用e/E时指数以时指数以“e”或表示或表示printf(“%e”,a);3.142356e+001g,G选用选用%f或或%e格式中输出宽度较短的一种格式,不输出无格式中输出宽度较短的一种格式,不输出无意义的。用

15、时,指数以大写表示意义的。用时,指数以大写表示printf(“%g”,a);31.4236设inta=65;floatx=31.42356;在格式说明中,在%和上述格式字符间可以插入以下几种附加符号(又称修饰符),如表所示。表表3 printf的附加格式说明字符的附加格式说明字符字符字符说明说明l,L用于长整型整数,可加在格式符用于长整型整数,可加在格式符d,o,x,u前面前面m(代表一个正整数代表一个正整数)数据最小宽度数据最小宽度n(代表一个正整数)(代表一个正整数)对实数,表示输出对实数,表示输出n位小数;对字符串,表示截取的字位小数;对字符串,表示截取的字符个数符个数-输出的数字或字符

16、在域内向左靠输出的数字或字符在域内向左靠3.3.2 scanf函数函数1.语法格式语法格式:scanf(格式控制,地址表列);说明:“格式控制”的含义同printf函数;“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。在用printf函数输出时,务必注意数据类型应与上述格式说明匹配,否则将会出现错误。对使用printf函数还要说明以下几点。(1)除了,外,其他格式字符必须用小写字母,如%d,%s不能写成%,%。(2)可以在printf函数中的“格式控制”字符串内包含第章节的“转义字符”,如“n”、“t”、“ddd”、“xhh”等。(3)上面介绍的d,o,x,u,c,s

17、,f,e,g等字符,如用“%”后面就作为格式符号。一个格式说明以“%”开头,以上述个格式字符之一为结束,中间可以插入附加格式字符。(4)如果想输出字符“%”,则应该在“格式控制”字符串中用连续两个%表示,执行printf(%f%,1.0/3);运行结果:0.333333%(5)如果想输出多个相同的字符串,则可以用printf(“%*s”,10,“xx”);等介于printf(“%10s”,”xx”);当然10也可以换成变量,这条语句在用于文本作图时可以省略一个for循环,很有作用。【例3.7】用scanf函数输入数据。main()inta,b,c;floatx,y;scanf(%d%d%d,&

18、a,&b,&c);scanf(%f,%f,&x,&y);程序运行结果:3.2,5.6&a,&b,&c中的“&”是“地址运算符”,&a指a在内存中的地址。“%d%d%d”表示要按十进制形式输入个数据。输入数据时,在两个数据之间以一个或多个空格间隔,也可以用nter键,Tab键均可。而其它符号输入不合法,如7,8,9则不合法。scanf()函数所用到的格式说明符与printf()几乎完全相同,只是%f、%e、%g、%G在scanf()中只用于float型,而用于double型时要求使用“l”修饰符表列出了scanf用到的格式字符。表列出scanf可以用的附加说明字符(修饰符)。表scanf的格式字

19、符格式字格式字符符 说明说明 d用来输入有符号的十进制整数用来输入有符号的十进制整数u用来输入无符号的十进制整数用来输入无符号的十进制整数o用来输入无符号的十六进制整数用来输入无符号的十六进制整数c用来输入单个字符用来输入单个字符s用来输入字符串,将字符串送到一个字符数组中,在输入用来输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始(空白不等价于空格,前者的时以非空白字符开始(空白不等价于空格,前者的ASCIIASCII码值为而后者的码值为而后者的ASCIIASCII码值为码值为3232),以第一个空白字符结以第一个空白字符结束。字符串以串结束标志束。字符串以串结束标志0(0)

20、0(0)作为其最后一个字符。作为其最后一个字符。f用来输入实数,可以用小数形式或指数形式输入用来输入实数,可以用小数形式或指数形式输入E,e,g,G与与f f作用相同,作用相同,e e与与f,gf,g可以互相替换可以互相替换(大小写作用相同大小写作用相同)表scanf的附加格式说明字符字符字符 说明说明 l l 用于输入长整型数据(可用用于输入长整型数据(可用%ld,%lo,%lx,%lu%ld,%lo,%lx,%lu)以及)以及doubledouble型数据(用型数据(用%lf,%le%lf,%le)域宽域宽 指定输入数据所占宽度(列数),域宽应为正整数指定输入数据所占宽度(列数),域宽应为

21、正整数*表示本输入项在读入后不赋给相应的变量表示本输入项在读入后不赋给相应的变量2.说明()对unsigned型变量所需的数据,可以用%u、%d或%o、%x格式输入。()可以指定输入数据所占的列数,系统自动按它截取所需数据。例如:scanf(%3d%3d,&a,&b);输入12345系统自动将123赋给变量a,45赋给变量b,即当输入数据的宽度超过指定宽度时系统会截取指定的宽度,而当输入数据的宽度小于指定宽度时系统只能取输入数据的宽度,此方法也可用于字符型或字符串型。但字符型只能接受一个字此方法也可用于字符型或字符串型,但字符型只能接受一个字符,如:chara,b30;scanf(%3c,%3

22、s,&a,b);ABC,ABC则字符变量a的的值为A,字符串变量b的值为ABC。因为字符变量只能接受一个字符,而字符串数组b可以接受多个字符(%3s表示最多可接受3个字符,输入少于个时,按实际长度,多于个时只接受个)。()如果在%后有一个“*”附加说明符,表示跳过它指定的列数。例如:scanf(%2d%*3d%2d,&a,&b);输入1234567则a的值为12,b的值为67系统会将12赋给整型变量a,%*3d表示读入3位整数但不赋给任何变量。然后再将位整数67赋给整型变量b。即“345”被跳过,因此,当不需要其中某些数据时,可能此法“跳过”它们。()输入数据时不能规定精度,例如:scanf(

23、%6.2f,&x);是不合法的,不能企图用这样的scanf函数输入以下数据而使a的值为123.46。使用scanf函数时应注意的问题()scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名。例如,下面写法则是错误的。scanf(“%d,%d”,a,b);变量a,b前面应加&,这是容易错误的地方,读者应注意,C语言中唯一不需要加&的地方是字符串数组名前面。()如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在畋数据时在对应位置应输入与这些字符相同的字符。例如:scanf(%c%c%c,&a,&b,&c);ABC说明:字符A赋给变量a,空格字符赋给变量b,字符B赋给变量c,%

24、c只要求读入一个字符,后面不需要用空格作为两个字符的间隔,因此,作为下一个字符赋给变量b,如果想使变量a、b、c的值为ABC,正确的输入方法是:ABC即:对于字符型数据除了格式符外其它的字符照原样输入。如“格式控制”中无其它字符,字符间不能输入其他字符作为间隔。(4)当使用多个scanf()函数连续给多个字符型变量赋值时,注意输入的方法。例如:scanf(%c,&a);scanf(%c,&b);若要使变量a的值为A,变量b的值为B,则正确的输入方法是:AB而不是AB,否则变量b的值就会是。(5)在输入数据时,遇以下情况时认为该数据结束。遇空格,或按“回车”或“跳格”(Tab)键;按指定的宽度结

25、束,如“%3d”,只取3列;遇非法输入。例如:scanf(“%d%c%f”,&a,&b,&c);12a123o.21第一个数据对应%d格式,在输入12之后遇字符a,因此认为数值123后已没有数字了,第一个数据到此结束,把12赋给变量a,字符a送给变量b,由于%c只要输入一个字符,因此输入字符a之后不需要加空格,后面的数值应赋给变量c。如果由于疏忽把本来应为1230.21错打成123o.21,由于123后面出现字符o,就认为该数值数据到此结束,将123赋给变量c,所以a的值12,b的值为a,c的值为123。(6)八进制、十六制输入时无需输入0、0 x例如:scanf(%d%o%x,&a,&b,&c);printf(“%d%d%d”,a,b,c);123123123运行结果:12383291

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

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

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁