输出函数printfprintf函数的格式为-read

上传人:suns****4568 文档编号:93645760 上传时间:2019-07-25 格式:PPT 页数:37 大小:495.50KB
返回 下载 相关 举报
输出函数printfprintf函数的格式为-read_第1页
第1页 / 共37页
输出函数printfprintf函数的格式为-read_第2页
第2页 / 共37页
输出函数printfprintf函数的格式为-read_第3页
第3页 / 共37页
输出函数printfprintf函数的格式为-read_第4页
第4页 / 共37页
输出函数printfprintf函数的格式为-read_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《输出函数printfprintf函数的格式为-read》由会员分享,可在线阅读,更多相关《输出函数printfprintf函数的格式为-read(37页珍藏版)》请在金锄头文库上搜索。

1、1,七、输出函数printf 八、输入格式转换函数scanf,第二章 基本元素、类型和概念,2,七、输出函数printf printf函数的格式为: printf (“输出格式控制“,输出项1,输出项2,.); 输出格式控制由转义序列、格式转换说明符和普通字符 构成, 格式转换说明符由“%”和格式字符组成,如“%d,%f“ 中的d,f是格式字符。 它们结合在一起指定内存数据的输出格式。普通字符是 原样输出的字符。如: printf ( “Sum is %d,n“, sum) 中的Sum 以及逗号是普通字符。 “n“对应回车换行的转义序列,转义序列的作用是输出控制 代码和特殊字符。,3,prin

2、tf语句就将内存数据项sum根据格式%d进行转换 并显示出来。输出项是各种有值的表达式。 printf函数可存在一个以上的输出数据,一般输出格式 控制的格式转换字符与输出项的个数一致。它们根据各自的 次序一一对应,如下所示: 格式转换说明符数多于其后表达式的个数则结果是不确 定的,此种情况应予以避免,即禁止 printf (“%d, %f,%d“,x, y) 的形式。如果格式转换符数少于表达式的个数,后面多余的 表达式将不予转换处理。,printf (“.x =%f, . y=%x, .z=%d,.n“, x, y, z );,4,1、整型数的格式输出转换 (1) %d或%i 输出有符号十进制

3、数,根据实际长度输 出。 %d与%i在scanf系列函数中有所不同。无宽度控制 时,多个数据首尾相连地输出。例如: printf (“%d, %d“,12,12345); /输出12,12345 (2) %ld,l表示long型数据的转换,%hd,h表示short型 数据的转换。下面用醒目地表示空格。 long a=12345678L; short b=4321; printf (“%9ld,%3hd“,a,b); /输出:1234565678,4321 printf 函数显示时不保留数据的后缀。后缀用于鉴别数 据的确切类型。,5,(3) %wd, %0wd,%-wd 。 %wd 为右对齐方式

4、。%-wd 为左对齐方式。宽度w为 指定的输出字符个数,如果数据的字符个数小于w,左段补 充空格。 %0wd格式控制中的0表示输出前导字符0,左边差额处 补0。 如果数据的字符个数大于w,输出实际数据的长度。 右对齐方式左补空格,左对齐方式右补空格。 printf (“%5d, %5d“, 12,123456); /输出12,123456 printf (“%05d,%05d“,12,123456); /输出00012,123456,6,(4) %o将整数以8进制形式输出; %x将整数以16进制形式输出; %u将整数以10进制形式输出; 这三个格式无论整数是有符号或无符号,一律将二进制数据的最

5、高位作为数据的有效部分转换即视为无符号数输出。 内存数据是二进制的是唯一的,显示的方式则是多样的。 %0wx , %0wu格式控制中的0表示输出前导字符0,差额处补0。输出宽度为w。,7,例 #include void main () /定义在函数体中的变量a,b是局部变量 signed short a=65535; / warning: initializing : truncation from const int to short unsigned short b=-1; /-1初始化无符号的短整型数b printf (“%hd, %4hu, %4ho, %xn“, a, a, a, a

6、); /输出:-1,65535,177777,ffffffff printf (“%hd, %4hu, %4ho, %x n“, b, b, b, b); /输出:-1,65535,177777,ffff /sizeof (0xffff)= sizeof (-1)=4,8,关于vc6.0输出的说明: 65535相当于0x0000ffff,-1是正1算术负的结果相当于 0xffffffff,这两个整型常数为4字节的,a,b是两字节的短整 型变量,初始赋值a=65535,b=-1使得a,b在内存的二进制 数据是16个1即1111111111111111。 h修饰符对a,b内存的二进制数按短整型转换

7、输出, %hd对内存最高位为1的数进行间接求补输出-1。 %hu将内存的最高位视为数据的一部分,因此输出十 进制数65535。,9,例 #include /定义在函数外全局范围的变量a,b是全局变量 signed short a=65535; / warning: initializing : truncation from const int to short unsigned short b=-1; /-1的内存状态是唯一的,内存状态的解释或输出是多样的 void main () printf (“ %d, %u, %010Xn“,a,a,a); /输出:-1,4294967295,00F

