250 likes | 427 Views
第 1 章 C++ 概述 第 2 章 数据类型、运算符和表达式 第 3 章 简单的输入 / 输出 第 4 章 C++ 的流程控制 第 5 章 函数 第 6 章 编译预处理 第 7 章 数组 第 8 章 结构体、共同体和枚举类型 第 9 章 指针和引用 第 10 章 类和对象 第 11 章 类和对象的其他特性 第 12 章 继承和派生 第 13 章 多态性 第 14 章 输入 / 输出流 第 15 章 模板. 目 录. 第一部分 面向过程的程序设计.
E N D
第1章 C++概述 第2章 数据类型、运算符和表达式 第3章 简单的输入/输出 第4章 C++的流程控制 第5章 函数 第6章 编译预处理 第7章 数组 第8章 结构体、共同体和枚举类型 第9章 指针和引用 第10章 类和对象 第11章 类和对象的其他特性 第12章 继承和派生 第13章 多态性 第14章 输入/输出流 第15章 模板 目 录 • 第一部分 面向过程的程序设计 • 第二部分 面向对象的程序设计
3.1 传统的输入/输出函数实现方法 输入:从键盘输入数据赋给变量 输出:指计算机把计算结果送到显示器上显示 应用程序可以包含零个或多个输入 应用程序至少包含一个或多个输出 传统程序使用I/O函数实现输入/输出操作 C++程序使用操作符重载方法实现输入/输出流技术 C++中输入/输出实现更加简单方便
3.2 cin 输入流 键盘输入称为标准输入(standard input) 显示器输出称为标准输出(standard output) C++中通过输入/输出流来实现标准输出/输出操作。 输入操作通过流cin来实现 输出操作通过流cout来实现 使用输入流 cin ,必须在程序的第一行包含头文件。 即:#include <iostream.h>
3.2 cin 输入流 cin一般格式: cin >> <变量1> [ >> <变量2>... >> <变量n> ] “>>”称为提取运算符,表示程序暂停执行,等待从输入流中提取数据赋给变量 将cin想象成键盘,“>>”想象成数据流向箭头,可以很容易记忆输入操作 例:int i , j ; float x , y ; cin >> i >> j ; cin >> x >> y ; 输入的数据之间用分隔符分隔:<空格>、<回车>、<Tab键> 运行时: 输入:1 2 <回车> 3.2 4.5 <回车> 则 变量i、j 的值为 1、2 变量 x、y 的值 3.2 和 4.5
3.2 cin 输入流 每行末尾输入回车键的作用是: 1.告诉cin一行数据已经输入完毕,cin开始提取用户输入的数据(忽略分隔符),并依次将所提取的数据赋值给cin中所列举的变量中尚未获得数据的变量。 2.在屏幕上显示光标换行,为下一行的输入或者显示程序的输出结果做好准备,起到输入数据之间以及输入数据与输出结果之间的分隔符的作用。 用户输入数据的个数小于变量的个数。则在提取完输入行的有效数据后仍有变量没有获得数值,当前的输入语句不会结束,会继续等待用户输入新的一行数据。
3.2 cin 输入流 用户输入的数据个数大于变量的个数。则输入语句只依次提取输入行中的部分数值给变量。而多余的数值会被下一条cin输入语句中的变量所提取,或者在没有后续的输入语句的情况下被程序舍弃。 int i , j ; cin >> i >> j ; 若输入:100 200 300<Enter>,300将被程序舍弃。 如果用户输入的一行仅仅是一个回车键,则cin把该键作为分隔符来处理(将其忽略),只是在屏幕上显示光标换行,程序会继续等待用户输入数据。
3.2 cin 输入流 输入数据的类型由cin根据变量的类型来自动判定。从键盘上输入数据的个数、类型及顺序,必须与cin中列举的变量一一对应。 例如: int a, b; cin >> a >> b; 执行cin时,若输入字符数据: D F <Enter> 由于用户输入的数据是字符类型,而对应的接收变量是整数类型,两者类型不匹配,变量a得不到有效值,其值为0。后续的变量b受影响无法继续获得数值,其值为一个随机数。错误会继续向后延伸,造成后续的cin语句也不能正确提取数据。
3.2 cin 输入流 例如: int a; float b; cin >> b >> a; 执行cin时,若输入:300 1.234 <Enter>. 实型b变量获得300.0的数值。而整型变量a同样进行数据类型转换,将小数1.234转换为整数1,小数部分被丢弃。
必须在cin中指明相应的数据类型:hex表示十六进制,oct表示八进制,dec表示十进制。必须在cin中指明相应的数据类型:hex表示十六进制,oct表示八进制,dec表示十进制。 例3.3:#include <iostream.h> 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; } 3.2.1 输入十六进制或者八进制数据
必须在cin中指明相应的数据类型:hex表示十六进制,oct表示八进制,dec表示十进制。必须在cin中指明相应的数据类型:hex表示十六进制,oct表示八进制,dec表示十进制。 例3.3:#include <iostream.h> 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; } 3.2.1 输入十六进制或者八进制数据 输入:20 21 22 23 <Enter> a=32, b=17, c=18, d=23
使用非十进制输入数据时,要注意几点: 1.八进制或十六进制数的输入,只适用于整型变量,不适用于字符型变量、实型变量。 2.当在cin中指明使用的输入数制后,则所指明的数制一直有效,直到在下一个cin语句中指明采用不同的输入数制时为止。 3.用户从键盘输入数据的格式、个数和类型必须与cin中所列举的变量类型一一对应。一旦输入出错,不仅使当前的输入数据不正确,而且使得后面的提取数据也不正确。 3.2.1 输入十六进制或者八进制数据
例: char c1 , c2 , c3 ; cin >> c1 >> c2 >> c3; 3.2.2 输入字符数据 运行时: 输入:a b c <回车> 或输入:abc <回车> 则 变量c1、c2、c3 的值为 'a' 、'b' 、'c' cin 自动跳过输入的空格
欲将空格输入给变量,则应使用 cin.get( ) 函数。 例: char c1 , c2 , c3 ; cin.get(c1); cin.get(c2); cin.get(c3); 运行时: 输入:a b c <回车> 则 变量c1、c2、c3 的值为 'a' 、' ' 、'b' 输入:abc <回车> 则 变量c1、c2、c3 的值为 'a' 、'b' 、'c'
例3.4:#include <iostream.h> void main( ) { int a, b; char c, d; cin >> a >> b; cin >> c >> d; cout << a <<','<< b <<','<< c <<','<< d << endl; } 用户输入:12 34 5678 <Enter>. 将12赋值给变量a,将34赋值给变量b。 将‘5’字符赋值给变量c,将‘6’字符赋值给变量d。 剩余的‘7’字符和‘8’字符将被舍弃。
还可以使用cin.ignore( )函数对输入的内容有选择的接收。cin.ignore( )的作用是在字符读取过程中忽略若干个字符,而读取后面的字符。其格式为: cin.ignore( <忽略的字符个数> ); 例如: cin >> a >> b; cin.ignore(3); cin >> c >> d; 输入:12 34 5678 <Enter> 输出结果:12, 34, 7, 8
借助函数cin.get( )可以将三种分隔符作为字符输入计算机。 函数cin.get( )的作用是把从键盘上输入的每一个字符,包括空格符和回车符等分隔符都作为一个输入字符赋给字符型变量。其格式为: cin.get( <字符型变量> ); 例如:char c5, c6, c7, c8; cin.get(c5); cin.get(c6); cin.get(c7); cin.get(c8); 如果用户输入:AB <Enter>. c5值为‘A’,c6值为<空格>, c7值为‘B’,c8值为<回车>
3.3 cout 输出流 cout一般格式: cout << <表达式1> [ << <表达式2>... << <表达式n> ] “<<”称为插入运算符,表示将表达式的运算结果插入到输出流的末尾,即在显示器上显示。 将cout想象成显示器,“<<”想象成数据流向箭头,可以很容易记忆输出操作 例3.6:int 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; 运行结果: 1020 3060 5.23100 注意: • 输出数据之间无空白。 • endl 与 ‘\n’等价。 • 输出实型数,小数点后若为0,则不输出小数点。
3.3 cout 输出流 为了区分输出的数据项,在每一个输出数据之间要输出分隔符。分隔符可以是空格、标点符号或者换行符等。 例如:cout << a << ',' << b<< endl; cout << c << ',' << n-d << endl; cout << m << ',' << n << endl; 输出结果:10, 20 30, 60 5.23, 100 例如: cout <<"a=" << a << '\t' <<"b=" << b << endl; cout <<"c=" << c << '\t' << n << "-" << d <<"=" << n-d << endl; cout <<"m=" << m << '\t' <<"n="<< n << endl; 输出结果:a=10 b=20 c=30 100-40=60 m=5.23 n=100 '\t'的意义
3.3 cout 输出流 使输出的数据项之间隔开的另一种办法是使用setw( )函数来指定输出数据项的宽度。 例如: 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; setw(10)指明其后的输出项占用的字符宽度为10(小数点占一位),并且向右对齐。setw是“set width”的缩写。 输出结果为: 10 20 30 60 5.23 100
3.3 cout 输出流 使用setw( )函数应该注意以下四点: 1.setw( )函数是定义在iomanip.h头文件中的系统函数,所以要使用它就必须在程序的开始位置包含头文件iomanip.h,即在程序的开头增加: #include <iomanip.h> 2.括号中必须给出一个正整数或者数学表达式(值为正整数),它指明紧跟其后输出的数据项的宽度。 3.该设置仅对其后的一个输出项有效。一旦按指定的宽度输出其后的输出项后,程序又自动回到原来的按实际宽度输出的缺省输出方式。 4.当设置了数据的输出宽度后,如果数据的实际位数小于指定的宽度,则添加填充符。如果数据的实际位数大于指定的宽度,则数据按照实际的宽度输出,不会按照指定的宽度来截断数据。
例3.7:#include <iostream.h> 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; cout.unsetf(ios::scientific); //取消按照科学计数法输出 cout << "m=" << m << '\t' << "n=" << n << endl; } 3.3.1 输出八进制、十六进制数和实数 执行该程序后,输出: a=12 b=24 c=1e n-d=6.000000e+001 m=5.230000e+000 m=5.23 n=100
hex和oct在输出流cout中与cin中的用法类似,一旦指定了输出的进制格式后,这种格式将一直有效,直到指定另外一种格式为止。hex和oct在输出流cout中与cin中的用法类似,一旦指定了输出的进制格式后,这种格式将一直有效,直到指定另外一种格式为止。 在程序中调用了两个系统函数:cout.setf( )和cout.unsetf( )。其中,cout.setf( )函数用来指定对实数按照科学计数法格式输出,而cout.unsetf( )用来终止对实数按照科学计数法格式输出。 一旦指定了按照科学计数法输出实数,其后所有的实数都将按照科学计数法的格式输出,直到取消科学计数法的输出格式为止。
cout除了能够输出正常可视的标准字符外,还可以输出字符串和转义字符。 例如: char c='a',c1='b'; cout << "c=" << c << '\t' << "c1=" << c1 << '\n'; 3.3.2 输出字符或字符串