当前位置:
文档之家› 武汉大学C语言程序设计第5讲(2012级)
武汉大学C语言程序设计第5讲(2012级)
3.3.1 格式输出:printf( )函数和scanf( )函数
(2) o格式字符 以八进制数形式输出整数,且不带符号。 对于长整数可用“%lo”输出。功能同十进制输出。 (3) x格式字符 以十六进制数形式输出整数,且不带符号。
对于长整数可用“%lx”输出。功能同十进制输出。
用%o,%x输出负数时会发生错误。
printf("3)%e,%e;\n",f1,f2);
printf("4)%8e,%14e;\n",f1,f1);
printf("5)%10.7e,%10.3e;\n",f1,f1); }
2013-5-25
Page
8
Program Design in C Language
3.3.1 格式输出:printf( )函数和scanf( )函数
2013-5-25
Page 11
Program Design in C Language
3.3.1 格式输出:printf( )函数和scanf( )函数
例:&a, &chr, &i,分别表示变量a, chr, i的地址,该地 址是在编译连接时系统分配给变量a, chr, i的地址。
用于输入的修饰符
2013-5-25
Page 16
Program Design in C Language
3.3.1 格式输出:printf( )函数和scanf( )函数
3.3.1 格式输出:printf( )函数和scanf( )函数
格式输入的使用与注意:
• 输入数据时采用的分隔符应与格式控制中的分隔符一致。 例1: scanf("%d%f%d", &a, &b, &c); • 格式符中无普通字符时,可用空格、Tab键、回车键作分隔符。 如:12 3.45 678↙ 或 12(Tab)3.45(Tab)678 例2: scanf("%d,%f,%d", &a, &b, &c); 必须采用格式:12,3.45,678↙ 例3: scanf("a=%d, b=%d", &a, &b); 必须采用格式: a=12, b=345↙
若a=12, b=12345,则输出
12,12345 %ld:输出长整型数据。
%d的输出范围为-32768~32767,输出超过该 范围的整型数就会出错,此时用%ld输出。 其输出格式和功能与%d相同,如:%8ld
2013-5-25
Page
2
Program Design in C Language
2、格式输入:scanf( )函数
•功能:从终端输入任何类型的多个数据 •格式:scanf("格式控制",地址表列); •格式控制:由双引号括起来的字符串,用于指定要输入 的数据的格式。 1)普通字符:按原样输入的字符; 2)格式说明:用来指定需输入数据的输入格式的, 其形式为: % [<修饰符>]格式字符 •地址表列:由若干个变量地址组成的表列。 地址是由”&”运算得到的。 “&”是取址运算符,单目运算符,右结合性。
Î ¼ Ð Ê %d¡ %ld¡ %hd ¢ ¢ % md¡ %mld ¢ %o¡ %mo¡ %lo ¢ ¢ %x¡ %mx¡ %lx ¢ ¢ %c %s¡ %ms ¢ %f¡ %mf¡ %lf ¢ ¢ %e¡ %me¡ %le ¢ ¢
Page 13
Program Design in C Language
2013-5-25
Page 14
Program Design in C Language
3.3.1 格式输出:printf( )函数和scanf( )函数
•无符号数可用 %d、%o、%x 格式输入。 •输入格式符带有 * :表示该数据不赋值。 例:scanf("%d%*d%d", &a, &c); 键入: 12 34 567 则 a=12, c=567, 34未赋值。 •数据输入时不可规定精度,但可确定宽度。 例:scanf(”%3f%3c”, &a, &b); 合法。 例:scanf(”%3.2f%3c”, &a, &b); 非法。
printf("3)%e,%e;\n",f1,f2);
printf("4)%8e,%14e;\n",f1,f1);
printf("5)%10.7e,%10.3e;\n",f1,f1); }
2013-5-25
Page 10
Program Design in C Language
3.3.1 格式输出:printf( )函数和scanf( )函数
2013-5-25
Page
9
Program Design in C Language
实例:
#include <stdio.h> void main() { int a=1234;
程序运行结果:
1)1234, 1234,1234 ,1234; 2)12.345670, 12.3457,12.35; 1.234567e+001; 1.235e+001;
2013-5-25
Page 15
Program Design in C Language
3.3.1 格式输出:printf( )函数和scanf( )函数
•用c格式符输入字符时,空格、转义字符均为有效 字符。 例 scanf("%c%c%c", &a, &b, &c); 若键入 ABC 则 a=A,b=B,c=C 若键入 A B C 则 a=A,b= ,c=B 若键入 A B 则 C 未送,结果已出为: a=A,b= ,c=B
%ms:输出的字符串占m列。如果字符串长度小于m, 则左端补以空格;长度大于m,则输出整个字符串。 例:printf(“%3s”,“Hello!”); 输出Hello! printf(“%7s”,“Hello!”); 输出 Hello! %-ms:如果串长小于m,则字符串向左靠,右补空格, 其余同上。 %m.ns:输出的字符串占m列,但只取字符串中左端n个 字符,这n个字符输出在m列的右侧,左端补空格。 %-m.ns:其他意义同%m.ns,右补空格。
Þ Î û Ð Ê ² l h m£ ò ¾ £ ¨Ó í ¦ *
2013-5-25
¥ ¸ Ü Ä Ã Ú ¤Õ Í ¢ « « È Í ý Ý Ó Ó ³ û Ð ¡ Ë ½ ¶ Ð Ê ½ É Ó Ú ñ ¼ û ¢ ¢ ¢ ¢ Ç ¾ » Ô · Ê ² d¡ o¡ x¡ f¡ e ° Ã Ú Ì û Í ý Ý Ó Ó ¶ Õ Ð Ê ½ É Ó Ú ñ ¼ û ¢ ¢ Ç ¾ » Ô · Ê ² d¡ o¡ x ° · ¨Ê ë ý Ý ù » Ä í È ¨Á ý ¦ Ö ¶ ä È Ê ½ Ë Õ µ ¾ ¶ £ Ð Ê £ í ½ ½ ä ë î Ú Á ë ó ±Ê ±Ê È Ï Ô ¶ È ¹ º ³ ø ´ ¥ Ä ä ¾ ² · · Ï Ó µ ±Á
例:printf(“%e”,123.456);
输出:1.234560e+02 6位小数部分 4位指数部分 (tc)
e+002
5位为指数部 分(vc++)
为指数部分 %m.ne, %-m.ne, %me :中m,-的意义和前相同,n 是指数据的小数部分输出的位数。
(9) g格式字符 用来输出实数,根据数值大小,自动选f或e 格式,且不输出无意义的零。
Page 12
Program Design in C Language
3.3.1 格式输出:printf( )函数和scanf( )函数
用于输入的格式字符
ñ ¼ û · Ê ² d o x c s f e
2013-5-25
¥ ¸
Ü Ä
ä ë ® ø Æ û ý Ê È Ê ¼ Ö Õ Ê ä ë Ë ø Æ û ý Ê È °¼ Ö Õ Ê ä ë ® ù ø Æ û ý Ê È Ê Á ¼ Ö Õ Ê ä ë º ö Ö û Ê È Ò · ³² ä ë º ö Ö û ® Ê È Ò · ³²´ Ô ¡ ý ò · ý Ä Î ¼ ä ë µ ý Ò Ð Ê º Ö Ê µ Ð Ê Ê È Ê Ê ¼ ß ¥ Ü ´ ¬ ¬ É ¤ Á Õ ¸ Ä Ï Í £ ¾ º º
例:printf(“%e”,123.456);
输出:1.234560e+02 6位小数部分 4位指数部分 (tc)
e+002
5位为指数部 分(vc++)
为指数部分 %m.ne, %-m.ne, %me :中m,-的意义和前相同,n 是指数据的小数部分输出的位数。
(9) g格式字符 用来输出实数,根据数值大小,自动选f或e 格式,且不输出无意义的零。
2013-5-25
Page
5
Program Design in C Language
3.3.1 格式输出:printf( )函数和scanf( )函数
(7) f格式字符
%f:不指定字段宽度,整数部分全部输出,小数 部分输出6位。 %m.nf:指定输出数据占m列,其中有n位小数。 若数值长度小于m,则左端补以空格。
(4) u格式字符
用来输出unsigned型数据,即无符号数,输出十 进制数。
2013-5-25
Page
3
Program Design in C Language
3.3.1 格式输出:printf( )函数和scanf( )函数
(5) c格式字符
•用来输出一个字符。 例:char c=„a‟; printf(“%c”,c); 一个整数,如果在0~255之间,也可用字符形式输出, 系统会将该整数转换成相对应的ASCII码字符;同时,一 字符也可以用整数形式输出。 int a=65; int c=„A‟; printf (“%c”,a); 输出A printf (“%d”,c); 输出65