第二讲简单的输入、输出_第1页
第二讲简单的输入、输出_第2页
第二讲简单的输入、输出_第3页
第二讲简单的输入、输出_第4页
第二讲简单的输入、输出_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、1第二讲第二讲 简单的输入简单的输入/ /输出输出西安理工大学理学院西安理工大学理学院冉占军冉占军C+程序设计教程2简单的输入简单的输入/输出输出l传统的输入传统的输入/输出函数实现方法输出函数实现方法 输入:从键盘输入数据赋给变量输入:从键盘输入数据赋给变量 输出:指计算机把计算结果送到显示器上显示输出:指计算机把计算结果送到显示器上显示l应用程序可以包含应用程序可以包含零个或多个零个或多个输入输入l应用程序至少包含应用程序至少包含一个或多个一个或多个输出输出l传统程序使用传统程序使用I/O函数实现输入函数实现输入/输出操作输出操作lC+程序使用程序使用操作符重载操作符重载方法实现输入方法实

2、现输入/输出流技术输出流技术lC+中输入中输入/输出实现更加简单方便输出实现更加简单方便3cin 输入流输入流l键盘输入称为标准输入(键盘输入称为标准输入(standard input)l显示器输出称为标准输出(显示器输出称为标准输出(standard output)lC+中通过输入中通过输入/输出流来实现标准输出输出流来实现标准输出/输出操作。输出操作。l输入操作通过流输入操作通过流cin来实现来实现l输出操作通过流输出操作通过流cout来实现来实现l使用输入流使用输入流 cin ,必须在程序的第一行包含头文件。,必须在程序的第一行包含头文件。 即:即:#include 4cin 输入流输入

3、流lcin一般格式:一般格式: cin . l “”称为提取运算符称为提取运算符,表示程序暂停执行,等待从输入,表示程序暂停执行,等待从输入流中提取数据赋给变量流中提取数据赋给变量l 将将cin想象成键盘,想象成键盘,“”想象成数据流向箭头,可以很想象成数据流向箭头,可以很容易记忆输入操作容易记忆输入操作l例:例:int i , j ; float x , y ; cin i j ; cin x y ;l输入的数据之间用分隔符分隔:输入的数据之间用分隔符分隔:、运行时:运行时:输入:输入:1 2 3.2 4.5 则则 变量变量 i、j 的值为的值为 1、2 变量变量 x、y 的值的值 3.2

4、和和 4.55cin 输入流输入流l每行末尾输入回车键的作用是:每行末尾输入回车键的作用是:1告诉告诉cin一行数据已经输入完毕,一行数据已经输入完毕,cin开始提取用户输入的开始提取用户输入的数据(忽略分隔符),并依次将所提取的数据赋值给数据(忽略分隔符),并依次将所提取的数据赋值给cin中中所列举的变量中尚未获得数据的变量。所列举的变量中尚未获得数据的变量。2在屏幕上显示光标换行,为下一行的输入或者显示程序的在屏幕上显示光标换行,为下一行的输入或者显示程序的输出结果做好准备,起到输入数据之间以及输入数据与输出输出结果做好准备,起到输入数据之间以及输入数据与输出结果之间的分隔符的作用。结果之

5、间的分隔符的作用。l用户输入数据的个数小于变量的个数用户输入数据的个数小于变量的个数。则在提取完输入行的。则在提取完输入行的有效数据后仍有变量没有获得数值,当前的输入语句不会结有效数据后仍有变量没有获得数值,当前的输入语句不会结束,会继续等待用户输入新的一行数据。束,会继续等待用户输入新的一行数据。6cin 输入流输入流l用户输入的数据个数大于变量的个数用户输入的数据个数大于变量的个数。则输入语句只依次。则输入语句只依次提取输入行中的部分数值给变量。而多余的数值会被下一提取输入行中的部分数值给变量。而多余的数值会被下一条条cin输入语句中的变量所提取,或者在没有后续的输入输入语句中的变量所提取

6、,或者在没有后续的输入语句的情况下被程序舍弃。语句的情况下被程序舍弃。 int i , j ; cin i j ; 若输入:若输入:100 200 300,300将被程序舍弃。将被程序舍弃。l 如果用户输入的一行仅仅是一个回车键,则如果用户输入的一行仅仅是一个回车键,则cin把该键作把该键作为分隔符来处理(将其忽略),只是在屏幕上显示光标换为分隔符来处理(将其忽略),只是在屏幕上显示光标换行,程序会继续等待用户输入数据。行,程序会继续等待用户输入数据。 7cin 输入流输入流l输入数据的类型由输入数据的类型由cin根据变量的类型来自动判定。从键盘上输入数据的根据变量的类型来自动判定。从键盘上输

7、入数据的个数、类型及顺序,必须与个数、类型及顺序,必须与cin中列举的变量一一对应。中列举的变量一一对应。l 例如:例如: int a, b; cin a b; 执行执行cin时,若输入字符数据:时,若输入字符数据: D F l 由于用户输入的数据是字符类型,而对应的接收变量是整数类型,两者由于用户输入的数据是字符类型,而对应的接收变量是整数类型,两者类型不匹配,变量类型不匹配,变量a得不到有效值,其值为得不到有效值,其值为0。后续的变量。后续的变量b受影响无法继受影响无法继续获得数值,其值为一个随机数。错误会继续向后延伸,造成后续的续获得数值,其值为一个随机数。错误会继续向后延伸,造成后续的

8、cin语句也不能正确提取数据。语句也不能正确提取数据。 8cin 输入流输入流l 例如:例如:int a;float b;cin b a;l 执行执行cin时,若输入:时,若输入:300 1.234 .l 实型实型b变量获得变量获得300.0的数值。而整型变量的数值。而整型变量a同样进行数同样进行数据类型转换,将小数据类型转换,将小数1.234转换为整数转换为整数1,小数部分被丢弃。,小数部分被丢弃。 9输入十六进制或者八进制数据输入十六进制或者八进制数据l必须在必须在cin中指明相应的数据类型:中指明相应的数据类型:hex表示十六进制,表示十六进制,oct表示八进制,表示八进制,dec表示十

9、进制。表示十进制。l 例:例:#include void main( ) int a,b,c,d; / 变量名变量名a,b,c,d cin hex a; /指明输入为十六进制数指明输入为十六进制数 cin oct b; /指明输入为八进制数指明输入为八进制数 cin c; /输入仍旧是八进制数输入仍旧是八进制数 cin dec d; /指明输入为十进制数指明输入为十进制数 cout a , b , c , d endl;10输入十六进制或者八进制数据输入十六进制或者八进制数据l必须在必须在cin中指明相应的数据类型:中指明相应的数据类型:hex表示十六进制,表示十六进制,oct表示八进制,表示

10、八进制,dec表示十进制。表示十进制。l 例:例:#include void main( ) int a,b,c,d; / 变量名变量名a,b,c,d cin hex a; /指明输入为十六进制数指明输入为十六进制数 cin oct b; /指明输入为八进制数指明输入为八进制数 cin c; /输入仍旧是八进制数输入仍旧是八进制数 cin dec d; /指明输入为十进制数指明输入为十进制数 cout a , b , c , d endl;输入:输入:20 21 22 23 a=32, b=17, c=18, d=2311输入十六进制或者八进制数据输入十六进制或者八进制数据l 使用非十进制输入

11、数据时,要注意几点:使用非十进制输入数据时,要注意几点:1八进制或十六进制数的输入,只适用于整型变量,不八进制或十六进制数的输入,只适用于整型变量,不适用于字符型变量、实型变量。适用于字符型变量、实型变量。2当在当在cin中指明使用的输入数制后,则所指明的数制一中指明使用的输入数制后,则所指明的数制一直有效,直到在下一个直有效,直到在下一个cin语句中指明采用不同的输入语句中指明采用不同的输入数制时为止。数制时为止。3用户从键盘输入数据的格式、个数和类型必须与用户从键盘输入数据的格式、个数和类型必须与cin中中所列举的变量类型一一对应。一旦输入出错,不仅使当所列举的变量类型一一对应。一旦输入出

12、错,不仅使当前的输入数据不正确,而且使得后面的提取数据也不正前的输入数据不正确,而且使得后面的提取数据也不正确。确。12输入字符数据输入字符数据例:例: char c1 , c2 , c3 ; cin c1 c2 c3;运行时:运行时:输入:输入:a a b b c c 或输入:或输入:abc abc 则则 变量变量 c1 c1、c2c2、c3 c3 的值为的值为 a a 、b b 、c c cin cin 自动跳过输入的空格自动跳过输入的空格 欲将空格输入给变量,则应使用欲将空格输入给变量,则应使用cin.get( ) cin.get( ) 函数。函数。例:例: char c1 , c2 ,

13、 c3 ; cin.get(c1); cin.get(c2); cin.get(c3);运行时:运行时:输入:输入:a a b b c c 则则 变量变量 c1 c1、c2c2、c3 c3 的值为的值为 a a 、 、bb 输入:输入:abc abc 则则 变量变量 c1 c1、c2c2、c3 c3 的值为的值为 a a 、b b 、cc 14cin输入举例输入举例#include void main( ) int a, b; char c, d; cin a b; cin c d; cout a , b , c , d endl; 用户输入:用户输入:12 34 5678 . 将将12赋值给

14、变量赋值给变量a,将,将34赋值给变量赋值给变量b。 将将5字符赋值给变量字符赋值给变量c,将,将6字符赋值给变量字符赋值给变量d。 剩余的剩余的7字符和字符和8字符将被舍弃。字符将被舍弃。l 还可以使用还可以使用cin.ignore( )函数对输入的内容有选择的接函数对输入的内容有选择的接收。收。cin.ignore( )的作用是在字符读取过程中忽略若干个的作用是在字符读取过程中忽略若干个字符,而读取后面的字符。其格式为:字符,而读取后面的字符。其格式为:l cin.ignore( );l 例如:例如: int a,b; char c,d; cin a b; cin.ignore(3); c

15、in c d; l 输入:输入:12 34 5678 l 输出结果:输出结果:12, 34, 7, 8l借助函数借助函数cin.get( )可以将三种分隔符作为字符输入计算机。可以将三种分隔符作为字符输入计算机。l函数函数cin.get( )的作用是把从键盘上输入的每一个字符,包的作用是把从键盘上输入的每一个字符,包括空格符和回车符等分隔符都作为一个输入字符赋给字符括空格符和回车符等分隔符都作为一个输入字符赋给字符型变量。型变量。其格式为:其格式为: cin.get( ); 例如:例如:char c5, c6, c7, c8; cin.get(c5); cin.get(c6); cin.get

16、(c7); cin.get(c8); 如果用户输入:如果用户输入:A B . c5值为值为A,c6值为值为, c7值为值为B,c8值为值为17cout 输出流输出流lcout一般格式:一般格式:cout . l“”称为插入运算符称为插入运算符,表示将表达式的运算结果插入到输出流的末,表示将表达式的运算结果插入到输出流的末尾,即在显示器上显示。尾,即在显示器上显示。 l将将cout想象成显示器,想象成显示器,“”想象成数据流向箭头,可以很容易记忆想象成数据流向箭头,可以很容易记忆输出操作。输出操作。例例3.6:int a=10, b=20, c=30, d=40; double m=5.23,

17、n=100; cout a b endl; cout c n-d endl; cout m n endl;注意:注意:输出数据之间无空白。输出数据之间无空白。 endl 与与 n 等价。等价。输出实型数,小数点后若为输出实型数,小数点后若为0,则不输出小数点。则不输出小数点。运行结果:运行结果:102030605.2310018cout 输出流输出流l为了区分输出的数据项,在每一个输出数据之间要输出分隔符。分为了区分输出的数据项,在每一个输出数据之间要输出分隔符。分隔符可以是空格、标点符号或者换行符等。隔符可以是空格、标点符号或者换行符等。l例如:例如:cout a , b endl; cou

18、t c , n-d endl; cout m , n endl;l输出结果:输出结果:10, 20 30, 60 5.23, 100l例如:例如:cout a= a t b= b endl;cout c= c t n - d = n-d endl; cout m= m t n= n endl;l输出结果:输出结果:a=10 b=20 c=30 100-40=60 m=5.23 n=100 t的意义的意义19cout 输出流输出流l使输出的数据项之间隔开的另一种办法是使用使输出的数据项之间隔开的另一种办法是使用setw( )函数来指定输出数函数来指定输出数据项的宽度。据项的宽度。l例如:例如:c

19、out setw(10) a setw(10) b endl;cout setw(10) c setw(10) n-d endl;cout setw(10) m setw(10) n endl;lsetw(10)指明其后的输出项占用的字符宽度为指明其后的输出项占用的字符宽度为10(小数点占一位),并(小数点占一位),并且向右对齐。且向右对齐。setw是是“set width”的缩写。的缩写。l 输出结果为:输出结果为: 10 20 30 605.23 10020cout 输出流输出流l 使用使用setw( )函数应该注意以下四点:函数应该注意以下四点:1setw( )函数是定义在函数是定义在i

20、omanip.h头文件中的系统函数,所以要头文件中的系统函数,所以要使用它就必须在程序的开始位置包含头文件使用它就必须在程序的开始位置包含头文件iomanip.h,即在程,即在程序的开头增加:序的开头增加: #include 2括号中必须给出一个正整数或者数学表达式(值为正整数),括号中必须给出一个正整数或者数学表达式(值为正整数),它指明紧跟其后输出的数据项的宽度。它指明紧跟其后输出的数据项的宽度。3该设置仅对其后的一个输出项有效。一旦按指定的宽度输出其该设置仅对其后的一个输出项有效。一旦按指定的宽度输出其后的输出项后,程序又自动回到原来的按实际宽度输出的缺省输后的输出项后,程序又自动回到原

21、来的按实际宽度输出的缺省输出方式。出方式。4当设置了数据的输出宽度后,如果数据的实际位数小于指定的当设置了数据的输出宽度后,如果数据的实际位数小于指定的宽度,则添加填充符。如果数据的实际位数大于指定的宽度,则宽度,则添加填充符。如果数据的实际位数大于指定的宽度,则数据按照实际的宽度输出,不会按照指定的宽度来截断数据。数据按照实际的宽度输出,不会按照指定的宽度来截断数据。和和” ”的区别?的区别?:仅从系统目录下搜索,:仅从系统目录下搜索,不搜索当前目录;不搜索当前目录;“ ”:先搜索当前目录,若:先搜索当前目录,若找不到,再搜索系统目录。找不到,再搜索系统目录。自定义的头文件只能用自定义的头文件只能用“ ”,否则找不到;库文件用否则找不到;库文件用,否则效率低。否则效率低。 21输出八进制、十六进制数和实数输出八进制、十六进制数和实数例例3.7:#include void main(void) int a=10, b=20, c=30, d=40;double m=5.23, n=100;cout a= oct a t b= b endl; cout.setf(ios:scientific, ios:floatfield);/按照科学计数法输出实数按照科学计数法输出实数cout c= hex c t n-d= n-d endl; cout m= m endl

温馨提示

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

评论

0/150

提交评论