return0;
}
【练习2.1】输入三个正整数A、B、C,试交换A、B、C的值(使A的值等于B,B的值等于C,C的值等于A)。
输入样例:
123
输出样例:
a=2b=3c=1
第二节运算符和表达式
运算符纵览
1.算术运算符
用于各类数值运算。
包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2.关系运算符
用于比较运算。
包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!
=)六种。
3.逻辑运算符
用于逻辑运算。
包括与(&&)、或(||)、非(!
)三种。
4.位操作运算符
参与运算的量,按二进制位进行运算。
包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
5.赋值运算符
用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
一、算术运算符
1、除法运算符
C++语言的除法运算符有一些特殊之处,即如果a、b是两个整数类型的变量或常量,那么a/b的值是a除以b的商。
例如,5/2的值是2,而不是2.5,而5.0/2或5/2.0的值是2.5。
2、模运算符
求余的运算符“%”也称为模运算符,是双目运算符,两个操作数都是整型数。
a%b的值就是a除以b的余数,5%2余数为1。
其操作对象只能是整型数,而其他四种运算符对int,float,double,char都适用。
【说明】
1)、除法运算或求商运算(/)
两个整数相除的结果为整数,5/2=2
两个实数相除的结果为实数,5.0/2=2.5或5/2.0=2.5
2)、取模运算或求余运算(%)
必须为两个整数,右操作不能为0,操作对象只能是整数型,运算结果为整除之后的余数,例如5%2=1。
3)、+,-,*,/,%这几个算数运算符的运算对象都是两个,所以称为双目运算符。
4)、优先级别为:
*,/,%高于+,-运算,都比赋值运算符的优先级别高,所以先算术,后赋值。
5)、运算顺序为自左向右(赋值运算的顺序为自右至左)。
6)、整除、取模运算的结果都是整数。
【练习2.2】比较分析下面程序的执行结果
a=300*2/3;
b=2/3*300;
a和b运行结果是否相同?
为什么?
【练习2.3】A+B问题
A+B问题的题目描述如下:
给定两个整数A和B,输出A+B的值。
保证A、B及结果均在整型范围内。
现在请你解决这一问题。
输入:
一行,包含两个整数A,B,中间用单个空格隔开。
A和B均在整型范围内。
输出:
一个整数,即A+B的值。
保证结果在整型范围内。
样例输入:
12
样例输出:
3
【练习2.4】计算(a+b)*c的值
给定3个整数a、b、c,计算表达式(a+b)*c的值。
输入:
输入仅一行,包括三个整数a、b、c, 数与数之间以一个空格分开。
(-10,000<a,b,c<10,000)
输出:
输出一行,即表达式的值
样例输入:
235
样例输出:
25
【练习2.5】计算(a+b)/c的值
给定3个整数a、b、c,计算表达式(a+b)/c的值,/是整除运算。
输入;输入仅一行,包括三个整数a、b、c,数与数之间以一个空格分开。
(-10,000<a,b,c<10,000,c不等于0)
输出:
输出一行,即表达式的值。
样例输入:
113
样例输出:
0
【练习2.6】带余除法
给定被除数和除数,求整数商及余数。
此题中请使用默认的整除和取余运算,无需对结果进行任何特殊处理。
输入:
一行,包含两个整数,依次为被除数和除数(除数非零),中间用一个空格隔开。
输出:
一行,包含两个整数,依次为整数商和余数,中间用一个空格隔开。
样例输入:
10 3
样例输出:
31
【练习2.7】数学中经典的“鸡兔同笼”问题
已知头共30个,脚共90只,问笼中的鸡和兔各有多少只?
3、自反算数赋值运算符(复合算术赋值)。
自反加赋值a+=b,相当于a=a+b;
自反减赋值a-=b,相当于a=a-b;
自反乘赋值a*=b,相当于a=a*b;
自反除赋值a/=b,相当于a=a/b;
自反模赋值a%=b,相当于a=a%b;
4、自加自减运算符
自反算数赋值运算中有两种更加特殊的情况
i=i+1,相当于i+=1; i=i-1,相当于i-=1
自加、自减运算符用来对一个操作数进行加1或减1运算,其结果仍然赋予该操作数,而且参加运算的操作数必须是变量,而不能是常量或表达式。
1)自增运算符。
例如,x++表示在使用x之后,使x的值加1,即x=x+1;++x表示使用x之前,先使x的值加1,即x=x+1。
2)自减运算符。
例如,x--表示在使用x之后,使x的值减1,即x=x-1;--x表示使用x之前,先使x的值减1,即x=x-1。
3)自加运算i++或++i
自减运算i--或--i
i++和i--称为后缀形式(先引用,后增值)
++i和--i称为前缀形式(先增值,后引用)
【例2.2】
inti inti;
i=5; i=5;
x=i++; x=++i;
y=i; y=i;
【例2.3】变量自加运算
#include
usingnamespacestd;
int main()
{
intx,y,z1,z2;
x=7; y=8;
z1=y-(x++); //计算z1=1,计算后x=8
z2=y-(++x); //计算前x的值自加1,x的值为9,再与y求差
cout<<“z1="<}
运行结果:
?
二、关系运算符
关系运算符用于数值的大小比较。
包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!
=)六种,它们都是双目运算符。
关系运算符运算的结果是整型,值只有两种:
0或1,0代表关系不成立,1代表关系成立。
请看下面的例子:
intmain()
{ int n1=4,n2=5,n3;
n3=n1>n2; //n3的值为_______
n3=n1 n3=n1==4; //n3的值为_______
n3=n1!
=4; //n3的值为_______
n3=n1==1+3;//n3的值为_______
}
三、逻辑运算符
C++语言中提供了三种逻辑运算符:
与运算(&&)、或运算(||)、非运算(!
)。
与运算符(&&)和或运算符(||)均为双目运算符。
具有左结合性。
非运算符(!
)为单目运算符,具有右结合性。
算数运算>关系运算>逻辑运算
逻辑运算的值也为“真”和“假”两种,用“1”和“0”来表示。
其求值规则如下:
1.与运算&&参与运算的两个量都为真时,结果才为真,否则为假。
例如,5>0&& 4>2
2.或运算||参与运算的两个量只要有一个为真,结果就为真。
两个量都为假时,结果为假。
例如:
5>0||5>8
3.非运算!
参与运算量为真时,结果为假;参与运算量为假时,结果为真。
例如:
!
(5>0)的结果为?
虽然C++编译在给出逻辑运算值时,以“1”代表“真”,“0”代表“假”。
但反过来在判断一个量是为“真”还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”。
例如:
5&&3的值为?
又如:
5||0的值为?
4.算术运算符、关系运算符、逻辑运算符和赋值运算符的优先级如下:
赋值运算符<逻辑运算符<关系运算符<算术运算符 关系运算符的结合性为:
自左至右。
根据以上优先级和结合性,计算出以下表达式的结果(假设a=3,b=2,c=1)
{
a>b;
(a>b)==c;
b+c<a;
d=a>b;
f=a>b>c;
}
第三节常量和变量
一、常量
常量是指在程序中使用的一些具体的数、字符。
在程序运行过程中,其值不能被更改。
如123,145.88,'m',TRUE等。
1、整型常量:
如3、-5、0等。
整型常量是表示整数的常量。
有三种表示形式:
1)十进制形式。
如99、-1。
2)八进制形式。
以数字0打头,由0-7构成,如012,表示八进制整数12,即12(8)。
3)十六进制形式。
以0x打头,如0x12A,表示十六进制整数12A,即12A(16)。
2、实型常量:
如3.1、-6.1E+2(科学记数法)。
3、字符常量:
是用单引号括起来的字符,如'k' 、'5'、'%'。
注意:
'a'与"a"表示的含义是不同的,'a'表示一个字符常量,"a"表示一个字符串。
一个常量可以直接调用(如124,'A'),也可以给常量取个名字用一个标识符代表它,这就是符号常量。
其语法格式为:
const 类型说明符常量名=常量字符;
例如:
constdouble PI=3.1415926;
或者类型说明符const常量名=常量字符;
例如:
doubleconstPI=3.1415926;
可写在主函数之前,也可以写在主函数中
二、变量定义
变量代表了一个存储单元,其中的值是可以改变的,因此称为变量。
一个程序中可能要使用到若干个变量,为了区别不同的变量,必须给每个变量(存储单元)取一个名(称为变量名),该变量(存贮单元)存储的值称为变量的值,变量中能够存储值的类型为变量的类型。
1.变量名
用一个合法的标识符代表一个变量。
如n,m,rot,total等都是合法变量名。
在程序中用到的变量要“先定义后使用”,变量名应遵循自定义标识符的命名规则,并建议使用“见名知义”的原则,即用一些有意义的单词作为变量名。
在C++语言,变量名大小写有区别。
用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。
C++语言规定,标识符只能由字母或下划线“_”开头,后面的字符可以是字母或数字。
对于标识符的长度,不同的C++语言编译器有不同的规定,考虑到系统的可移植性,建议变量名的长度不要超过8个字符。
例如:
month、_age、s2为合法的标识符;m.k.jack、a<=b、9y为不合法的标识符。
习惯上,符号常量名用大写,而变量名用小写,以便于区别。
2.变量的类型
常量是有类型的数据,变量在某一固定时刻用来存储一个常量,因此也应有相应的类型。
如整型变量用来存储整数,实型变量用来存储实数。
变量的类型,可以是标准数据类型int、short、long、float、double和char等,也可以是用户自定义的各种类型。
变量一经定义系统就在计算机内存中为其分配一个存储空间。
在程序中使用到变量时,就在相应的内存中存入数据或取出数据,这种操作称为变量的访问。
定义变量的语法格式为:
数据类型变量表1,变量表2,……;
【例2.4】
inti=5,j,k; //定义i,j,k为整型变量,
//i赋初值为5,j,k的初值未知。
char a,b,c; //定义a,b,c为字符变量
floatx,y,z; //定义x,y,z为实型变量
C++语言允许在定义变量的同时为变量赋初值。
【例2.5】输入半径r,求圆的周长及面积。
(π取3.14)
样例输入r=3
样例输出c=18.84 s=28.26
#includeusi