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