程序执行期间,从外设接收信息的操作称为“输入”,向外设发送信息的操作称为“输出”。
本节介绍从键盘向程序中的变量输入数据以及将程序计算的结果输出到显示器上的基本操作。
cin和cout的书写形式很灵活,如果有多个变量,即使类型不相同,也可以写在同一个语句中或者分成若干个语句输入或输出。
注意,使用cin和cout必须在程序开头增加一行:
# include <iostream.h>
或者两行:
# include <iostream>
using namespace std;
cin:用cin为字符变量输入数据时,输入的各字符之间可以间隔开也可以无间隔,系统会自动跳过输入行中的间隔符(包括空格符,制表符,回车符等)。例如:
char c1, c2, c3;则
cin>>c1; //A
cin>>c2>>c3;
执行过程为:
(1) 程序执行到A行时,等待用户输入数据;
(2) 若输入:Abc <CR> //CR代表回车符
(3) cin分别将字符A、b、c赋给变量c1、c2、c3。
若在第(2)步中输入:A b c <CR>,则结果一样。
cin.get():用于提取键盘上输入的所有字符(包括间隔符等),赋给字符变量。并且,cin.get()函数一次只能提取一个字符的值,其格式为:
cin.get (字符变量);
举例:设有定义char c1, c2, c3, c4;则下列语句的执行过程是:
cin.get (c1);
cin.get (c2);
cin.get (c3);
cin.get (c4);
程序执行过程中若输入:
A b<CR> //Ab间有空格
C<CR>
则字符′A′、空格、′b′、回车分别赋给变量c1、c2、c3、c4;输入缓冲区中保留字符′C′和回车符。
注意,cin与cin.get()是有区别的,cin自动跳过分隔符(如空格、回车);cin.get()不会。
字符输出:字符间无间隔,如需间隔,可在数据间插入间隔符。如′\t′(制表符,自动跳过若干字符位置)、′\n′或endl(表示回车换行,并清空缓冲区)等。
◆ 2、字符串的输入输出
举例:
char city[11];
cin.getline(city, 10); //由键盘输入城市名
cout << “城市名:“ << city << endl;
其中:cin.getline() —— 第1个参数是已经定义的字符数组名,第2个参数是读入字符的最多个数(包括字符串结束符‘\0’)。
【执行结果】:从输入行中提取最多9个字符(由cin.getline()的第2个参数指明),再加上一个‘\0’字符,输入到字符数组city(由cin.getline()的第1个参数指明)。输出时,字符数组输出串结束符前的所有字符。
◆ 3、十进制数据的输入输出
请看下例:
int i, j;
float x, y;
cout<<”Input i, j, x, y:”<<endl; //D
cin>>i>>j; //E
cin>>x>>y; //要求输入十进制数据
cout<<"i="<<i<<'\t'<<"j="<<j<<endl;
cout<<"x+y="<<x+y<<endl;
程序执行到D行,将输出提示信息:
Input i, j, x, y:
并停留在E行,等待用户输入数据,若输入:
10 20<CR>
4.5 8.6 <CR>
则程序输出:
i=10 j=20
<表达式1> ? <表达式2> : <表达式3>
条件运算符的执行流程示意图如上图所示,描述如下:
(1) 计算表达式1的值;
(2) 若表达式的值为真(或非0),则只计算表达式2,并将其结果作为整个表达式的值;反之,即表达式1的值为假(或为0),则只计算表达式3,并将其结果作为整个表达式的值。
if (a>b) max=a;
else max=b;
可写成:
max=a>b?a:b;
又如:设有定义:int a=6,b=7, 则:
min = a<b?a:b; //min=6
min = a<b?++a:++b; //min=7 a=7 b=7
min = a<b?a++:b++; //min=6 a=7 b=7
if (a>=b) t=a; else t=b;
if (t>=c) max=t; else max=c;
可改写成:
max =(t=a>=b?a:b)>= c ? t : c;
又如:
if (a>b) cout<<″greater than″;
else if (a==b) cout<<″equal to″;
else cout<<″less than″;
可改写成:
cout<<(a>b? "greater than":a==b?"equal to":"less than");
最后提醒:
本节介绍从键盘向程序中的变量输入数据以及将程序计算的结果输出到显示器上的基本操作。
C++输入输出简介
C++中没有专门的输入输出语句,而是通过系统提供的输入输出流类来实现。- cin用来在程序执行期间给变量输入数据,一般格式为:
cin>> <变量名1>[>> <变量名2> >>…>> <变量名n>];
其中:>> 称为“提取运算符”,程序执行到这条语句便暂停下来,等待从键盘上输入相应数据,直到所列出的所有变量均获得值后,程序方继续执行。 - cout实现将数据输出到显示器的操作,一般格式为:
cout<< <表达式1> [<< <表达式2> <<…<< <表达式n>];
其中:<< 称为“插入运算符”,将紧跟其后的表达式的值输出到显示器上当前光标位置。
cin和cout的书写形式很灵活,如果有多个变量,即使类型不相同,也可以写在同一个语句中或者分成若干个语句输入或输出。
注意,使用cin和cout必须在程序开头增加一行:
# include <iostream.h>
或者两行:
# include <iostream>
using namespace std;
数据的输入输出
◆ 1、字符的输入输出cin:用cin为字符变量输入数据时,输入的各字符之间可以间隔开也可以无间隔,系统会自动跳过输入行中的间隔符(包括空格符,制表符,回车符等)。例如:
char c1, c2, c3;则
cin>>c1; //A
cin>>c2>>c3;
执行过程为:
(1) 程序执行到A行时,等待用户输入数据;
(2) 若输入:Abc <CR> //CR代表回车符
(3) cin分别将字符A、b、c赋给变量c1、c2、c3。
若在第(2)步中输入:A b c <CR>,则结果一样。
cin.get():用于提取键盘上输入的所有字符(包括间隔符等),赋给字符变量。并且,cin.get()函数一次只能提取一个字符的值,其格式为:
cin.get (字符变量);
举例:设有定义char c1, c2, c3, c4;则下列语句的执行过程是:
cin.get (c1);
cin.get (c2);
cin.get (c3);
cin.get (c4);
程序执行过程中若输入:
A b<CR> //Ab间有空格
C<CR>
则字符′A′、空格、′b′、回车分别赋给变量c1、c2、c3、c4;输入缓冲区中保留字符′C′和回车符。
注意,cin与cin.get()是有区别的,cin自动跳过分隔符(如空格、回车);cin.get()不会。
字符输出:字符间无间隔,如需间隔,可在数据间插入间隔符。如′\t′(制表符,自动跳过若干字符位置)、′\n′或endl(表示回车换行,并清空缓冲区)等。
◆ 2、字符串的输入输出
- 字符串的输入:用系统提供的函数cin.getline() ,将回车之前输入的所有字符都放入字符数组中,并以回车作为结束。
- 字符串的输出:可以直接输出串常量(常用于输出一些提示信息),也可以用字符数组名直接输出字符数组。
举例:
char city[11];
cin.getline(city, 10); //由键盘输入城市名
cout << “城市名:“ << city << endl;
其中:cin.getline() —— 第1个参数是已经定义的字符数组名,第2个参数是读入字符的最多个数(包括字符串结束符‘\0’)。
【执行结果】:从输入行中提取最多9个字符(由cin.getline()的第2个参数指明),再加上一个‘\0’字符,输入到字符数组city(由cin.getline()的第1个参数指明)。输出时,字符数组输出串结束符前的所有字符。
◆ 3、十进制数据的输入输出
请看下例:
int i, j;
float x, y;
cout<<”Input i, j, x, y:”<<endl; //D
cin>>i>>j; //E
cin>>x>>y; //要求输入十进制数据
cout<<"i="<<i<<'\t'<<"j="<<j<<endl;
cout<<"x+y="<<x+y<<endl;
程序执行到D行,将输出提示信息:
Input i, j, x, y:
并停留在E行,等待用户输入数据,若输入:
10 20<CR>
4.5 8.6 <CR>
则程序输出:
i=10 j=20
x+y=13.1
C++ 条件运算符(三目运算符)
在某些情况下,可以用条件运算符“ ? : ”来简化if语句。基本格式
“ ? : ”是一个三元运算符,其构成的表达式格式为:<表达式1> ? <表达式2> : <表达式3>
执行流程
条件运算符的执行流程示意图如上图所示,描述如下:
(1) 计算表达式1的值;
(2) 若表达式的值为真(或非0),则只计算表达式2,并将其结果作为整个表达式的值;反之,即表达式1的值为假(或为0),则只计算表达式3,并将其结果作为整个表达式的值。
应用举例
例如:if (a>b) max=a;
else max=b;
可写成:
max=a>b?a:b;
又如:设有定义:int a=6,b=7, 则:
min = a<b?a:b; //min=6
min = a<b?++a:++b; //min=7 a=7 b=7
min = a<b?a++:b++; //min=6 a=7 b=7
嵌套使用
条件运算符还可以嵌套使用,如求三个数中的最大值:if (a>=b) t=a; else t=b;
if (t>=c) max=t; else max=c;
可改写成:
max =(t=a>=b?a:b)>= c ? t : c;
又如:
if (a>b) cout<<″greater than″;
else if (a==b) cout<<″equal to″;
else cout<<″less than″;
可改写成:
cout<<(a>b? "greater than":a==b?"equal to":"less than");
最后提醒:
- 条件运算符“?:”只能在某些情况下简化if结构。
- 条件运算符嵌套使用时,要注意其结合性,即运算顺序,建议谨慎使用