1、第三章 简单的输入输出,输入语句:cin,程序在执行期间,接收外部信息的操作称为程序的输入;而把程序向外部发送信息的操作称为程序的输出。在C+中没有专门的输入输出语句,所有输入输出是通过输入输出流来实现的。,要使用C+提供的输入输出时,必须在程序的开头增加一行: #include 即包含输入输出流的头文件“iostream.h”。有关包含文件的作用,在编译预处理部分(第五章)作详细介绍。,输入十进制整数和实数,cin (举例说明),int a,b; cinab; /程序运行至此停下,等待从键盘输入变量值,键盘输入:3 5 或:3 5 均可。,输入语句自动过滤空白字符。,3,键盘,5,键盘,浮点
2、型数据同整型数据一样。,float c,d; cincd;,char ch1,ch2; cinch1ch2;,若输入:ab 则ch1为a, ch2为b。,若输入:a b 则ch1为a, ch2为b。,字符型变量过滤空白字符。cin格式过滤空白字符,float a; int i1,i2; char ch1,ch2; cini1ai2ch1ch2;,输入:34 5.678 1a b,i2:1,在缺省的情况下,cin自动跳过输入的空格,换言之,cin不能将输入的空格赋给字符型变量,同样地,回车键也是作为输入字符之间的分隔符,也不能将输入的回车键字符赋给字符型变量。,a:5.578,i1:34,ch1
3、:a,ch2:b,若要把从键盘上输入的每一个字符,包括空格和回车键都作为一个输入字符赋给字符型变量时,必须使用函数cin.get()。其格式为: cin.get();,cin.get()从输入行中取出一个字符,并将它赋给字符型变量。这个语句一次只能从输入行中提取一个字符。,char c1; cin.get(c1);,char ch1,ch2,ch3; cin.get(ch1); cin.get(ch2); cin.get(ch3);,输入:A B,则:ch1:A,并且在输入缓冲区中保留回车键。,ch2:空格,ch3:B,空格的ASCII码为32,ch2,输入十六进制或八进制数据,在缺省的情况下
4、,系统约定输入的整型数是十进制数据。当要求按八进制或十六进制输入数据时,在cin中必须指明相应的数据类型:hex为十六进制;oct为八进制;dec为十进制。,int i,j,k,l; cinhexi; /指明输入为十六进制数 cinoctj; /指明输入为八进制数 cink; /输入仍为八进制数 cindecl; /指明输入为十进制数 当执行到语句cin时,若输入的数据为: 11 11 12 12,结果:i:17,j:9,k:10,l:12,使用非十进制数输入时,要注意以下几点: 1、八进制或十六进制数的输入,只能适用于整型变量,不适用于字符型变量,实型变量。,2、当在cin中指明使用的数制输
5、入后,则所指明的数制一直有效,直到在接着的cin中指明输入时所使用的另一数制为止。如上例中,输入k的值时,仍为八进制。,3、输入数据的格式、个数和类型必须与cin中所列举的变量类型一一对应。一旦输入出错,不仅使当前的输入数据不正确,而且使得后面的提取数据也不正确。,cina,b;,cina b;,cinab;,int a, b;,cinab;,输出数据 cout 与输入cin对应的输出是cout输出流。,当要输出一个表达式的值时,可使用cout来实现,其一般格式为: cout ; 其中运算符“”称为插入运算符,它将紧跟其后的表达式的值,输出到显示器当前光标的位置。,int a=6; float
6、 f1=12.4; char s1 =“abcd”; coutatf1ts1endl;,t为转义字符Tab endl为回车或n,显示器,显示器,显示器,6,12.4,abcd,cout将双引号中的字符串常量按其原样输出,char ch1=a,ch2=b; cout“c1=“ch1t“c2=“ch2endl;,c1=a c2=b,int i1=4,i2=5; float a=3.5; cout“a*i1=“a*i1endl“a*i2=“a*i2endl;,a*i1=14 a*i2=17.5,指定输出项占用的宽度: 在输出的数据项之间进行隔开的另一种办法是指定输出项的宽度。如上面的两个输出语句可改
7、写为: cout setw(6) isetw(10)jendl;,_ _ _ _ _ 4_ _ _ _ _ _ _ _ _12,cout setw(5)msetw(10)j*kendl;,_ _ _ _ 7_ _ _ _ _ _ _ _ 24,其中setw(6)指明其后的输出项占用的字符宽度为6,即括号中的值指出紧跟其后的输出项占用的字符位置个数,并向右对齐。setw是“set width”的缩写。,使用setw()应注意以下三点: 1、在程序的开始位置必须包含头文件iomanip.h,即在程序的开头增加: #include ,2、括号中必须给出一个表达式(值为正整数),它指明紧跟其后输出项的
8、宽度。,3、该设置仅对其后的一个输出项有效。一旦按指定的宽度输出其后的输出项后,又回到原来的缺省输出方式。,输出八、十六进制数和科学表示法的实数,对于整型数据可指定以十六进制或八进制输出,而对于实型数据可指定以科学表示法形式输出。例如,设有如下一个程序: #include void main(void) float x=3.14,y=100;cout.setf(ios:scientific,ios:floatfield);/表明浮点数用科学表示法输出 cout xt;cout yendl; ,执行该程序后的输出为: 3.140000e+000 1.000000e+002,与cin中类同,当在cout中指明以一种进制输出整数时,对其后的输出均有效,直到指明又以另一种进制输出整型数据为止。对实数的输出,也是这样,一旦指明按科学表示法输出实数,则接着的输出均按科学表示法输出,直到指明以定点数输出为止。明确指定按定点数格式输出(缺省的输出方式)的语句为: cout.setf(ios:fixed,ios:floatfield);,