C语言程序设计 CPD-03 更多课件请进我文库_第1页
C语言程序设计 CPD-03 更多课件请进我文库_第2页
C语言程序设计 CPD-03 更多课件请进我文库_第3页
C语言程序设计 CPD-03 更多课件请进我文库_第4页
C语言程序设计 CPD-03 更多课件请进我文库_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、输出 语言没有专门的I/O语句,它是由函数来实现的。提供了多种I/O函数,使其灵活、多样、方便,功能强。标准I/O函数库中有一些公用的信息写在头文件stdio.h中,因此使用标准I/O函数库中的函数时,一般在程序开头先写下面的命令: #include 以便把I/O函数要使用的信息包含到程序中来。63.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&ch1=a&ch2=a&ch3=z) ch3=ch3-32; putchar(ch1); putchar(ch2); putchar(ch3);运行情况如下:boyBOY83.3.2 printf 函数 该函数是格式输出函数,功能是按指定的格式、将指定的控制参数的值在标准设备上输出,包括两种参数:格式控制参数和输出项参

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

5、 格式字符用以指定输出项的数据类型和输出格式.,如d(i), x(X), o, u, c, s, e(E), f, g(G), %等。一般情况下,格式字符要与对应的输出项类型一致,如不应用%f去输出整数。112. 长度修正符 整型的格式字符没有区分int, short, long,实型的格式字符也没有区分float 与double。对整型来说,d, x, o, u是指int型;对 实型来说e, f, g是指float型。为了能适应不同长度的数据,可格式字符前面加一个长度修正符: l: 整型指long型,如%ld;实型指double型,如%lf。 h: 只用于将整型的格式修正为short型,如%

6、hd等。12 3.域宽及精度符m.n m: 指域宽。即对应输出项在输出设备上所占的字符数。 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); /* 输

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

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

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

10、个值就是成功匹配的项数。20 4. scanf函数与输入 scanf函数在输入数据时,是在键入一行字符并按回车键之后才被输入,这一行字符先放在一个缓冲区中,然后按格式说明的要求从缓冲区中读数据。如果输入的数据多于所要求的个数时,余下的数据可以为下一个scanf函数接着使用。例: printf(Input a b c: ); scanf(%d %c %f,&a, &b, &c); printf(a=%d, b=%c, c=%f, a, b, c);输出为: Input a b c: 1234r1234.567(下划线为输入流) a=1234, b=r, c=1234.567017213.4 流的定向输入输出 C+中标准输入输出是定向流,并预先定义了四种标准输入输出流: 标准输入流 cin 标准输出流 cout 标准错误输出流 cerr 标准错误输出流 clog223.5 标准输出流 标准流定向输出语句最简形式如下:cout OutputExpression;其中 OutputExpression 为常量、变量、表达式、函数调用或格式控制符; InputVariable;其中 Inpu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论