C语言复习第十七课
第十七课 ※主要内容 (1) 、格式字符及其功能 (2) 、用于输入的格式字符及其功能 ※主要知识点 1、一般格式 printf (格式控制,输出表列) 例如:printf (“i=%d, ch=%c\n”, i, ch); 说明: (1) 、“格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括两种信 息: ① 、格式说明:由“%”和格式字符组成,它的作用是将输出的数据转换为指定的格式输出。 ② 、普通字符,即需要原样输出的字符。 (2) 、“输出表列”是需要输出的一些数据,可以是表达式 (3) 、printf函数的一般形式可以表示为 printf (参数1,参数2, ,参数n) 功能是将参数2〜参数n按参数1给定的格式输出 2、格式字符(9种) (1)、d (或i)格式符。用来输出十进制整数,有以下几种用法: ① 、%d,按整型数据的实际长度输出。 ② 、%md, m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m, 则按实际位数输出。 ③ 、%ld(%mld也可),输出长整型数据。 例如:long a= 123456; printfa); ⑵、。格式符,以八进制数形式输出整数。格式:%o, %mo,%lo, %mlo都可。 ⑶、x(或X)格式符,以十六进制数形式输出整数。格式:%x, %mx, %lx, %mlx都可。 (4) 、u格式符,用来输出unsigned型数据,即无符号数,以十进制数形式输出。格式:%u, %mu, %lu 都可。 参见:li4-3. c/*无符号数据的输出*/ ⑸、c格式符,用来输出一个字符。格式:%c, %mc都可。 (6) 、s格式符,用来输出一个字符串。格式:%s, %ms, %-ms, %m. ns, %-m. ns都可。 (7) 、f格式符,用来输出实数(包括单、双精度),以小数形式输出。格式:%f, %m. nf, %-m. nf 都可。 注意:单精度实数的有效位数一般为7位,双精度为16位。 (8) 、e (或E)格式符,以指数形式输出实数。格式:%e, %m. ne, %-m. ne都可。 (9) 、g (或G)格式符,用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输 出时占宽度较小的一种)。 3、说明 (1) 、除了 X、E、G (用大写字母表不)夕卜,其他格式字符必须用小写字母; (2) 、“格式控制”字符串内可以包含转义字符; (3) 、如果想输出字符“%”,则应该在“格式控制”字符串中用连续两个%表示,如: printf(“%f%%”,1.0/3); (4) 、格式字符表参见下表 表2 printf的附加格式说明字符 字符 1说明 字母1 用于长整型整冬可加在格式 符d、o x x、u前面 m(代表一个正整数) 数据最小宽度 n(代表一个正整数) 对实数,表示输出n位小数;对 字符串,表示截取的字符个数 - 输出的数字或字符在域内向左靠 练习题 一、选择题: 1、有以下程序: #include void main() ( int a二10, b二20, c=30; printf ( “%d\n”,(a二50, b*a, c+a)); ) 程序运行后输出结果是() A、 40B、 50 C、 600D、 80 2、有以下程序: #include void main() ( 选用%f格式中输出宽度较短的一种格式,不输出无意义的0 g, G 表1 printf格式字符 格式字符 以带符号的十进制形式输出整数(正数不输出符号) d, i 以八进制无符号形式输出整数(不输出前导符0) 以十六进制无符号形式输出整数(不输出前导符Ox),用x则输出十六进制 数的a〜f时以小写形式输出,用X时,则以大写字母输出 以无符号十进制形式输出整数 u 以字符形式输出,只输出一个字符 输出字符串 以小数形式输出单、双精度数,隐含输出6位小数 e, E 以指数形式输出实数 int x; X二x++; printf (,z%d\n,z, x); } 程序运行后输出结果是() A、1B、0C、编译出错D、不错定 3、有以下程序: #include void main() ( int x=l, y=5, z;z=x%y;z++; printf ( “%d\n“ , z) ;} 程序运行后输出结果是() A、1B、2C、5D、0 4、有以下程序: #include void main() ( float x=l, y=5, z; z二x%y; z++; printf ( “%d\n” , z) ;} 程序运行后输出结果是() A、 2B、 5 c、编译程序指出,程序第5行有错D、编译程序指出,程序第5、6、8行有错 5、有以下程序: #include void main() ( int x;x=32768;printf ( “%d\n”,x) ;} 程序运行后输出结果是() A、-32768B、32768C、0C、编译出错 6、有以下程序: #include void main() ( int m=10;printf ( “%d\n”,(—m*3/5)):} 程序运行后输出结果是() A、6B、5C、4D、7 7、有以下程序: #include void main() (int m=10, n=20;printf( “m=%d\nn=%d\n”,m, n);} 程序运行后输出结果是() A、 1020B、 10 20C、 m=10 n=10D、 m=10 n=10 8、有以下程序: #include void main() { int x, z;float y; printf ( “ 1020304050\n?,); scanf( “%2d%5f%3d”, printf( “x=%d y=%f z=%d\n”,x, y, z); ) 程序运行后输入1020304050<回车〉,则输出结果是() A、 x=10y=20304z=050 B、x=10y=20304.000000z=050 C、x=10y=20304zWO D、x=10y=20304.000000z=50 9、若有定义“long x=100000;,,,则正确输出x的值的语句是() A、printf ( “x=%d” , x) ;B、printf ( ax=%ldv , x); C、printf ( “x=%f” , x