《C++第03章 简单的输入输出.ppt》由会员分享,可在线阅读,更多相关《C++第03章 简单的输入输出.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目目 录录F第第1章章 C+概述概述F第第2章章 数据类型、运算符和表达式数据类型、运算符和表达式F第第3章章 简单的输入简单的输入/输出输出F第第4章章 C+的流程控制的流程控制F第第5章章 函数函数F第第6章章 编译预处理编译预处理F第第7章章 数组数组F第第8章章 结构体、共同体和枚举类型结构体、共同体和枚举类型F第第9章章 指针和引用指针和引用F第第10章章 类和对象类和对象F第第11章章 类和对象的其他特性类和对象的其他特性F第第12章章 继承和派生继承和派生F第第13章章 多态性多态性F第第14章章 输入输入/输出流输出流F第第15章章 模板模板v第一部分第一部分 面向过程的程序设
2、计面向过程的程序设计v第二部分第二部分 面向对象的程序设计面向对象的程序设计1第第3章章 简单的输入简单的输入/输出输出23.1 传统的输入/输出函数实现方法输入输入:从键盘输入数据赋给变量:从键盘输入数据赋给变量输出输出:指计算机把计算结果送到显示器上显示:指计算机把计算结果送到显示器上显示应用程序可以包含应用程序可以包含零个或多个零个或多个输入输入应用程序至少包含应用程序至少包含一个或多个一个或多个输出输出传统程序使用传统程序使用I/OI/O函数实现输入函数实现输入/输出操作输出操作C+C+程序使用操作符重载方法实现输入程序使用操作符重载方法实现输入/输出流技术输出流技术C+C+中输入中输
3、入/输出实现更加简单方便输出实现更加简单方便33.2 cin 输入流键盘输入称为键盘输入称为标准输入标准输入(standard inputstandard input)显示器输出称为显示器输出称为标准输出标准输出(standard outputstandard output)C+C+中通过输入中通过输入/输出流来实现标准输出输出流来实现标准输出/输出操作。输出操作。输入操作通过流输入操作通过流cincin来实现来实现输出操作通过流输出操作通过流coutcout来实现来实现使用输入流使用输入流 cincin ,必须在程序的第一行包含头文件。,必须在程序的第一行包含头文件。即:#include 4
4、3.2 cin 输入流cincin一般格一般格式:式:cin .“”“”称为提取运算符,表示程序暂停执行,等称为提取运算符,表示程序暂停执行,等待从输入流中提取数据赋给变量待从输入流中提取数据赋给变量 将将cincin想象成键盘,想象成键盘,“”想象成数据流向箭头,想象成数据流向箭头,可以很容易记忆输入操作可以很容易记忆输入操作例:例:intint i,j;i,j;float x,y;float x,y;cincin i j;i j;cincin x y;x y;输入的数据之间用输入的数据之间用分隔符分隔符分隔:分隔:、Tab 运行时:运行时:输入:输入:1 2 3.2 4.5 则则 变量变量
5、 i、j 的值为的值为 1、2 变量变量 x、y 的的值值 3.2 和和 4.553.2 cin 输入流每行末尾输入回车键的作用是:每行末尾输入回车键的作用是:1 1告诉告诉cincin一行数据已经输入完毕,一行数据已经输入完毕,cincin开始提取用户开始提取用户输入的数据(忽略分隔符),并依次将所提取的数输入的数据(忽略分隔符),并依次将所提取的数据赋值给据赋值给cincin中所列举的变量中尚未获得数据的变量。中所列举的变量中尚未获得数据的变量。2 2在屏幕上显示光标换行,为下一行的输入或者显示在屏幕上显示光标换行,为下一行的输入或者显示程序的输出结果做好准备,起到输入数据之间以及程序的输
6、出结果做好准备,起到输入数据之间以及输入数据与输出结果之间的分隔符的作用。输入数据与输出结果之间的分隔符的作用。用户输入数据的个数小于变量的个数用户输入数据的个数小于变量的个数。则在提取。则在提取完输入行的有效数据后仍有变量没有获得数值,当完输入行的有效数据后仍有变量没有获得数值,当前的输入语句不会结束,会继续等待用户输入新的前的输入语句不会结束,会继续等待用户输入新的一行数据。一行数据。63.2 cin 输入流 用户输入的数据个数大于变量的个数用户输入的数据个数大于变量的个数。则输入语。则输入语句只依次提取输入行中的部分数值给变量。而多余句只依次提取输入行中的部分数值给变量。而多余的数值会被
7、下一条的数值会被下一条cincin输入语句中的变量所提取,或输入语句中的变量所提取,或者在没有后续的输入语句的情况下被程序舍弃。者在没有后续的输入语句的情况下被程序舍弃。intint i,j;i,j;cincin i j;i j;若输入:若输入:100 200 300100 200 300,300300将被程序舍将被程序舍弃。弃。如果用户输入的一行仅仅是一个回车键,则如果用户输入的一行仅仅是一个回车键,则cincin把把该键作为分隔符来处理(将其忽略),该键作为分隔符来处理(将其忽略),只是在屏幕只是在屏幕上显示光标换行,程序会继续等待用户输入数据上显示光标换行,程序会继续等待用户输入数据。7
8、3.2 cin 输入流 输入数据的类型由输入数据的类型由cincin根据变量的类型来自动判定。根据变量的类型来自动判定。从键盘上输入数据的个数、类型及顺序,必须与从键盘上输入数据的个数、类型及顺序,必须与cincin中列举的变量一一对应。中列举的变量一一对应。例如:例如:int a,b;cin a b;执行cin时,若输入字符数据:D F 由于用户输入的数据是字符类型,而对应的接收由于用户输入的数据是字符类型,而对应的接收变量是整数类型,两者类型不匹配,变量变量是整数类型,两者类型不匹配,变量a a得不到有得不到有效值,其值为效值,其值为0 0。后续的变量。后续的变量b b受影响无法继续获得受
9、影响无法继续获得数值,其值为一个随机数。数值,其值为一个随机数。错误会继续向后延伸,错误会继续向后延伸,造成后续的造成后续的cincin语句也不能正确提取数据。语句也不能正确提取数据。83.2 cin 输入流 例如:例如:int a;float b;cin b a;执行执行cincin时,若输入:时,若输入:300 1.234.300 1.234.实型实型b b变量获得变量获得300.0300.0的数值。而整型变量的数值。而整型变量a a同样进同样进行数据类型转换,将小数行数据类型转换,将小数1.2341.234转换为整数转换为整数1 1,小数,小数部分被丢弃。部分被丢弃。93.2.1 输入十
10、六进制或者八进制数据输入十六进制或者八进制数据 必须在必须在cincin中指明相应的数据类型:中指明相应的数据类型:hexhex表示十六表示十六进制,进制,octoct表示八进制,表示八进制,decdec表示十进制。表示十进制。例例3.33.3:#include#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;103.2.1 输入十六进制或者八进制数据输入十六进
11、制或者八进制数据 必须在必须在cincin中指明相应的数据类型:中指明相应的数据类型:hexhex表示十六表示十六进制,进制,octoct表示八进制,表示八进制,decdec表示十进制。表示十进制。例例3.33.3:#include#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=23113.
12、2.1 输入十六进制或者八进制数据输入十六进制或者八进制数据 使用非十进制输入数据时,要注意几点:使用非十进制输入数据时,要注意几点:1 1八进制或十六进制数的输入,只适用于整型变量,八进制或十六进制数的输入,只适用于整型变量,不适用于字符型变量、实型变量。不适用于字符型变量、实型变量。2 2当在当在cincin中指明使用的输入数制后,则所指明的数中指明使用的输入数制后,则所指明的数制一直有效,直到在下一个制一直有效,直到在下一个cincin语句中指明采用不同语句中指明采用不同的输入数制时为止。的输入数制时为止。3 3用户从键盘输入数据的格式、个数和类型必须与用户从键盘输入数据的格式、个数和类
13、型必须与cincin中所列举的变量类型一一对应。一旦输入出错,中所列举的变量类型一一对应。一旦输入出错,不仅使当前的输入数据不正确,而且使得后面的提不仅使当前的输入数据不正确,而且使得后面的提取数据也不正确。取数据也不正确。123.2.2 输入字符数据输入字符数据例:例:char c1,c2,c3;char c1,c2,c3;cincin c1 c2 c3;c1 c2 c3;运行时:运行时:输入:输入:a a b b c c 或输入:或输入:abcabc 则则 变量变量 c1c1、c2c2、c3 c3 的值为的值为 a a、b b、c c cincin 自动自动跳过输入的空格跳过输入的空格13
14、 欲将空格输入给变量,则应使用欲将空格输入给变量,则应使用 cin.getcin.get()函数。函数。例:例:char c1,c2,c3;char c1,c2,c3;cin.get(c1);cin.get(c1);cin.get(c2);cin.get(c2);cin.get(c3);cin.get(c3);运行时:运行时:输入:输入:a a b b c c 则则 变量变量 c1c1、c2c2、c3 c3 的值为的值为 a a、b b 输入:输入:abcabc 则则 变量变量 c1c1、c2c2、c3 c3 的值为的值为 a a、b b、c c 14例例3.43.4:#include#inc
15、lude void main()int a,b;char c,d;cin a b;cin c d;cout a,b,c,d endl;用户输入:用户输入:12 34 5678.12 34 5678.将将1212赋值给变量赋值给变量a a,将,将3434赋值给变量赋值给变量b b。将将55字符赋值给变量字符赋值给变量c c,将,将66字符赋值给变字符赋值给变量量d d。剩余的剩余的77字符和字符和88字符将被舍弃。字符将被舍弃。15 还可以使用还可以使用cin.ignorecin.ignore()()函数对输入的内容有选函数对输入的内容有选择的接收择的接收。cin.ignorecin.ignor
16、e()()的作用是在字符读取过程的作用是在字符读取过程中忽略若干个字符,而读取后面的字符。其格式为:中忽略若干个字符,而读取后面的字符。其格式为:cin.ignorecin.ignore(););例如:例如:cin a b;cin.ignore(3);cin c d;输入:输入:12 34 12 34 565678 78 输出结果:输出结果:12,34,7,812,34,7,816 借助函数借助函数cin.getcin.get()()可以将三种分隔符作为字符输可以将三种分隔符作为字符输入计算机。入计算机。函数函数cin.getcin.get()()的作用是把从键盘上输入的每一个的作用是把从键盘
17、上输入的每一个字符,包括空格符和回车符等分隔符都作为一个输入字符,包括空格符和回车符等分隔符都作为一个输入字符赋给字符型变量。其格式为:字符赋给字符型变量。其格式为:cin.get();例如:例如:char c5,c6,c7,c8;char c5,c6,c7,c8;cin.get(c5);cin.get(c6);cin.get(c7);cin.get(c8);如果用户输入:如果用户输入:A A B.B.c5 c5值为值为AA,c6c6值为值为 ,c7c7值为值为BB,c8c8值为值为 173.3 cout 输出流coutcout一般格一般格式式:cout .“”称为插入运算符,表示将表达式的运
18、算结称为插入运算符,表示将表达式的运算结果插入到输出流的末尾,即在显示器上显示。果插入到输出流的末尾,即在显示器上显示。将将coutcout想象成显示器,想象成显示器,“”想象成数据流向箭想象成数据流向箭头,可以很容易记忆输出操作头,可以很容易记忆输出操作例例3.63.6:intint a=10,b=20,c=30,d=40;a=10,b=20,c=30,d=40;double m=5.23,n=100;cout a b endl;cout c n-d endl;cout m n endl;运行结果:运行结果:102030605.23100注意:注意:输出数据之间无空白。输出数据之间无空白。e
19、ndl 与与 n 等价。等价。输出实型数,小数点后若输出实型数,小数点后若为为0,则不输出小数点。,则不输出小数点。183.3 cout 输出流 为了区分输出的数据项,在每一个输出数据之间要输出分隔符。为了区分输出的数据项,在每一个输出数据之间要输出分隔符。分隔符可以是空格、标点符号或者换行符等。分隔符可以是空格、标点符号或者换行符等。例如:例如:coutcout a ,b a ,b endlendl;cout c ,n-d endl;cout m ,n endl;输出结果:输出结果:10,2010,20 30,60 5.23,100 例如:例如:cout a=a t b=b endl;cou
20、t c=c t n -d=n-d endl;cout m=m t n=n endl;输出结果:输出结果:a=10 a=10 b=20b=20 c=30 100-40=60 m=5.23 n=100 t的意义的意义193.3 cout 输出流 使输出的数据项之间隔开的另一种办法是使用使输出的数据项之间隔开的另一种办法是使用setwsetw()()函数来函数来指定输出数据项的宽度。指定输出数据项的宽度。例如:例如:cout setw(10)a setw(10)b endl;cout setw(10)c setw(10)n-d endl;cout setw(10)m setw(10)n endl;s
21、etw(10)setw(10)指明其后的输出项占用的字符宽度为指明其后的输出项占用的字符宽度为1010(小数点占一(小数点占一位),并且向右对齐。位),并且向右对齐。setwsetw是是“set width”set width”的缩写。的缩写。输出结果为:输出结果为:10 2030 605.23 100203.3 cout 输出流 使用使用setwsetw()()函数应该注意以下四点:函数应该注意以下四点:1 1setwsetw()()函数是定义在函数是定义在iomanip.hiomanip.h头文件中的系统函数,头文件中的系统函数,所以要使用它就必须在程序的开始位置包含头文件所以要使用它就必
22、须在程序的开始位置包含头文件iomanip.hiomanip.h,即在程序的开头增加:,即在程序的开头增加:#include 2 2括号中必须给出一个正整数或者数学表达式(值为正括号中必须给出一个正整数或者数学表达式(值为正整数),它指明紧跟其后输出的数据项的宽度。整数),它指明紧跟其后输出的数据项的宽度。3 3该设置仅对其后的一个输出项有效。一旦按指定的宽该设置仅对其后的一个输出项有效。一旦按指定的宽度输出其后的输出项后,程序又自动回到原来的按实度输出其后的输出项后,程序又自动回到原来的按实际宽度输出的缺省输出方式。际宽度输出的缺省输出方式。4 4当设置了数据的输出宽度后,如果数据的实际位数
23、小当设置了数据的输出宽度后,如果数据的实际位数小于指定的宽度,则添加填充符。如果数据的实际位数于指定的宽度,则添加填充符。如果数据的实际位数大于指定的宽度,则数据按照实际的宽度输出,不会大于指定的宽度,则数据按照实际的宽度输出,不会按照指定的宽度来截断数据。按照指定的宽度来截断数据。213.3.1 输出八进制、十六进制数和实数输出八进制、十六进制数和实数例例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
24、,ios:floatfield);/按照科学计数法输出实数cout c=hex c t n-d=n-d endl;cout m=m endl;cout.unsetf(ios:scientific);/取消按照科学计数法输出cout m=m t n=n endl;执行该程序后,输出:执行该程序后,输出:a=12 b=24c=1e n-d=6.000000e+001m=5.230000e+000m=5.23 n=10022 hexhex和和octoct在输出流在输出流coutcout中与中与cincin中的用法类似,一旦中的用法类似,一旦指定了输出的进制格式后,这种格式将一直有效,直指定了输出的进
25、制格式后,这种格式将一直有效,直到指定另外一种格式为止。到指定另外一种格式为止。在程序中调用了两个系统函数:在程序中调用了两个系统函数:cout.setfcout.setf()()和和cout.unsetfcout.unsetf()()。其中,。其中,cout.setfcout.setf()()函数用来指定对实数按照科函数用来指定对实数按照科学计数法格式输出,而学计数法格式输出,而cout.unsetfcout.unsetf()()用来终止对实用来终止对实数按照科学计数法格式输出。数按照科学计数法格式输出。一旦指定了按照科学计数法输出实数,其后所有的一旦指定了按照科学计数法输出实数,其后所有的实数都将按照科学计数法的格式输出,直到取消科学实数都将按照科学计数法的格式输出,直到取消科学计数法的输出格式为止。计数法的输出格式为止。233.3.2 输出字符或字符串输出字符或字符串 coutcout除了能够输出正常可视的标准字符外,还可以除了能够输出正常可视的标准字符外,还可以输出字符串和转义字符。输出字符串和转义字符。例如:例如:char ca,c1b;cout c=c t c1=c1 n;24第第3 章完章完25