C语言程序设计CPD03更多课件请进我文库.ppt

上传人:本田雅阁 文档编号:2142924 上传时间:2019-02-21 格式:PPT 页数:24 大小:418.01KB
返回 下载 相关 举报
C语言程序设计CPD03更多课件请进我文库.ppt_第1页
第1页 / 共24页
C语言程序设计CPD03更多课件请进我文库.ppt_第2页
第2页 / 共24页
C语言程序设计CPD03更多课件请进我文库.ppt_第3页
第3页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言程序设计CPD03更多课件请进我文库.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计CPD03更多课件请进我文库.ppt(24页珍藏版)》请在三一文库上搜索。

1、第3章 格式化输入输出,北京工商大学计算机学院 何 渝,计算机程序设计基础,2,本章主要内容,输入输出(Input/Output) 格式化输出 格式化输入,3,3.1 引言,对数据的一种重要操作是输入输出(I/O),没有输出的程序是没有用的,而没有输入的程序缺乏灵活性。前面通过cin, cont和printf, scanf已初步接触了C+和C的I/O,它们的格式都是“隐含”或“缺省(default)”的,即事先设计或定义好的一种格式,而本章介绍的“格式化”I/O是可由用户根据需要,自己设计或定义。,4,3.2 几个概念,输入输出设备 标准输入输出设备 流(Stream) 交互式程序 批处理程序

2、,5,3.3语言数据的输入与输出,语言没有专门的I/O语句,它是由函数来实现的。提供了多种I/O函数,使其灵活、多样、方便,功能强。标准I/O函数库中有一些公用的信息写在头文件stdio.h中,因此使用标准I/O函数库中的函数时,一般在程序开头先写下面的命令: #include 以便把I/O函数要使用的信息包含到程序中来。,6,3.3.1 getchar与putchar函数,getchar( )与putchar( )函数是语言的标准函数,其函数库中已有,可直接使用。 getchar( )函数是从标准输入设备(一般是用户终端)上读入一个字符。 putchar(c)函数是将变量c中的字符输出到标准

3、设备(一般也是用户终端)上。 注意:前一函数没有参数,后一函数有一个形式参数。,7,例 输入三个字母,若是小写转换成大写输出,#include void main( ) char ch1, ch2, ch3; ch1=getchar(); ch2=getchar(); ch3=getchar(); if(ch1=a 运行情况如下: boy BOY,8,3.3.2 printf 函数,该函数是格式输出函数,功能是按指定的格式、将指定的控制参数的值在标准设备上输出,包括两种参数:格式控制参数和输出项参数,一般形式为: printf(格式控制参数,输出项1,输出项2,); 格式控制参数以字符串的形式

4、描述,也称为格式控制字符串。由2部分组成:格式说明和普通字符。普通字符(包括转义符序列)将被简单地复制显示(或执行)。一个格式说明项将引起一个输出参数项的转换与显示,它由%引出并以一个类型描述符结束的字符串,中间是一些可选的附加说明项。输出项1、输出项2等可有要无,由格式控制参数决定。,9,格式说明由不同的格式字符组成,格式字符的作用是指定输出数据类型,它包括:,% 格式说明的起始符号 - 指定是否左对齐输出 0 指定空位是否填0 m.n 指出输出域宽及精度 l/n 输出长度修正符,10,1. 格式字符,格式字符用以指定输出项的数据类型和输出格式.,如d(i), x(X), o, u, c,

5、s, e(E), f, g(G), %等。一般情况下,格式字符要与对应的输出项类型一致,如不应用%f去输出整数。,11,2. 长度修正符,整型的格式字符没有区分int, short, long,实型的格式字符也没有区分float 与double。对整型来说,d, x, o, u是指int型;对 实型来说e, f, g是指float型。为了能适应不同长度的数据,可格式字符前面加一个长度修正符: l: 整型指long型,如%ld;实型指double型,如%lf。 h: 只用于将整型的格式修正为short型,如%hd等。,12,3.域宽及精度符m.n,m: 指域宽。即对应输出项在输出设备上所占的字符