8、FFFFFFF printf (“%d,%u,%012Xn“,b,b,b); /输出:65535,65535,00000000FFFF /int型数据在32位模式占4个字节,10,当不存在修饰符h时,%d,%u输出int型数据,对于1 6bit二进制数1111111111111111; 如果这个数视为有符号的,则带符号扩展,最高位为1 时扩展为32为16进制的0xffffffff。 如果这个数视为无符号的,则最高的16位填充以0,因 此扩展为16进制的0x0000ffff。,11,2、字符和字符串的输出转换 (1) %c将值在0255的整数即1字节整数以字符方式输 出。可以指定格式宽度。例如:

9、 int a=97; printf( “%d, %c “, a, a); /输出:97,a char c=c; printf (“%d, %c “, c, c); /输出:99,c char b=b; printf (“%3d,%3c “,b, b); /输出:98,b printf (“%-3d, % - 3c “, b, b); /输出:98,b,12,%3c表示输出占三个字符宽度,前面填充以空格,右对齐 方式。%-3d表示输出占三个字符宽度, 后面填充以空格,负 号 - 表示左对齐方式。没有宽度控制时,转换的数据相邻输 出,不存在对齐方式起作用。 注意: c是变量,c是常数。%c中的c是

10、格式字符。,13,例将转义序列中的一些字符的ASCII值以10进制数和字符 方式显示出来: #include void main () char a=a, b=b, t=t, n=n, v=v; /输出结果不含定界符单引号 printf (“%d, %d, %d, %d, %dn“,a, b, t, n, v); /输出:7,8,9,10,11 printf (“%c, %c, %cn“,“,); /输出: “, ,14,(2) %s用以输出字符串,实际输出字符串中0以前的 字符序列,不含定界符双引号。 printf (“%s,%sn“,“abcd“,“12“ “34“); /输出:abcd,

11、1234 printf (“%s,%sn“,“Ab143“,“101bc“); /输出:Abc,Abc printf (“%s,%sn“,“04312“,“x23“ “143“ “04312“); /输出:#12,#c04312 当若干字符串用空格分隔的时候,相邻的字符串合为一 体。例如: “12” “34”合为“1234” 。 下面代码显示字符串常数中的转义序列字符“,t, ,n。 printf (“%s2%s45678n“,“,“); /输出: 245678 printf (“%s10%s“,“t“,“n“); /输出:“ 10,15,(3) %w.rs 右对齐方式; %-w.rs 负号-

12、表示左对齐方式; 格式字符s对应的精度r是字符串格式转换的最大个数, 超过精度的剩余字符不予处理,剩余的实际上补充为空格。 右对齐方式左补空格,左对齐方式右补空格。宽度格式 符 w 控制输出字符占有的宽度个数。 如果精度r大于宽度w,则取宽度w等于精度r。,16,例如: printf (“%6s, %3sn“, “1234“, “1234“ ); /输出: 1234,1234 printf (“%-6s, %-3s“, “1234“, “1234“ ); /输出:1234,1234 printf (“%6.2s, %3.1sn“, “1234567“, “1234“); /输出: 12, 1

13、printf (“%-6.2s, %-3.1sn“, “1234567“, “1234“); /输出: 12, 1 printf (“%6.7s, %3.4sn“, “12345678“, “12345“); /输出:1234567,1234,17,3、浮点数的格式输出转换 (1) %f 匹配浮点数,转换为-dddd.iiii,dddd和 iiii 是一个或多个十进制数,dddd的个数取决于源数据的大 小,iiii数字个数依赖于所给定的精度,缺省值为6。例如: float x=111111.222, y=222222.333; /文字常数是原始文本串 printf ( “%f, %fn“, 1

14、11111.222+222222.333, 111111.222f,x+y); /内存数据是二进制的 输出:333333.555000,111111.218750,333333.546875 /输出结果是目标文本串,18,%f 可以匹配float型数也可以匹配double型数,在转换 时存在数据精度的损失。 系统按照4舍5入的原则取舍。x是4字节的浮点数,按 照2进制float格式存贮,%f将2进制浮点格式存贮的数据转 换为文本串。 占10个字符的文字常数111111.222是double型的数 据,以8字节的2进制double格式存贮,然后用指定格式转 换为目标文本串。,19,(2) %e

15、有符号的双精度浮点值,该数值以小写字母e 的科学计数法表示; %E double类型的数据,该数值表示为: -d.iiiiEsddd。 d是字符0123456789之一即d是一个十进制数字,ddd 是三个十进制数构成的组合,iiii是一个或多个十进制数,缺 省的数字个数或精度为6; s是正号+或负号-。方括号 表示可省略的项。格式字 符e和E等价,差别只是大小写不同。 一般指数部分Esddd占五位字符宽度。,20,(3) %g或%G 以%f或%e格式更紧凑地转换有符号的浮点数,如果转 换的结果为指数形式后指数值小于- 4或大于等于预定的精 度,用%e格式实现转换,否则通过%f格式转换。 双百分号%用于显示百分号字符同时屏蔽掉紧跟其后 的格式字符(格式字符当作普通字符)的转换作用。 没有宽度控制时,转换的数据相邻输出。,21,例如: printf (“%e-%e, %e-%en“,123456789.0,5e-3); printf (“%G,%gt

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

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号