文章目录
- 掌握知识点
- 1. 运算符概述
- 1.1 算术运算符
- 1.1.1 加,减,乘,除
- 1.1.2 自增,自减
- 1.1.3 取模运算 %
- 1.2 赋值运算符
- 1.3 比较运算符
- 1.4 逻辑运算符
- 2. 编程题:运算符使用
- 2.1 计算器
- 2.2 位数分离
- 2.3 鸡兔同笼问题
掌握知识点
- 算术运算符
- 赋值运算符
- 比较(关系) 运算符
- 逻辑运算符
1. 运算符概述
- 在C++中,运算符 是用于执行各种操作的特殊符号。它们可以用于操作数据,进行数学计算,控制程序流程等。
- 用于执行代码的运算 。
运算符类型 | 作用 |
---|---|
算术运算符 | 用于 数值类型的运算操作 |
赋值运算符 | 用于将表达式的 值赋给变量 |
比较运算符 | 用于 表达式的比较,并返回一个 真值,或者 ,假值 |
逻辑运算符 | 用于表达式的值 返回真值或者假值。 |
1.1 算术运算符
- 在现实生活中,我们常常会遇见数字的运算操作。
- 例如计算器中的计算,加,减,乘,除。
- 在程序中也是如此, 算术运算符,常常用于数值类型操作。
- A 值为10 , B值为20。
运算符 | 描述 | 实例 |
---|---|---|
+ | 把两个操作数相加 | A + B 将得到 30 |
- | 从第一个操作数中减去第二个操作数 | A - B 将得到 -10 |
* | 把两个操作数相乘 | A * B 将得到 200 |
/ | 分子除以分母 | B / A 将得到 2 |
% | 取模运算符,整除后的余数 | B % A 将得到 0 |
++ | 自增运算符,整数值增加 1 | A++ 将得到 11 |
– | 自减运算符,整数值减少 1 | A-- 将得到 9 |
- 自增和自减,可以放到变量前面也可以放到后面。
1.1.1 加,减,乘,除
-
针对运算符
+,-,*,/
来运行的实例测试。- 整数类型, 做除法,会 保留整数,小数类型,做除法,会 保留小数。
#include <iostream> using namespace std; /* 1. 算数运算符 + - * / */ int main(){ int a = 10; int b = 3; // 运算 + - * / cout<<"a+b的值 : " <<a+b <<endl; cout<<"a-b的值 : " <<a-b <<endl; cout<<"a*b的值 : " <<a*b <<endl; cout<<"a/b的值 : " <<a/b <<endl; //整数和整数运算还是整数. // 浮点型double 计算 double a_1 = 10; double b_1 =3; //如果两个浮点型进行计算的话,会保留小数么? cout <<"double浮点型计算: " <<a_1 /b_1 << endl; return 0 ; }
- 计算结果。
a+b的值 : 13 a-b的值 : 7 a*b的值 : 30 a/b的值 : 3 double浮点型计算: 3.33333
-
有一个特殊的注意事项, 除数是不可以为0的。
- 下面为代码片段。
//除数不能为0 int a =10; a/0 ; // 这个是不允许的.
1.1.2 自增,自减
-
自增和自减都是自己增加1或者减少1,但是符号放到前面和放到后面结果是不一样的。
++或者-- 放在前面,
先自增或者自减,在运算。++或者-- 放在后面,
先运算,然后在自增或者自减。
#include <iostream> using namespace std; int main(){ // ++ 放前面先加后运算, ++放后面先运算后加(自减运算--同理) int a = 3; int b = 4; //第一种情况 a =++b; cout << "b 的值是: " << b <<endl; cout << "a 的值是: " << a <<endl; cout<<"-------------------------"<<endl; int c =3; int d =4; //第二种情况 c = d++; cout << "c 的值是: " << c <<endl; cout << "d 的值是: " << d <<endl; return 0 ; }
-
运行结果。
b 的值是: 5 a 的值是: 5 ------------------------- c 的值是: 4 d 的值是: 5
- 总结: 可以叫做前置递增,后置递增,前置递减,后置递减。
1.1.3 取模运算 %
-
在C++中,取模运算使用百分号符号(%)表示。它被用于计算两个整数 相除后的余数。取模运算 只能用于 整数类型的操作数。
- 注意1,规定: 不允许小数做取模运算 。
[Error] invalid operands of types 'double' and 'double' to binary 'operator%'
#include <iostream> using namespace std; int main(){ //取模运算 ,取的是余数 int a = 10; int b = 3; cout<<"取模运算 % : " << a%b <<endl; // 1 //2.规定 两个小数是不允许做取模运算的 double a_1 =3.14; double b_1 = 0.5; //cpp[Error]类型为'double'和'double]的无效操作数到二进制'operator%' cout<<"取模运算 % : " << a_1%b_1 <<endl; return 0; }
-
注意2 ,模数不能为 0 。
- 下列为代码片段。
// % 取余数 ,不能 %0 int a = 10; a%0; //这是不允许的.
1.2 赋值运算符
- 用于表达式的值 赋值给变量。
- 例如,
int a = 10
,将表达式的右边赋值给左边。
- 例如,
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符,把右边操作数的值赋给左边操作数 | C = A + B 将把 A + B 的值赋给 C |
+= | 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 | C += A 相当于 C = C + A |
-= | 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 | C -= A 相当于 C = C - A |
*= | 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 | C *= A 相当于 C = C * A |
/= | 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 | C /= A 相当于 C = C / A |
%= | 求模且赋值运算符,求两个操作数的模赋值给左边操作数 | C %= A 相当于 C = C % A |
-
使用案例,但是注意 c的值是一直在变换的。
#include <iostream> using namespace std; /* 赋值运算符 = += -= *= /= %= 注意: 程序是由上到下执行的, c的赋值会一直在变化, */ int main(){ int a =20; int c ; c = a; // = 赋值运算符 cout<< "c的值是: = " << c <<endl; c +=a; // += 加并且赋值 cout << "c的值是: += " <<c <<endl; c -=a; // -= 减并且赋值 cout << "c的值是: -= " <<c <<endl; c *=a; //*= 乘并且赋值 cout << "c的值是: *= "<< c <<endl; c /=a; ///= 除并赋值 c = c/a cout << "c的值是: /= "<<c <<endl; c %=a; // %= 模余并赋值 cout << "c的值是: %=" << c <<endl; return 0 ; }
-
输出结果。
c的值是: = 20 c的值是: += 40 c的值是: -= 20 c的值是: *= 400 c的值是: /= 20 c的值是: %=0
1.3 比较运算符
- 比较运算符,又叫 关系运算符,主要作用,用于表达式的比较。
- 既然是比较,就会有结果,根据结果会返回一个值, 真 或者 假。
- 假设,变量 A 的值为 10,变量 B 的值为 20,则:
运算符 | 描述 | 实例 |
---|---|---|
== | 检查两个操作数的值是否相等,如果相等则条件为真 | (A == B) 不为真。 |
!= | 检查两个操作数的值是否相等,如果不相等则条件为真 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 | (A > B) 不为真。 |
< | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 | (A < B) 为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 | (A >= B) 不为真。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 | (A <= B) 为真。 |
- 需要注意 1:
- 在C++中 比较返回的值,如果是 真,则为 1,假为 0.
- 在 下一个单元中 我们会使用 选择结构 if 关键字来与比较运算符一起实用。
#include <iostream> using namespace std; /* 1. 用于表达式的比较. 如果条件成立,返回真. 如果不成立就 返回假. */ int main(){ int c ; int a =10; int b =20; //测试比较运算符 c = b>a; cout <<"c的 > 结果是: "<< c << endl; // >= c = b >=a; cout <<"c的 >= 结果是: "<< c << endl; // cout << (b>=a) << endl; //也可以使用这样的方式 //!= 如果两个值不相同,则返回真,否则,返回假 c = b!=a; cout <<"c的 != 结果是: "<< c << endl; // == 号进行判断 c = b==a; cout <<"c的 == 结果是: "<< c << endl; // cout << (b==a) << endl; //也可以使用这样的方式 return 0; }
-
输出结果。
c的 > 结果是: 1 c的 >= 结果是: 1 c的 != 结果是: 1 c的 == 结果是: 0
1.4 逻辑运算符
- 用于根据表达式 左右两边的的值,返回真或者假。
True 为真 1 ,False 为 假 0。
运算符 | 描述 | 实例 |
---|---|---|
&& | 称为逻辑与运算符,并且的意思。如果两个操作数都 true,则条件为 true,有一个为假则返回假 | (A && B) 为 false。 |
II | 称为逻辑或运算符, 或者的意思 。如果两个操作数中 有任意一个 true,则条件为 true。 | (A II B) 为 true。 |
! | 称为 逻辑非运算符。用来逆转操作数的逻辑状态,如果条件为 true 则逻辑非运算符将使其为 false,非真就假,非假就真。 | !(A && B) 为 true。 |
-
与,或,非 ,三种运算符。
- 假设; A为真, B为假 。
- 也可以使用 单与和单或
& 和 |
#include <iostream> using namespace std; int main(){ /*逻辑运算符 && 逻辑或 & 并且需要同时满足 || 逻辑 | 或者满足一个即可 ! 逻辑非 */ int a =2; int b =5; //逻辑与 & 和 && cout<<"单与&并且 : "<< ((a<3)&(b<4)) <<endl; cout<<"逻辑与&&并且 : "<< ((a<3)&&(b<4)) <<endl; //逻辑或 | 和|| cout<<"单或|并且 : "<< ((a<3)|(b<4)) <<endl; cout<<"逻辑或||并且 : "<< ((a<3)|(b<4)) <<endl; //非 ! 非真就假,非假就真 cout<<"单个! : "<< (!(a<3)) <<endl; return 0; }
2. 编程题:运算符使用
2.1 计算器
- 编写一个程序,要求用户输入两个整数,然后计算并输出它们的和、差、积和商。
#include <iostream>
using namespace std;
/*
1. 编写一个程序,要求用户输入两个整数,
然后计算并输出它们的和、差、积和商。
*/
int main(){
int num_1;
int num_2;
//输入第一个数
cout <<"输入第一个数:" ;
//输入方法
cin >> num_1;
//输入第一个数
cout <<"输入第二个数:" ;
//输入方法
cin >> num_2;
//计算 加 减 乘 除
cout << "加法: " << (num_1+num_2) <<endl;
cout << "减法: " << (num_1-num_2) <<endl;
cout << "乘法: " << (num_1*num_2) <<endl;
cout << "除法: " << (num_1/num_2) <<endl;
return 0;
}
2.2 位数分离
-
获取个位十位百位,从控制台输入一个三位数,分别获取个位,十位,百位。
- 思考 如何使用
/ 运算 和 % 运算
并 总结有什么特点?
#include <iostream> using namespace std; int main(){ /* 1.位数分离,如何分离个位十位百位 */ int num; //三位数的整数 cout << "请输入一个数: " ; cin >> num ; //如何获取一个数的个位,十位,百位. 789 int gewei = num % 10; // 获取个位数 cout << "个位数是:" << gewei << endl; int shiwei = num/10%10; //获取十位数 cout << "十位数是:" << shiwei << endl; //推理怎么拿到百位数 int baiwei = num/10/10; cout << "百位数是:" << baiwei << endl; return 0; }
- 思考 如何使用
-
如果一个 四位数怎么操作?
- 根据上边案例得出一个原理。
/ 运算 去掉一位,%运算获取个位
#include <iostream> using namespace std; int main(){ /* 1个4位数的操作 1234 */ int num; cout<< "请输入一个4位数: "; cin>>num; int gewei = num%10; cout<< "个位数" << gewei<<endl; int shiwei = num/10%10; cout<< "十位数" << shiwei<<endl; int baiwei = num/10/10%10; cout<< "百位数" << baiwei<<endl; int qianwei = num/10/10/10%10; cout<< "千位数" << qianwei<<endl; return 0; }
- 根据上边案例得出一个原理。
2.3 鸡兔同笼问题
-
已知 鸡和兔 的总数量为 n, 总腿数为m。
- 输入m和n 求出鸡和兔子的数量。
-
思考方式:二元一次方程。
#include <iostream> using namespace std; int main(){ /* 思路分析:需要使用二元一次方程 鸡设为 chicken 兔子 设为 rabbit */ int n ; //总数量 int m ; //总腿数 cout<< "请输入鸡和兔子的总数量: "; cin >> n ; cout<< "请输入鸡和兔子的腿数: "; cin >> m; // 将二元一次方程进行转换 int chicken ; //鸡 int rabbit ; //兔子 rabbit = m/2-n; chicken = n-rabbit; cout << "小鸡有: " << chicken << endl; cout << "小兔子有: " << rabbit << endl; return 0; }