6、数。 n: 指精度。用于说明输出的实型的小数位数。不指定n时,隐含的精度为n=6位。,13,例:,int a=123; char ch=69; float f=123.456; long k=98123; printf(“%d“,a); /* 输出:123 */ printf(“%x“,a); /* 输出:7B */ printf(“%o“,a); /* 输出:173 */ printf(“%c“,ch); /* 输出: E */ printf(“%e“,f); /* 输出:1.234560e+002 */ printf(“%f“,f); /* 输出:123.456000 */ printf(

7、“%8.1f“,f); /* 输出:123.5 */ printf(“%g“,f); /* 输出: 123.456 */ printf(“%“); /* 输出: % */ printf(“%ld“,k); /* 输出: 98123 */,14,注意:,输出数据的实际精度并不主要决定于格式项中的域宽与精度,也不决定于输入的数据精度,而主要决定于数据在机器内的存储精度。因此,格式项中指定的域宽再大,精度再长,所得到的多余位数上的数字是无意义的。所以增加域宽与精度并不能提高输出数据的实际精度。,15,4 . 数0用以指定数字前的空位是否用0填补。有此项则空位以0填补,无此项则空位用空格填补。,如:

8、float a=1.23; printf(“%08.1f“,a); 输出结果为: 000001.2,16,2.7.3 scanf 函数,scanf函数的功能是进行输入数据,也是按格式参数的要求,从终端上把数据传送到地址参数所指定的内存空间中。其一般形式为: scanf(格式控制参数,地址1,地址2,.); 1. 地址参数是指变量的地址,它通过对变量名求地址运算得到。求地址运算符为&,得到的地址是一种符号地址,不是真正的机器内存地址。如:&a, &b。 2. 格式控制参数与printf函数类似,不完全相同。它的格式参数有两种成分:,17,1). 格式说明项,格式字符有: % * m l/h 输入

9、抑制字符 m 域宽说明符 l/n 长度修正符 格式字符 输入数据类型和格式,18,2). 输入流分隔,scanf函数从输入数据中接收到的非空字符,再转换成格式项描述的格式,传送到与格式项对应的地址中去。具体有: (1) 当输入流中数据类型与格式字符要求不符时,就认为这一项数据项结束。 (2) 根据格式项中指定的域宽分隔出数据项。 (3) 用隐含的分隔符。,19,3. scanf函数的停止与返回,scanf函数在遇到下面两种情况后结束: (1) 格式参数中的格式项用完,正常结束。 (2) 发生格式项与输入域不匹配是,非正常结束。如从键盘输入的数据数目不足。 scanf也是一个函数,它也有返回值,

10、这个值就是成功匹配的项数。,20,4. scanf函数与输入,scanf函数在输入数据时,是在键入一行字符并按回车键之后才被输入,这一行字符先放在一个缓冲区中,然后按格式说明的要求从缓冲区中读数据。如果输入的数据多于所要求的个数时,余下的数据可以为下一个scanf函数接着使用。例: printf(“Input a b c: “); scanf(“%d %c %f“, 输出为: Input a b c: 1234r1234.567 (下划线为输入流) a=1234, b=r, c=1234.567017,21,3.4 流的定向输入输出,C+中标准输入输出是定向流,并预先定义了四种标准输入输出流:

11、 标准输入流 cin 标准输出流 cout 标准错误输出流 cerr 标准错误输出流 clog,22,3.5 标准输出流,标准流定向输出语句最简形式如下: cout OutputExpression; 其中 OutputExpression 为常量、变量、表达式、函数调用或格式控制符; 为“插入操作符”,它是被重载的操作符。可同时输出多个值。,23,3.6 标准输入流,标准流定向输入语句最简形式如下: cin InputVariable; 其中 InputVariable 为变量; 为“提取操作符”,它是被重载的操作符。可以同时输入多个数据,如: cin variable1 variable2; 输入时variable1和variable2用分隔符分开,24,第3章 家庭作业,1. 复习本章内容 2. 教材P85学习测试题 3. 上机时多多操作本章介绍的各种输入输出函数。 4. 预习后面章节,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1