内容正文:
YCF
(中职)计算机程序设计(C语言)第三章第3节教学课件工信版
1
3.3格式输入与输出
3.3.1 printf函数
3.3.2 scanf函数
3.3.1 printf函数
printf()函数是一个标准库函数,它在头文件“stdio.h”中定义。它的作用是向终端(显示屏)输出若干个任意类型的数据
语法格式:
printf(格式控制[,输出表列]);
例如:printf("%d,%c
",i,c);
说明:
1、“格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括两部分。
①格式说明。格式说明由“%”和格式字符组成,如%d,%c等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。
②普通字符。普通字符即为原样输出的字符。例如上面“”内除了格式说明之外的逗号、空格、字符串和换行符。
说明:
2、“输出表列”是需要输出的一些数据,可以是表达式,也可以是变量。
① 用“[ ]”括起来表示内容可以省略,当省略该项时,该“格式控制”中只能有②及普通字符。
如printf("this is C program"); "this is C program"直接在显示器上输出。注意双撇号不输出。
②输出项有多项时,之间必须用逗号作为分隔符。要求格式字符和各输出项在数量和类型上应该一一对应。输出项可以是变量,常量或表达式。
例如:printf(“%d,%d”,a,b); “%d”称为格式说明,“,”称为普通字符,照原样输出。如果a、b的值为6、7则输出为6,7。总而言之,变量按照格式控制的形式输出,普通字符照原样输出。
下面具体的介绍常用的格式字符:
对于整形数据前面已介绍过有三种形式即:十进制,八进制,十六进制。
(1)d格式符。用来输出十进制整数。有以下几种用法
①%d。按十进制整形数据的实际长度输出。
②%md,%-md m为指定的输出数据的宽度。如果数据的位数小于m,则左端补空格以满足宽度,若大于m,则按实际位数输出。当为-m时,右端补空格以满足宽度。
例如:int x=1236;
printf("%6d,%-6d,%3d",x);则输出结果为□□1236,1236□□,1236
注意:前两个1236的前面两空格和后面两空格是因为宽度不足6位,左补和右补,第三个1236前后均无空格,宽度不足原数据长度时,数据照原样输出。
③%ld:输出长整形数据。
例如:long a=123456;
printf("%ld",a);
此时必需要用%ld输出,如果用%d就会出错,因为前面章节已讲过c语言中int是2个字节,数据的范围为-32768至32767,(vc中int是4个字节),而123456超出了整形的范围,所以变量应定义成long,否则就会出错。
当然ld前也可以加宽度m,输出指定的宽度。
(2)o格式符:以八进制整数形式输出。由于整型数据是以二进制补码的形式存放的,因此输出的数值不带符号,即无负数。例如:
int a=-2;
printf("%d,%o",a,b);
-2在内存中的存放形式如下(这里int以16来处理,如果vc++6.0,则应以32位来理解,但原理一样的):
输出结果为
-2,177776
不会输出带负号的八进制整数。对长整形也可以用“lo”格式输出。同样前面也可以用m来指定宽度。
1 111111111111110
(3)x格式符:以十六进制形式输出整数,也不会输出负数。例如:
int a=-2;
printf("%d,%x",a,b);
输出结果为
-2,fffe
对长整形也可以用“lx”格式输出,前面也可以用m来指定宽度。当x大写时,输出的十六进制字母为大写。
(4)u格式符:用来输出unsigned型数据,即无符号数,以十进制整数形式输出。一个有符号整(int型)也可以用%u格式输出;反之,一个无符号型(unsigned)数据也可以用%d格式输出。无符号型数据也可用%o,%x格式输出。
【例3.2】整形数据的几种输出形式。
main()
{
unsigned a=65535;
int b=-2;
printf("a=%d,%o,%x,%u
",a,a,a,a);
printf("b=%d,%o,%x,%u
",a,a,a,a);
}
运行结果为:
a=-1,177777,ffff,65535
b=-1,177776,fffe,65534
注意:记住整型、无符号数据的表示范围,如果超出它们的范围就会得到不一样的值,以满足它们的范围。
对于字符型数据主要有如下两种形式:
(1)c格式符:用来输出一个字符 。
例如:
char x=´a´;
printf("%c",x);
输出字符’a’