第3章C++程序的基本组成_第1页
第3章C++程序的基本组成_第2页
第3章C++程序的基本组成_第3页
第3章C++程序的基本组成_第4页
第3章C++程序的基本组成_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章 数据的输入与输出目录l3.1 Printf与Scanfl3.1.1格式输出函数printf( )l3.1.2格式输入函数scanf( )l3.2 I/O流控制l3.2.1cinl3.2.2coutl3.2.3格式控制第3章数据的输入与输出 l输入:信息(程序或数据)从计算机的外设流入计算机主机;l输出:信息(程序或数据)从计算机主机流向计算机的外设。lC+提供了两种数据的输入输出方式:保留了C的输入输出系统,即采用在标准函数库中提供输入输出函数的方法为程序提供输入输出功能;基于对象机制的输入输出系统,对象即是流。3.1 Printf与Scanflprintf和scanf是标准输入输出函

2、数,C语言中的头文件stdio.h中声明了这两个函数。l#include 3.1.1格式输出函数printf( )l【格式】lprintf (格式控制字符串, 输出项1, 输出项2, .)printf()函数的功能是将后面的参数按给定的格式输出。格式说明由“%”,对齐和填补说明,宽度和精度说明和格式字符组成,中间不能插入别的字符,如%d,%f等。它的作用是将输出的数据转换成指定的格式输出。#include void main()int a=10,b=20;printf (%d,%d,a,b);3.1.1格式输出函数printf( ) 1、 格式字符格式符格式符输出项输出项形式形式说明说明d,

3、i十进制十进制整数整数无宽度说明时,按实际宽度输出无宽度说明时,按实际宽度输出X, x十六进十六进制整制整数数以以0 x打头的数为十六进制数。用打头的数为十六进制数。用x,符号符号af以小写形式输出以小写形式输出;用用X,符号符号AF以大写形式输出以大写形式输出o八进制八进制整数整数以以0打头的数为八进制数打头的数为八进制数f以小数方式输出以小数方式输出无宽度说明时,小数部无宽度说明时,小数部分按分按float型规定取型规定取6位位E,e科学记数法科学记数法e+002表示表示102c字符方式输出字符方式输出s以字符串格式输出以字符串格式输出如果要输出%本身,则双写%。2、 宽度和精度说明l宽度

4、说明用于说明输出数据所占的总位数。l宽度说明缺省时,按实际宽度输出。l有宽度说明时,对整数部分及字符串和字符按“认宽不认紧”的原则处理。l有宽度说明时,可在宽度字段后加圆点和精度说明,说明实型数的精度。精度说明缺省时,默认为小数部分取6位。对实数的小数部分是宽紧都认,但从原有有效位的最后一位开始,便是近似的。3、 对齐和填补说明l在一般情况下在宽度说明前使用“+”号时,数据在指定的位置空间中按右对齐方式输出,当使用“-”号时,按左对齐方式输出。l当使用右对齐方式时,若在宽度说明的前方加一个“0”,则将数据前多余空位用“0”填补。【例3- 1】格式输出举例。#include void main(

5、) char ch = h; int count = -3; double fp = 251.7366; printf(Character:nt%ct%d%3cn,ch,ch,ch); printf( Integer formats:n t Decimal: %d Justified: %6d Unsigned: %un, count, count, count );【例3- 1】格式输出举例。 printf( Decimal %d as:ntHex: %Xh hex: 0 x%x Octal: %on, count, count, count, count ); printf( Digits

6、 10 equal:ntHex: %i Octal: %i Decimal: %in, 0 x10, 010, 10 ); printf( Real numbers:nt%f%10.2f %e %En, fp, fp, fp, fp ); printf(String:nt%3s,%-5.3s,%5.2sn,Hello,Hello,Hello);3.1.2格式输入函数scanf( )l【格式】lscanf (格式控制字符串, 地址1, 地址2, .)格式控制字符串的含义同前,地址n是变量的地址。scanf ()中后面的地址参数可以是变量的地址,但不能是变量名,否则会将输入值存放在变量值作为地址的

7、内存空间中,导致意想不到的运行异常。3.1.2格式输入函数scanf( )%d用以输入整数,可以带l表示长整数,带h表示短整数。%c用以输入字符。%o,%x用以输入8进制数和16进制数。lo和lx分别表示长8进制数和长16进制数。%f用以输入浮点数,%lf和%Lf分别表示输入double型数和long double型数。%e与%f作用相同。%s用以输入字符串,以非空字符开始,以空字符或回车结束。【例3- 2】格式输入举例。#include void main()int a,b;char ch1,ch2;float f,g;scanf (%d %d,&a,&b);scanf (

