输入和输出.ppt

上传人:sccc 文档编号:5382120 上传时间:2023-07-01 格式:PPT 页数:34 大小:488.51KB
返回 下载 相关 举报
输入和输出.ppt_第1页
第1页 / 共34页
输入和输出.ppt_第2页
第2页 / 共34页
输入和输出.ppt_第3页
第3页 / 共34页
输入和输出.ppt_第4页
第4页 / 共34页
输入和输出.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《输入和输出.ppt》由会员分享,可在线阅读,更多相关《输入和输出.ppt(34页珍藏版)》请在三一办公上搜索。

1、第3章 输入和输出,2023/7/1,2,讲授内容,标准输入输出函数格式化输入输出函数通过流进行输入输出,2023/7/1,3,3.1 C+的输入和输出,两种I/O方式 保留自C的通过标准的I/O函数实现面向对象的类型安全的,编译器对输入输出操作做严格的类型检查,2023/7/1,4,3.2 标准输入与输出函数此类函数的原型包含在stdio.h中。1、字符输入函数getchar原型为:int getchar(void);功能:从标准输入设备读入一个字符,字符以整数形式返回,且将该字符回显在显示器屏幕上。例:#include/*文件包含*/main()char ch;printf(Please

2、input two character:);ch=getchar();/*输入1个字符并赋给ch*/putchar(ch);putchar(n);putchar(getchar();/*输入一个字符并输出*/putchar(n);,程序运行情况如下:Please input two characters:ab a b,2023/7/1,5,2、字符输出函数putchar原型为:int putchar(int c);功能:向标准输出设备输出一个字符,c为要输出的字符变量或常量,可以是转义符。例:#include/*编译预处理命令:文件包含*/void main()char ch1=N,ch2=E

3、,ch3=W;putchar(ch1);putchar(ch2);putchar(ch3);/*输出*/putchar(n);putchar(ch1);putchar(n);/*输出ch1的值,并换行*/putchar(E);putchar(n);/*输出字符E,并换行*/putchar(ch3);putchar(n);,程序运行结果如下:NEW N E W,2023/7/1,6,例子3-1:字符输入输出 P38,#include int main()char a=a,b=b,c;c=getchar();putchar(a);putchar(b);putchar(c);putchar(c);p

4、utchar();putchar(0101);putchar(n);return 0;,程序运行结果sabcs”A,2023/7/1,7,一、格式化输入函数scanf scanf(,)功能:输入各种类型的数据,并存入相应的参数中读取输入流中的指定的字符跳过输入流中的指定的字符说明:描述输入数据遵循的格式,可以包含3种类型的字符:格式指示符、空白字符(空格、Tab键和回车键)和非空白字符(普通字符)。空白字符作为相邻2个输入数据的缺省分隔符,非空白字符在输入有效数据时,必须原样一起输入。是存放数据的地址的列表,参数之间用“,”分隔。参数列表是一个地址列表,即可以是变量的首地址,也可以是字符数组名

5、或指针变量。,3.3 格式化输入输出,2023/7/1,8,变量首地址的表示方法:假设输入“123456789”,则系统将读取“12”并赋值给num1;读取“34”,但舍弃掉(“*”的作用);读取“567”并赋值给num2。所以,printf()函数的输出结果为:num1=12,num2=567。,2023/7/1,9,3、宽度是任选项,为一整数n,指明了该输入数据长度为n,如果有多余的部分将被舍弃 例:scanf(%3c%3c,ch1和ch2均为字符型变量,输入为:abcdefg4、转换说明符指明了读取数据的类型信息,2023/7/1,10,二、格式化输出函数printf printf(,)

6、;功能:指定浮点值保留的小数位数浮点值小数点对齐输出数据的右对齐和左对齐将直接字符插入到输出数据中将浮点数按照指数形式输出将整数按照八进制或十六进制形式输出按指定的域宽和精度输出数据,2023/7/1,11,说明:描述了输出数据的格式。可以包含3种类型的字符格式指示符,则被参数列表中相应的数据替换转义字符,按其含义输出相应的特殊符号普通字符,按照原样输出存放输出数据的表达式列表。格式指示符的数量、顺序与输出参数相对应。printf函数执行时,从左到右依次处理格式控制串,遇到格式控制字符,先计算相应的输出参数表达式,然后将该参数的计算结果按照格式指示符指定的方式输出参数列表是可选的。如果要输出的

7、数据不止1个,相邻2个之间用逗号分开。,2023/7/1,12,格式指示符:%其中、和可选 1、标志共有五种:多个标志可以联合使用。,2023/7/1,13,2、域宽:指明了数据打印的宽度。如果数据实际长度小于域宽,则数据输出右对齐;如果数据实际长度大于域宽,系统自动突破域宽限制,按数据的实际长度输出。注:负号要占据一个字符的位置。3、精度:对于整数,表示至少要打印的数字个数,如果数据长度小于精度,则左边补齐0;如果数据实际长度大于精度,则按数据实际长度输出。对于浮点数,如果转换说明符为e、E和f,精度表示小数点后的有效位数,如果数据小数部分的长度小于精度,则在右边补齐0;否则按精度对数据进行

8、舍入输出。如果浮点数的转换说明符为g和G,精度表示打印数据的最大的长度。对于字符串,精度表示字符串输出的最大长度,如果输出字符串长度小于精度,则按照字符串的实际长度输出;否则按精度截取输出字符串开头的n个字符(假设精度为n)输出4、转换说明符:指明了输出数据的类型信息。,2023/7/1,14,下面的printf()函数都是合法的:(1)printf(I am a student.n);(2)printf(%d,3+2);(3)printf(a=%d b=%5fn,a,a+3.0);必须强调:“格式字符串”中的格式指示符,必须与“输出项表”中、输出项的数据类型一致,否则会引起输出错误。,202

9、3/7/1,15,输出不同类型的数据,要使用不同的类型转换字符。1类型转换字符d以带符号的十进制整数形式输出。案例2 类型转换字符d的使用。可以有长度修饰。void main()int num1=123;long num2=123456;printf(num1=%d,num1=%5d,num1=%-5d,num1=%2dn,num1,num1,num1,num1);printf(num2=%ld,num2=%8ld,num2=%5ldn,num2,num2,num2);printf(num1=%ldn,num1);,程序运行结果如下:num1=123,num1=123,num1=123,num

10、1=123num2=123456,num2=123456,num2=123456num1=16908411,对于无符号形式是指,不论正数还是负数,系统一律当作无符号整数来输出。如:printf(%d,%o,%xn,-1,-1,-1);/*-1,177777,ffff*/,2023/7/1,16,2类型转换字符f以小数形式、按系统默认的宽度,输出单精度和双精度实数。小数位数都默认为6位。%f是float型输出,有效位共7位。%lf是double型输出,有效位共15位。%Lf是 long double 型输出。有效位共19位。案例3 类型转换字符f的使用。void main()float f=12

11、3.456;double d1,d2;d1=1111111111111.111111111;d2=2222222222222.222222222;printf(%f,%12f,%12.2f,%-12.2f,%.2fn,f,f,f,f,f);printf(d1+d2=%lfn,d1+d2);程序运行结果如下:123.456001,123.456001,123.46,123.46,123.46d1+d2=3333333333333.333000,本案例程序的输出结果中,数据123.456001和3333333333333.333000中的01和000是无意义的,因为它们超出了有效数字的范围。,20

12、23/7/1,17,对于实数,也可使用格式符%e或%E,以标准指数形式输出:小数点前必须有而且只有一位非0数字,小数位数为6位;指数部分占5位(如e-003),其中e占一位,指数符号占一位,指数占3位。如:float x=123.456;printf(“%e,%-7.2E,%10.4en”,x,x,x);输出结果为:1.234560e+002,1.23E+002,1.2346e+002也可使用格式符%g或%G,让系统根据数值的大小,自动选择%f或%e格式、且不输出无意义的零。,2023/7/1,18,3类型转换字符c输出一个字符(只占一列宽度)。案例4 类型转换字符c的使用。void main

13、()char c=A;int i=65;printf(c=%c,%5c,%dn,c,c,c);printf(i=%d,%c,i,i);程序运行结果如下:c=A,A,65 i=65,A注:在C语言中,整数可以用字符形式输出,字符数据也可以用整数形式输出。将整数用字符形式输出时,系统首先求该数与256的余数,然后将余数作为ASCII码,转换成相应的字符输出。,2023/7/1,19,4类型转换字符s输出一个字符串。案例5 类型转换字符s的使用。main()printf(%s,%5s,%-10s,Internet,Internet,Internet);printf(%10.5s,%-10.5s,%4

14、.5sn,Internet,Internet,Internet);程序运行结果如下:Internet,Internet,Internet,Inter,Inter,Inter注意:系统输出字符和字符串时,不输出单引号和双引号。,2023/7/1,20,1.3 使用说明(1)printf()可以输出常量、变量和表达式的值。但格式控制中的格式说明符,必须按从左到右的顺序,与输出项表中的每个数据一一对应,否则出错。例如,printf(str=%s,f=%d,i=%fn,Internet,1.0/2.0,3+5,CHINA);是错误的。(2)格式字符x、e、g可以用小写字母,也可以用大写字母。使用大写字

15、母时,输出数据中包含的字母也大写。除了x、e、g格式字符外,其它格式字符必须用小写字母。例如,%f不能写成%F。(3)格式字符紧跟在“%”后面就作为格式字符,否则将作为普通字符使用(原样输出)。例如,printf(”c=%c,f=%fn“,c,f);中的第一个c和f,都是普通字符。(4)如果要输出%本身,则双写%。例如:printf(“%f%”,1.0/3)结果为:0.333333%,2023/7/1,21,举例:1.以左对齐,域宽为10的方式输出字符串数据“aaaaa”printf(“%-10s”,”aaaaa”);aaaaa_ _ _ _ _ 2.用前导0格式输出数据23.45,域宽为10

16、,保留三位小数 printf(“%010.3f”,23.45);000023.4503.用十六进制大写,以域宽10输出数据26,并在数据前面加0 x printf(“%#10X”,26);_ _ _ _ _ _ 0X1A4.以科学记数法小写方式输出数据123.4,域宽为15 printf(“%15e”,123.4);_ _1.234000e+0025.为变量x读入一个十进制数,为变量y读入一个八进制数 scanf(“%d%o”,输入:x=10y=10,2023/7/1,22,例3-2:格式化输入输出例子,#include int main()int num1;float num2;char c

17、h2;int na,nb,nc,nd,ne,nf,ng;double da,db,dc;printf(-Basic input and output:-n);printf(“Input a char,a int and a float:);scanf(%c%d%f,2023/7/1,23,3.4 用流进行输入输出,流就是一个字节序列通过I/O流对象实现输入输出功能将实现数据传送操作的设备抽象成对象将“流”作为设备(如键盘、显示器等)和程序之间通讯的通道C+预定义的四个输入输出对象cout,标准输出设备,即显示器cin,标准输入设备,即键盘cerr和clog代表标准错误流对象,即显示器以上四个对

18、象都在iostream.h头文件中定义,2023/7/1,24,一、通过cout流输出数据 格式:cout;cout.;例:coutWelcome to C+!n;cout123+456=(123+456)endl;,例:cout“my name is jonen”;cout“the id is”;cout 2;cout endl;,例:cout“my name is jonen”“the id is”2cout endl;,例:cout“my name is jonen”“the id is”2 endl;,2023/7/1,25,二、通过cin流输入数据 cin cin.;说明:要求从键盘

19、输入数据的个数、类型与变量相一致。各数据之间要有分隔符,分隔符可能是一个或多个空格键、制表键或回车键。,例3-5:流输入输出例子 P55#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.5C=A i=65 x=2.3 y=3.5,2023/7/1,26,3.5 流操纵算子,为什么要采用流操纵算子?例:double average=9.400067;cout averageendl;不能显示9.40,只能显示

20、9.40007。因输出流的缺省位数为六位有效位。流操纵算子为流输入输出提供格式化输入输出的功能流操纵算子在头文件iomanip.h中定义的对象,2023/7/1,27,一、设置整数基数 将整数按十进制、八进制和十六进制等形式输出 流操纵算子oct将整数输出形式设置为八进制 流操纵算子hex将整数输出形式设置为十六进制 流操纵算子dec将整数输出形式设置为十进制例:输出八进制,十六进制和十进制数.#include#include void main()int number=1001;cout“Decimal:”decnumberendl“Hexadecimal:”hexnumberendl“Oc

21、tal:”octnumberendl“Hexadecimal:”hexsetiosflags(ios:uppercase)numberendl;,输出结果:Decimal:1001 Hexadecimal:3e9 Octal:1751 Hexadecimal:3E9,2023/7/1,28,例:控制浮点数精度(默认6位有效位)#include#includevoid main()double amount=22.0/7;coutamoutendl;coutsetprecision(0)amoutendl setprecision(1)amoutendl setprecision(2)amout

22、endl setprecision(3)amoutendl setprecision(4)amoutendl;coutsetiosflags(ios:fixed);coutsetprecision(8)amountendl;coutsetiosflags(ios:scientific)amountendl;coutsetprecision(6);/还原系统默认设置,3.14286,3,3,3.1,3.14,3.143,3.14285714,二、设置浮点数精度,2023/7/1,29,三、设置域宽函数width可以设置当前域宽(输入输出的字符数)如果输出的数据所需的宽度比设置的域宽小,空位用填充

23、字符(省缺为空格)填充如果输出的数据所需的宽度比设置的域宽大,系统输出所有位 首先用:cout.width(n);设置输出域宽 然后再用:cout语句输出要显示的内容。如:cout.width(5);cout“sss”;显示效果:_ _sss流操纵算子setw也可以设置域宽,2023/7/1,30,设置输出宽度:cout setw(8)10 endl;输出结果是:若数值10和20均按照宽度8输出,则cout setw(8)10 setw(8)20 endl;输出结果是:如果一个值的位数大于setw(n)确定的宽度位数,则按原宽度输出。float amount=4.53671;cout setw

24、(4)amount endl;输出结果是:,_ _ _ _ _ _10,_ _ _ _ _ _ 10_ _ _ _ _ _20,4.53671,2023/7/1,31,四、用字符填充输出宽度(默认用空格)例:#include#include void main()coutsetfill(*)setw(2)25endl setw(3)25endl setw(4)25endl;coutsetfill();/恢复缺省设置 输出结果:,25*25*25,2023/7/1,32,五、控制左右对齐输出 缺省时,I/O流以右对齐格式显示#include#include void main()coutseti

25、osflags(ios:right)setw(5)1setw(5)2 setw(5)3endl;coutsetiosflags(ios:left)setw(5)1setw(5)2 setw(5)3endl;输出结果为:,_ _ _ _ 1_ _ _ _ 2_ _ _ _ 31_ _ _ _2_ _ _ _ 3 _ _ _ _,2023/7/1,33,六、强制显示小数点和符号.#include#includevoid main()cout10.0/5endl;coutsetiosflags(ios:showpoint)10.0/5endl;cout10“-20endl;coutsetiosflags(ios:showpos)10“-20endl;输出为:2 2.00000 10-20+10-20,2023/7/1,34,学习目的检测,掌握各种输入输出函数掌握通过I/O流进行输入输出的方法作业P55:3.5 3.7 3.8 3.9 3.10 3.13 3.14 3.16预习第四章1.有哪三种程序结构,分别用什么语句实现?2.switch语句有什么作用?,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号