cout是一个输出语句,告诉计算机把引号之间的字符串送到标准输出设备(屏幕)上。
cout的声明在头文件iostream中,所以要想使用cout必须将头文件iostream包括在程
序开始处。
endl是C++语言的换行控制符,表示内容输出后换行显示后续的内容。
7、system("pause")
在4.99以前版本的DevC++环境下,为了查看程序运行结果,需要在main函数的return
0语句前加上:
system("pause");这样程序运行到该语句时,结果显示屏幕将会停留
,让大家有时间看程序的输出结果,否则结果显示屏幕将会一闪而过。
在4.99之后的版
本可不必加该语句,运行结束后结果显示屏幕将自动停留。
8、return0;
主函数main()的返回语句,一般是函数的最后一条可执行语句。
main()函数末尾使用
return。
在语句时,数值0表示程序顺利结束,其他数表示有异常。
在后面的例子中大
家会看到C++程序都以类似的语句结束。
9、在C++中,语句的分隔是以分号“;”为分隔符的,分行写代码只是为了更方便人阅
读。
基本数据类型
数据是指计算机能够识别和数、字符及符号。
C++语言上有丰富的数据类型,在编写程序时必须说明每个标识符的类型,所执行的运算必须与数据类型一致,否则计算机会给出错误信息。
C++语言的数据类型分为两类:
整本数据类型和自定义数据类型。
C++基本数据类型有4种:
整型、浮点型、字符型和布尔型。
一、整型(int)
在C++语言中,整型类型标识符为int,根据整型变量的取值范围又可将整型变量定义为以下8种整型类型:
名 称 占字节数 定义标识符 数值范围
短整型 2 short -32768..32767
整 型 4 int -2147483648..2147483647
长整型 4 long -2147483648..2147483647
超长整型 8 longlong -9223372036854775808..9223372036854775807
短整型 2 unsignedshort 0..65535
整 型 4 unsignedint 0..4294967295
无符号长整型 4 unsignedlong 0..4294967295
无符号超长整型 8 unsignedlonglong 0..18446744073709551615
二、实型(double)
一个实型变量用来存储实数,实型包括正实数、负实数和实数零。
实数的表示方法有两种:
(1)、日常表示法:
就是我们平常使用的带小数点的表示方法。
例如:
2.5,-1.6,0.0都是合法的。
必须注意小数点前后都应该有数字,例如:
7.,.8都是非法的。
一个整数可以当做实数使用,但反过来不行。
(2)、科学表示法:
就是采用指数形式的表示方法。
例如:
6.1E3表示6.1*1000,即6100;-6.1E-3表示-6.1*0.001,即-0.0061。
称6.1E3中的E3为指数部分,6.1为尾数部分。
注意指数部分不能为小数,尾数部分不能省略,例如:
1.8E1.1,E+7都是非法的。
C++语言支持三种实型,它们是float(单精度实型)、double(双精度实型)、longdouble(长双精度实型)
。
每一种类型都规定了相应的取值范围、所使用的存储空间(字节数)以及能达到的精度(有效位数)。
名 称 标识符 占字节数 数值范围 有效数字
单精度实型 float 4 -3.4E-38..3.4E+38 6-7位
双精度实型 double 8 -1.7E-308..1.7E+308 15-16位
长双精度实型 longdouble 16 -1.2E-4932..1.2E+4932 18-19位
float在空间允许的情况下没有必要使用,都应使用double提高精度。
三、字符型(char)
字符常量有两种表示方法:
1、普通表示形式
字符常量由单个字符组成,所有字符采用ASCII编码,ASCII编码共有128个字符。
在程序中通常用一对单引号将单个字符括起来表示一个字符常量。
如:
'a'、'A'、'0'等。
2、转义字符表示形式
转义字符有三种用法:
表示控制字符、表示特殊字符、表示所有字符。
常用的转义字符如下表所示:
转义字符 含义
'\n' 换行
'\t' 水平制表
'\b' 退格
'\r' 回车(不换行)
'\0' 空字符
'\'' 单引号
'\"' 双引号
'\\' 一个反斜杠字符
'\ddd' 1-3位八进制数所代表的字符
'\xhh' 1-2位十六进制数所代表的字符
字符型数据占1个字节。
四、布尔型(bool)
布尔数据也称逻辑数据,常用于逻辑判断。
布尔类型数据只有两个:
真和假,分别用标准常量true(真)和false(假)来表示,false的序号为0,true的序号为1;布尔型数据占1个字节。
顺序结构
C++程序的基本结构有顺序结构、选择结构和循环结构。
每条语句按自上而下的顺序依次执行一次,这种自上而下依次执行的程序称为顺序结构程序。
C++中常用的顺序执行语句有3种:
赋值语句、cin输入语句和cout输出语句。
一、赋值语句
赋值语句用于给变量提供数据,它是程序中使用最多语句之一。
赋值语句是由赋值表达式加上一个分号构成,其一般形式为:
变量=表达式;
需注意以下几点:
1、在赋值符“=”右边的表达式也可以是一个赋值表达式,因此,下述形式“变量=(变量=表达式);”是成立的,从而形成嵌套的情形。
其展开之后的一般形式为:
变量=变量=…=表达式;
例如:
a=b=c=d=e=5;
按照赋值运算符的右结合性,实际上等效于:
e=5;d=e;c=d;b=c;a=b;
2、在进行赋值运算时,如果赋值运算符两边的数据类型不同,系统将会自动进行类型转换,即将赋值运算符右边的数据类型转换成左边的变量类型。
当边的是整型而右边是实型时,将去掉小数部分并截取该整型对应的有效位数。
3、在变量说明中给变量赋初值和赋值语句的区别:
给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其他同类变量之间必须用逗号间隔,而赋值语句必须用分号结尾。
在变量说明中,不允许连续给多个变量赋初值。
如下述说明是错误的:
inta=b=c=5;
必须写为:
inta=5,b=5,c=5;而赋值语句允许连续赋值。
4、赋值语句与赋值表达式的区别:
赋值表达式可以包含在其他表达式中,而赋值语句不可。
如:
if((a=b)>0)t=a;
不可写为:
if((a=b;)>0)t=a;
例1:
分析执行如下程序后x、y、z的值。
#include
usingnamespacestd;
intmain()
{intx,y,z;
x=(y=4)+(z=8);
return0;
}
分析:
先将y赋值为4,z赋值为8,再计算表达式的值为12,将其赋给x。
例2:
输入两个正整数a和b,试交换a、b的值(使a的值等于b,b的值等于a)
#include
usingnamespacestd;
intmain()
{intx,y,z;
cout<<"Inputx,y=";
cin>>x>>y;
z=x;x=y;y=z;
cout<<"x="< return0;
}
二、cin输入语句
cin是由c和in两个单词组成的,代表C++的输入流,它们是在头文件iostream中定义的。
标准输入流cin是从标准输入设备键盘向内存流动的数据流。
格式1:
cin>>变量;
功能:
从键盘读取一个数据并将其赋值给变量;
说明:
在使用cin输入的时候必须考虑后面的变量类型;如果你要求输入一个整数,在>>后面必须跟一个整型变量;如果要求一个字符,后面必须跟一个字符型变量。
格式2:
cin>>变量1>>变量2>>变量3…;
说明:
从键盘输入的数据的个数、类型与变量要一致;从键盘读取数据时,各数据之间要有分隔符,分隔符可以是一个或多个空格键、回车键等。
三、cout输出语句
标准输出流cout是从内存流向标准输出设备显示器。
格式1:
cout<<表达式;
功能:
把表达式的值输出到屏幕上,该表达式可以是各种基本类型的常量、变量或者由它们组成的表达式。
输出时,程序根据表达式的类型和数值大小,采用不同的默认格式输出,大多数情况下可满足要求。
若要输出多个数据,可以连续使用流插入运算符<<。
格式2:
cin<<表达式1<<表达式2<<表达式3…;
功能:
将变量式的内容一项接一项的输出到屏幕上。
注意:
1、输出字符串和输出变量的区别
当我输出字符串常量的时假,必须用双引号把字符串引起来,以便将它和变量名明显的区分开来。
下面两个语句是不同的:
cout<<"hello"; //输出字符串hello到屏幕上
cout<2、如何增强程序的可读性
在输出多个数据时可以通过插入空格符、换行符或其它提示信息将数据进行组织,以增强可读性。
如:
x=12
cout<<"heis"<3、换行符的使用
cout不会自动在其输出内容的末尾加换行符,如果我们调用两次cout,两个句子是输出在同一行中的。
C++中换行符有两种写法:
样例一:
cout<<"Firstsentence.\n";
cout<<"Secondsentence.\nThirdsentence.";
将会产生如下输出:
Firstsentence.
Secondsentence.
Thirdsentence.
样例二:
cout<<"Firstsentence."<cout<<"Secondsentence."<将会输出:
Firstsentence.
Secondsentence.
例3:
求一位同学语、数、英三门功课的总分和平均分。
#include
usingnamespacestd;
intmain()
{floatx,y,z,s,a;
cin>>x>>y>>z;
s=x+y+z;
a=s/3;
cout<<"s="<
return0;
}
选择结构if语句
当行走到十字路口时,是直行还是右转或左转,需要根据目的地的方向进行选择;在程序设计中,有时并不是按照语句的书写顺序自上而下地执行,而是根据设定的条件选择所执行的语句,称为选择结构。
C++语言中实现选择的语句有if语句和情况语句。
一、if语句的格式
格式1:
if(条件表达式)
语句;
功能:
如果条件表达式的值为真,即条件成立,语句将被执行;否则语句将被忽略(不被执行),程序将按顺序从整个if语句之后的下一条语句继续执行。
例1:
读入一个数,若这个数大于1并且小于100,则输出yes。
#include
usingnamespacestd;
intmain()
{inta;
cin>>a;
if((a>1)&&(a<100))
cout<<"yes"< return0;
}
例2:
读入一个数a,若a为偶数在屏幕上输出yes。
#include
usingnamespacestd;
intmain()
{inta;
cin>>a;
if(a%2==0)
cout<<"yes"< return0;
}
思考:
若题目改为:
读入一个数a,若a为偶数在屏幕上输出yes;若a为奇数在屏幕上输出no。
应该如何修改程序?
格式2:
if(条件表达式)
语句1;
else
语句2;
功能:
如果条件表达式的值为真,即条件成立,则执行语句1,执行完语句1后继续执行整个if语句的后继语句;如果条件表达式的值为假,即条件不成立,那么跳过语句1选择执行语句2,执行完语句2后继续执行整个if语句的后继语句;也就是说根据条件表达式的结果,选择语句1或语句2中的一个执行,执行完以后,整个if语句就算执行完了。
注意:
若语句1或语句2由多个句子构成,必须把这些句子括在一对花括号{}内;两条或两条以上的语句用一对{}括起来叫做复合语句。
例3:
根据输入的成绩,判断是否通过了考试。
#include
usingnamespacestd;
intmain()
{inta;
cin>>a;
if(a>59)
cout<<"pass!
"< else
cout<<"sorry!
"< return0;
}
二、逻辑运算及布尔表达式
1、逻辑运算
C++提供了三种逻辑运算符:
&&逻辑与:
双目运算符,具有左结合性。
||逻辑或:
双目运算符,具有左结合性。
!
逻辑非:
单目运算符,具有右结合性。
运算符的优先级由高到低为:
!
(非)、算术运算符、关系运算符、&&和||、赋值运算符。
即:
a>b&&c>d等价于(a>b)&&(c>d)
!
b==c||db)==c)||(da+b>c&&x+yc)&&((x+y)
2、逻辑运算的值
逻辑运算的值有“真”和“假”两种,用1和0来表示;但在判断一个量是否为真时,以非0代表“真”。
其求值规则如下:
与运算&&:
参与运算的两个量都为真时,结果才为真,否则为假。
或运算||:
参与运算的两个量只要有一个为真,结果就为真;两个量都为假时,结果为假。
非运算!
:
参与运算量为真时,结果为假;参与运算量为假时,结果为真。
三、if语句的嵌套
if语句中又包含if语句称为if语句的嵌套。
当出现if语句嵌套时,不管书写格式如何,else都将与它前面最靠近的if
(未曾配对的)配对,构成一条完整的if语句。
如:
1、
if(表达式1)
if(表达式2)
语句1;
else语句2;
2、
if(表达式1){if(表达式2)语句1;}else语句3;
3、
if(表达式1)语句1;
elseif(表达式2)语句2;
else语句3;
4、
if(表达式1)语句1;
elseif(表达式2)语句2;
elseif(表达式3)语句3;
else语句4;
注意:
在第2条语句中,else不是同它前面复合语句中的if配对,而是与处于同一层次的最前面的if配对。
例4:
某学校规定90分以上(含90分),等级为A,80-89分为B,60-79分为C,60分以下为D。
输入某同学的成绩,输出其等级。
#include
usingnamespacestd;
intmain()
{floats;
chard;
cin>>s;
if(s>=90)d='A';
elseif(s>=80)d='B';
elseif(s>=60)d='C';
elsed='D';
cout< return0;
}
例5:
输入某一年份,判断是否是闰年。
#include
usingnamespacestd;
intmain()
{inty,l;
cin>>y;
if((y%400==0)||((y%4==0)&&(y%100!
=0)))l=1;
elsel=0;
if(l)cout<<"Thisisaleapyear."< elsecout<<"Thisisnotaleapyear."< return0;
}
四、三目运算符
C++有一个常用来代替if语句的操作符,这个操作符被称为三目运算符(?
:
),它是C++中唯一一个需要3个操作数的操作符。
其通用格式如下:
b?
a:
c
如果b为真,则整个表达式的值为a;否则,整个表达式的值为c。
例如:
x=5>3?
10:
12; //5>3为真,所以x=10
x=3==9?
25:
18; //3==9为假,所以x=18
三目运算符返回的是一个值,可以将其赋给变量或者将其放到一个更大的表达式中。
如:
x=a>b?
(c>d?
e:
f):
g;
相当于:
if(a>b)
{if(c>d)x=e;
elsex=f;
}
elsex=g;
例6:
输入两个数,输出其中较大的那个。
#include
usingnamespacestd;
intmain()
{inta,b;
cin>>a>>b;
intc=a>b?
a:
b;
cout< return0;
}
五、作业
1、zerojudge:
基础题:
a003、a799、d063、d064、d067、d071、d068
if语句的嵌套:
d058、d065、a053
思考题:
d050、d060、d066、d073、d277
2、输入两门课程的考试成绩,如果都及格就显示PASS,否则显示FAIL。
3、输入三个整数,按从小到大的顺序输出。
4、输入年、月,输出该月的天数。
选择结构switch语句
应用条件语句可以很方便地使程序实现分支,但是出现分支比较多的时候,虽然可以用嵌套的if语句来解决,但是程序结构会显得复杂,甚至凌乱。
为方便实现多情况选择,C++提供了一种switch开关语句。
一、语句格式
switch(表达式){
case常量表达式1:
语句序列1;
break;
case常量表达式2:
语句序列2;
break;
…
case常量表达式n:
语句序列n;
break;
default:
语句序列n+1;
}
语句的执行过程:
1、计算出switch后面圆括号内表达式的值,假定为M,若它不是整型,系统将自动舍去其小数部分,只取其整数部分作为结果值;
2、依次计算出每个case后常量表达式的值,假定它们为M1,M2…,同样,若它们的值不是整型,则自动转换为整型;
3、让M依次同M1,M2…进行比较,一旦遇到M与某个值相等,则就从对应标号的语句开始执行;在碰不到相等的情况下,若存在default子句,则就执行其冒号后面的语句序列,否则不执行任何操作;当执行到复合语句最后的右花括号时就结束整个switch语句的执行。
注意:
1、语句中可以使用一次或多次case标号,但只能使用一次default标号;default后面的语句末尾可以不必写break,或者省略整个default部分。
2、每个case或default后,可以包含多条语句,不需要使用“{”和“}”括起来。
3、多个case标号也允许使用在同一个语句序列的前面。
二、格式举例
1、
switch(a){
case1:
x++;break;
case2:
y++;break;
case3:
z++;break;
default:
cout<<"error";
}
2、
switch(ch){
case'a':
case'A':
d1=(x+y)/2;
d2=x*y-2;
break;
case'b':
case'B':
d1=(a+b)/2;
d2=a*b-2;
break;
default:
cout<<"inputerror!
";
}
例1:
根据从键盘上输入的表示星期几的数字,对应输出它的英文名称。
#include
usingnamespacestd;
intmain()
{
intd;
cin>>d;
switch(d)
{
case1:
cout<<"Mon"<