8、%c%c,&ch1,&ch2);scanf ( %f,%f,&f,&g);printf (a=%d b=%d ch1=%c ch2=%c f=%f,g=%f,a,b,ch1,ch2,f,g);3.2 I/O流控制I/O流是输入或输出的一系列字节“”从cin输入流中抽取字符。#include 3.2.1cinl【格式】lcin变量名1变量名2.变量名n;l“”称为提取运算符,表示将程序暂停执行,等待用户从键盘上输入相应的数据。每个提取运算符后面只能跟一个变量名,但提取运算符可以多次使用,即用一个cin可以为一个变量提供输入值,也可以为多个变量提供输入值。l在用一个

9、语句中输入多个数据时,输入的几个数据间应以空格分隔。在输入的字符串中,不能含有空格,一遇空格,便认为是本数据结束。l一条“cin”语句的键盘操作以回车结束。当在一行中输入的数据比要提取的变量数多时,多余的数据将保留在流中,供下一次提取使用;流中的数据不足时,要等待用户的输入操作。3.2.2coutl【格式】lcout表达式1表达式2.表达式n;l其中,“”称为插入运算符,它把紧跟在它后面的表达式的值输出到显示器的当前光标位置。3.2.3格式控制l流的默认格式输出有时不能满足特殊要求。用控制符可以对I/O流的格式进行控制。1、 无参格式控制符l 表 3 2所示的几个无参格式控制符定义在头文件io

10、stream.h中。l 表 3 2无参格式控制符控制符描述输入/输出dec数值数据采用十进制表示I/Ohex数值数据采用十六进制表示I/Ooct数值数据采用八进制表示I/Ows提取空白字符Iendl产生一个换行(n)Oends产生一个空字符(NULL),通常用来结束一个字符串Oflush强制将流从缓冲区写到相应设备,刷新流相关联的缓冲区O2、 带参格式控制符l表 3 3所示的几个带参数的格式控制符定义在头文件iomanip.h中,使用时必须在程序开头添加一行#include 。表 3 3 带参的格式控制符控制符描述输入/输出setfill(char ch)设填充字符为chOsetw(int w

11、)设域宽为w个字符Osetprecision(int n)设置浮点数输出的有效数字个数n Osetiosflags(ios:fixed)固定的浮点显示Osetiosflags(ios:scientific)指数表示I/Osetiosflags(ios:left) 左对齐Osetiosflags(ios:right)右对齐Osetiosflags(ios:skipws)忽略前导空白Osetiosflags(ios:uppercase)16进制数大写输出Osetiosflags(ios:lowercase) 16进制数小写输出O3、 控制浮点数值显示lC+默认的流输出数值有效位是6。如果setpr

12、ecision(n)与setiosflags(ios:fixed)合用,可以控制小数点右边的数字个数。setprecision(n)可控制输出流显示浮点数的数字个数,setiosflags(ios:fixed)是用定点方式表示实数。l 【例3- 3】分别用浮点、定点和指数方式表示一个实数。#include #include void main()double amount = 22.0/7;coutamountendl;coutsetprecision(0)amountendl setprecision(1)amountendlsetprecision(2)amountendlsetpreci

13、sion(3)amountendlsetprecision(4)amountendl;coutsetiosflags(ios:fixed);coutsetprecision(8)amountendl;coutsetiosflags(ios:scientific)amountendl;coutsetprecision(6); /重新设置成原默认设置4、 设置值的输出宽度l除了使用空格来强行控制输出间隔外,还可以用setw(n)控制符。如果一个值需要比setw(n)确定的字符数更多的字符,则该值将使用它所需要的所有字符。l如果一个值的字符数比setw(n)确定的字符个数更少,则在数字字符前显示空白

14、。不同于其他控制符,setw(n)仅仅影响下一个数值输出,换句话说,使用setw设置的间隔方式并不保留其效力。5、 输出8进制和16进制数3个常用的控制符是hex,oct和dec,它们分别对应16进制、8进制和10进制数的显示。【例3- 4】分别用10进制、16进制和8进制表示一个整数。#include void main()int number = 1001;coutDecimal:decnumberendlHexadecimal:hexnumberendlOctal:octnumberendl;6、 设置填充字符l setw可以用来确定显示的宽度。默认时,流使用空格符来保证字符间的正确间隔

15、。用setfill控制符可以确定一个非空格的别的字符。l 例如,下面的程序:l #include l #include l void main()l lcoutsetfill(*)lsetw(2)21endllsetw(3)21endllsetw(4)21endl;lcoutsetfill( ); /恢复默认设置l 7、 左右对齐输出默认时,I/O流左对齐显示的内容。使用setiosflags(ios:left)和setiosflags(ios:right),可以控制输出对齐。例如:#include #include void main()coutsetiosflags(ios:right)setw(5)1setw(5)2setw(5)3endl;coutsetiosflags(ios:left)setw(5)1setw(5)2setw(5)3endl;8、 强制显示小数点和符号当程序输出下面的代码时:cout 10.0/5 endl ;默认的I/O流会简单的显示2,而非2.0,因为除法的结果是精确的。当需要显示小数点时,可以用ios:showpoint标

温馨提示

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

评论

0/150

提交评论