




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 输入和输出,杜红燕 长沙学院计算机系 Tel:Email: ,2010-11-2,2,讲授内容,标准输入输出函数 格式化输入输出函数 通过流进行输入输出,2010-11-2,3,3.1 C+的输入和输出,两种I/O方式: 保留自C的I/O方式通过标准的I/O函数完成输入输出操作 面向对象的I/O方式通过/流对象进行输入输出 流实际上就是一个字节序列 输入操作中字节从输入设备流向内存 输出操作中字节从内存流向输出设备 三种预定义的标准流: 标准输入流-一般代表键盘 标准输出流-一般代表显示器 标准错误流-一般代表显示器,2010-11-2,4,3.2 标准输入与
2、输出函数,字符输入函数 函数原型:int getchar(void); 头文件:stdio.h 功能:从输入设备(一般为键盘)上输入一个字符。它每被调用一次,就从标准输入设备上取一个自符,返回值是该字符的ASCII编码值。可以赋给字符变量或整型变量。,2010-11-2,5,3.2 标准输入与输出函数,字符输出函数 函数原型:int putchar(int c); 功能:向标准输出设备(一般为显示器)输出一个字符,并返回该字符的ASCII码值。参数可以是字符常量,变量或整型数。 头文件:stdio.h,putchar(97);putchar(n);putchar(a);,2010-11-2,6
3、,3.2 标准输入与输出函数,例:字符输入输出函数的使用 #include void main() char ch1=a,ch2=b,ch3; ch3=getchar(); putchar(ch1); putchar(ch2); putchar(c); putchar(ch3); putchar(); putchar(0101); putchar(n); ,输入:B 输出:abcB”A,前面两条语句非常方便,但一次只能处理一个字符,2010-11-2,7,3.3格式化输入输出,作用:提高程序的用户友好性 格式化输入函数scanf 按照一定的格式从键盘输入数据 格式化输出函数printf 按照指
4、定的格式向屏幕输出数据 函数原型在stdio.h文件中说明,2010-11-2,8,3.3格式化输入输出,格式化输入函数scanf 使用格式: scanf(, ); 一般是字符串常量,也可以是字符串指针 格式控制串可以包含3种类型的字符:格式指示符、空白字符(空格、Tab键和回车键)和非空白字符(又称普通字符) 格式控制串中的空白字符作为相邻2个输入数据的缺省分隔符,非空白字符在输入有效数据时,必须原样一起输入 格式指示符的数量、顺序与输入参数对应,2010-11-2,9,3.3格式化输入输出,格式化输入函数scanf 是由若干个输入项首地址组成,相邻2个输入项首地址之间,用逗号分开。 输入项
5、首地址表中的地址,可以是变量的首地址,也可以是字符数组名或指针变量。 变量首地址的表示方法: /Error,5.实数不许规定精度,像%10.4f是不合法的。 6.在用”%c”格式输入字符时,空格字符和“转义字符”都作为有效字符,例如:scanf(“%c%c%c”, 如果输入:a b c 运行结果:c1=a c2=空格 c3=b,2010-11-2,17,3.3格式化输入输出,使用scanf应注意: 7.在输入数据时,遇到以下情况时,该数据认为结束: 遇空格,或按“回车”或“Tab“键 按指定的宽度结束 遇非法输入,例如:scanf(“%d%c%f, 若输入:1234a123x.26 运行结果:
6、num1=1234 num2=a num3=123,2010-11-2,18,3.3格式化输入输出,格式化输出函数printf 使用格式: printf(, );,2010-11-2,19,3.3格式化输入输出,格式化输出函数printf 一般是字符串常量,也可以字符串指针,用来描述输出数据的格式 格式控制串可以包含3种类型的字符:格式指示符、转义字符和普通字符(除格式指示符和转义字符外的其它字符) 格式控制串中的普通字符按照原样输出,转义字符按照其含义输出相应的特殊符号,而格式控制字符则被参数列表中相应的输出数据所替换 格式指示符的数量、顺序与输出参数相对应,2010-11-2,20,3.3
7、格式化输入输出,格式化输出函数printf 是存放输出数据的表达式列表,输出数据的个数可变,参数之间用逗号分开。,例:scanf(“%d %f %d”, 如果输入为:12 34.5 678 则:scanf执行完后,num1=12 num2=34.5 num3=678 printf执行完后,输出结果: Three number:num1=12,num2=34.500000,num3=678 sum=724.500000,2010-11-2,21,3.3格式化输入输出,格式化输出函数printf printf函数的格式指示符 一般形式:% 标志,为任选项,紧跟在%的后面,常用标志见表3-2。多个标
8、志可以联合使用 域宽,为任选项,为一整型表达式,指明了数据打印的宽度。 如果数据实际长度小于域宽,则数据输出右对齐,数据左边用空格补齐 如果数据实际长度大于域宽,则按数据的实际长度输出 如果未指明域宽,系统按照数据的实际长度输出,2010-11-2,22,3.3格式化输入输出,格式化输出函数printf printf函数的格式指示符 一般形式:% 精度,为任选项,为一整型表达式,对不同类型的数据,含义不同 对于整数,精度表示至少要打印的数字个数 如果数据实际长度小于精度,则左边补齐0,使得数据长度等于精度 如果数据实际长度大于精度,则按照数据的实际长度输出 省缺情况下,整数的精度为1,2010
9、-11-2,23,3.3格式化输入输出,格式化输出函数printf printf函数的格式指示符 一般形式:% 对于浮点数,如果转换说明符为E、e和f,精度表示小数点后的有效位数 如果数据小数部分的实际长度小于精度,则在右边补齐0; 如果数据小数部分的实际长度大于精度,则按照精度对数据进行舍入输出 对于字符串数据,精度表示字符串输出的最大长度 如果输出字符串的实际长度小于精度,则按照字符串的实际长度输出; 如果字符串的实际长度大于精度,则按照精度截取输出字符串开头的n个字符(假设精度为n)输出,2010-11-2,24,3.3格式化输入输出,格式化输出函数printf printf函数的格式指
10、示符 一般形式:% 转换说明符,指明输出数据的类型信息。常用的转换说明符见表3-3,2010-11-2,25,3.3格式化输入输出,常用格式控制符 %d格式符 用来输出10进制整数,可以有长度修饰 %d,按整型数据的实际长度输出 %md,m为指定的输出字段的宽度。如果数据的实际位数小于m,则左端补以空格,若大于m,则按实际位数输出 %ld,输出长整型数据,按整型数据的实际长度输出 %mld,输出长整型数据,m为指定的输出字段的宽度。如果数据的实际位数小于m,则左端补以空格,若大于m,则按实际位数输出,运行结果: 28,38 289868 289868 289868,例:int a=28,b=3
11、8; long c=289868;/0 x46c4c printf(%5d,%5dn%ldn,a,b,c); printf(%3ldn%7ldn,c,c);,2010-11-2,26,3.3格式化输入输出,常用格式控制符 %o和%x格式符 输出8进制和16进制数,可有长度修饰。输出时不带符号 例: int a=-1;/补码为1111111111111111 printf(“%d,%o,%x,%X,%6xn”,a,a,a,a,a); 输出结果: -1,177777,ffff,FFFF, ffff,2010-11-2,27,3.3格式化输入输出,常用格式控制符 %u格式符 用来以无符号10进制整数
12、方式输出 注:有符号整数(int型)可以%u格式输出,无符号整数(unsigned)可以%d格式输出或以%o、%x格式输出;可以指定格式宽度,2010-11-2,28,3.3格式化输入输出,常用格式控制符 %c格式符 用来以字符方式输出 注:如果一个整数,其值在0255之间,也可以字符方 式输出;可以指定格式宽度 例:char ch=a; int a=65; printf(“%c,%d,%3cn”,ch,ch,ch); printf(“%c,%d,%3dn”,a,a,a);,运行结果: a,97, a A,65, 65,2010-11-2,29,3.3格式化输入输出,常用格式控制符 %s格式符
13、 用来以字符串方式输出 %ms,输出的字符串占m列,如果字符串长度大于m,则将字符串全部输出,若字符串长度小于m,则左补空格 %-ms,若字符串长度小于m,则右补空格 %m.ns,输出的字符串占m列,但只取字符串中左端n个字符,这n个字符输出在m列的右侧,左补空格 %-m.ns,输出的字符串占m列,但只取字符串中左端n个字符,这n个字符输出在m列的左侧,右补空格,输出结果: Hello Hello Hello,Hel , He,例: printf(“%s”,”Hellon”); printf(“Hellon”); printf(“%3s,%-5.3s,%5.2sn”,”Hello”,”Hell
14、o”,”Hello”);,2010-11-2,30,3.3格式化输入输出,常用格式控制符 %f格式符 用来以小数方式输出 注: 可以指定格式宽度;也可以指定小数位数;可以指定左对齐和右对齐 以%f格式输出时,默认的小数位数为6 %lf是double型输出,有效位15位 %Lf是long double型输出 %f,不指定字段宽度,由系统自动指定,使整数部分全部输出,并输出6位小数 %m.nf,输出数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格 %-m.nf,与%m.nf基本相同,只是输出数据是向左端靠,右端补空格,2010-11-2,31,3.3格式化输入输出,void main
15、( ) float f=123.456; printf(%f,%12f,%12.2f,%-12.2f,%.2fn,f,f,f,f,f); ,程序运行结果: 123.456000,123.456000,123.46,123.46,123.46,2010-11-2,32,3.3格式化输入输出,常用格式控制符 %e格式符 用来以指数方式输出浮点数 %e %m.ne、%-m.ne,f=123.456 printf(“%e%10.2e%.2e%-10.2e”,f,f,f,f);,1.234560e+0021.23e+0021.23e+0021.23e+002 ,2010-11-2,33,3.3格式化输入
16、输出,例:已知圆柱体的底半径为radius,高为high,求其体积。 void main() const float pi=3.1415926; float radius,high,vol; printf(Please input radius ,程序运行结果: Please input radius 输出:程序在屏幕上显示输出时,使用插入操作符“.;,2010-11-2,37,3.4 用流进行输入输出,例:输出字符串和整数 #include void main() cout“my name is Marryn”; cout“the ID is”; cout2; coutendl; ,用多条语
17、句输出,2010-11-2,38,3.4 用流进行输入输出,例:输出字符串和整数 #include void main() cout“my name is Marryn” “the ID is” 2 endl; ,用一条语句输出,2010-11-2,39,3.4 用流进行输入输出,例:输出字符串和整数 #include void main() cout“my name is Marryn” “the ID is” 2 endl; ,用一条语句输出,但分多行书写,提高程序可读性,2010-11-2,40,3.4 用流进行输入输出,【例3_5】 流读取运算符和cin的使用。 /ex3_5.cpp
18、#include int main() char c ; int i ; float x , y ; cout i x y ; c=i; cout c= c ti= i; cout tx= x ty= y n ; return 0; ,程序运行时显示: Enter: 65 2.3 3.5 最后屏幕显示: c=A i= 65 x=2.3 y=3.5,2010-11-2,41,3.4 用流进行输入输出,使用控制符(流操纵算子) 作用:由于默认格式输出时不能满足特殊要求,因此使用控制符对I/O流的格式进行控制 控制符是在iomanip.h中定义的对象 可以直接将控制符插入流中 表3-4 I/O流常用
19、控制符,2010-11-2,42,3.4 用流进行输入输出,1.控制浮点数显示 使用setprecision(n)可控制输出流显示浮点数的数字个数 ,默认的流输出数值有效位是6 setprecision(n)与setiosflags(ios:fixed)合用,可以控制小数点右边的数字个数 setiosflags(ios:fixed)是用定点方式表示实数 setprecision(n)与setiosflags(ios:scientific)合用,可以控制指数表示法的小数位数 setiosflags(ios:scientific)是用指数方式表示实数,2010-11-2,43,3.4 用流进行输入
20、输出,#include #include /要用到格式控制符 void main() double amount = 22.0/7; cout amount endl; cout setprecision(0) amount endl setprecision(1) amount endl setprecision(2) amount endl setprecision(3) amount endl setprecision(4) amount endl;/1,2,3,4是有效位数 cout setiosflags(ios:fixed);/用定点方式表示实数 cout setprecision
21、(8) amount endl; /8是小数位数 cout setiosflags(ios:scientific) amount endl; /用指数方式表示实数,小数位数沿用上次的设置值8 cout setprecision(6); /重新设置成原默认设置 ,3.14286 3 3 3.1 3.14 3.143 3.14285714 3.14285714e+00,2010-11-2,44,3.4 用流进行输入输出,【例3_7】设置浮点数精度的流操纵算子的使用。 /ex3_7.cpp: 设置浮点数精度的流操纵算子的使用 #include #include #include int main()
22、 double log2 = log( 2.0);/ 在头文件中定义 int places; cout nPrecision set by the setprecision manipulator:n; / 使用setprecision算子 for ( places = 0; places = 9; places+ ) cout setprecision( places ) log2 n; return 0; ,2010-11-2,45,3.4 用流进行输入输出,2.设置值的输出宽度 除了使用空格强制控制输出间隔外,还可使用setw(n)控制符 如果一个值的字符个数大于setw(n)确定的字符
23、数,则按实际长度输出 例:float amount=3.14159; coutsetw(4)amountendl; 输出结果:3.14159 如果一个值的字符个数少于setw(n)确定的字符数,则在数字字符前显示空白 不同于其它控制符, setw(n)仅仅影响下一个数值输出,2010-11-2,46,3.4 用流进行输入输出,例: coutsetw(8) 10 20 endl; coutsetw(8) 10 setw(8) 20 endl;,输出结果: 1020,输出结果: 1020,2010-11-2,47,3.4 用流进行输入输出,3.输出8进制和16进制数 控制符hex、oct、dec分
24、别对应16进制、8进制和10进制数的显示 上述三个控制符在iostream.h头文件中定义 例:#include void main() int number=1001; cout “Decimal:” dec number endl/10进制 Hexadecimal: hex number endl/16进制 “Octal:” oct number endl;/8进制 ,Decimal:1001 Hexadecimal:3e9 Octal:1751,2010-11-2,48,3.4 用流进行输入输出,用iomanip.h中的setiosflags(ios:uppercase)可以控制16进制
25、数大写输出 例:#include void main() int number=1001; cout “Decimal:” dec number endl/10进制 Hexadecimal: hex setiosflags(ios:uppercase) number endl/16进制 “Octal:” oct number endl;/8进制 ,Decimal:1001 Hexadecimal:3E9 Octal:1751,2010-11-2,49,3.4 用流进行输入输出,4.设置填充字符 默认时,使用空格符作为字符间隔 用setfill控制符可以指定一个非空格的其它字符作为字符间隔 Setfill在头文件iomanip.h中定义 例: cout setfill(*)/设填充字符 setw(2) 21 endl setw(3) 21 endl setw(4) 21 endl; cout setfill( ); / 恢复默认设置,输出结果: 21 *21 *21,2010-11
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 氢能产业园绿色氢能供应链建设方案
- 机电设备安装电气系统接线方案
- 水稻病害课件
- 机电设备安装智能控制系统方案
- 影视片段赏析王璐2022年10月15课件
- 窒息的急救处理96课件
- 2025版城市更新项目房屋联建合作协议
- 二零二五年度污水处理厂清包工程合同范本
- 2025版养老院地砖墙砖铺设劳务分包合同
- 2025版电商平台独家运营权转让合同书
- 闭店协议如何签订合同模板
- 2025医疗机构租赁合同模板
- 2025年肇庆社区专职工作人员招聘真题
- 兄妹房屋协议书
- 微量泵输液泵使用技术
- epg信息管理制度
- 产品开发项目管理制度
- 液氧站安全管理制度
- 2025至2030年中国汽车空调过滤器行业市场现状分析及前景战略研判报告
- 【课件】《合并同类项》说课课件++2024-2025学年人教版数学七年级上册
- 2021年12月大学英语四级考试真题及答案(第1套)
评论
0/150
提交评论