3 运算符
作用:用于执行代码的运算
本章主要学习以下几类运算符:
运算符类型 | 作用 |
算术运算符 | 用于处理四则运算 |
赋值运算符 | 用于将表达式的值赋值给变量 |
比较运算符 | 用于表达式的比较,并返回一个真值或假值 |
逻辑运算符 | 用于根据表达式的值返回真值或假值 |
3.1 算术运算符
作用:用于处理四则运算
算术运算符包括以下符号:
运算符 | 术语 | 示例 | 结果 |
+ | 正号 | +3 | 3 |
- | 负号 | -3 | -3 |
+ | 加 | 10+5 | 15 |
- | 减 | 10-5 | 5 |
* | 乘 | 10*5 | 50 |
/ | 除 | 10/5 | 2 |
% | 取模(取余) | 10%3 | 1 |
++ | 前置递增 | a=2;b=++a; | a=3,b=3 |
++ | 后置递增 | a=2;b=a++; | a=3,b=2 |
-- | 前置递减 | a=2;b=--a; | a=1,b=1 |
-- | 后置递减 | a=2;b=a--; | a=1,b=2 |
相除:
- 两个整数相除,结果依然是整数,小数部分去除;
- 两个小数相除,结果为整数或小数;
- 两个数相除,除数不可为0,否则报错!
取模:
- 只有整型变量可以取模运算;
- 取模运算时,除数不可为0;
3.2赋值运算符
作用:用于将表达式的值赋给变量
赋值运算符包括以下几个符号:
运算符 | 术语 | 示例 | 结果 |
= | 赋值 | a=2;b=3 | a=2,b=3 |
+= | 加等于 | a=0;a+=2 | a=2 |
-= | 减等于 | a=5;a-=3 | a=2 |
*= | 乘等于 | a=2;a*=2 | a=4 |
/= | 除等于 | a=4;a/=2 | a=2 |
%= | 模等于 | a=3;a%=2 | a= |
3.3比较运算符
作用:用于表达式的比较,并返回一个真值或假值
比较运算符有以下符号:
运算符 | 术语 | 示例 | 结果 |
== | 相等于 | 4==3 | 0 |
!= | 不等于 | 4!=3 | 1 |
< | 小于 | 4<3 | 0 |
> | 大于 | 4>3 | 1 |
<= | 小于等于 | 4<=3 | 0 |
>= | 大于等于 | 4>=3 | 1 |
int a = 10;
int b = 20;
cout<<(a==b)<<endl; //输出0;用括号括起来优先运算
3.4逻辑运算符
作用:用于根据表达式的值返回真值或假值
逻辑运算符有以下符号:
运算符 | 术语 | 示例 | 结果 |
! | 非 | !a | a为假,则a为真;a为真,则a为假 |
&& | 与 | a&&b | a和b都为真,则结果为真,否则为假 |
|| | 或 | a||b | 如果a和b有一个为真,则结果为真,二者都为假时,结果为假 |
总结:
- !假变真,真变假
- && 同真为真,其余为假
- || 同假为假,其余为真
4 程序流程结构
C/C++支持最基本的三种程序运行结构,顺序结构、选择结构、循环结构
- 顺序结构:程序按顺序执行,不发生跳转
- 选择结构:依据条件是否满足,有选择的执行相应功能
- 循环结构:依据条件是否满足,循环多次执行某段代码
4.1 选择结构
4.1.1if语句
作用:执行满足条件的语句
if语句的三种形式
- 单行格式if语句
- 多行格式if语句
- 多条件的if语句
1、单行格式if语句:if(条件){条件满足执行的语句}
注意:if语句条件表达式后不要加分号!
2、多行格式if语句 if(条件){条件满足执行的语句}else{条件不满足执行的语句}
3、多条件的if语句if(条件1){条件1满足执行的语句}else if(条件2){条件2满足执行的语句}...else{都不满足执行的语句}
嵌套if语句:在if语句中可以嵌套使用if语句,达到更精确的条件判断
4.1.2三目运算符
作用:通过三目运算符实现简单的判断
语法:表达式1 ?表达式2 :表达式3
解释:
如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
如果表达式1的值为假,执行表达式3,并返回表达式3的结果;
int a = 10;
int b = 20;
int c= 0;
c=(a>b ? a:b);
cout<<"c="<<c<<endl; //输出C=20
//在C++中三目运算符返回的是变量,可以继续赋值
a>b ? a:b = 100; //a<b,返回b的变量
cout<<"a="<<a<<endl; //输出a=10
cout<<"b="<<b<<endl; //输出b=100
4.1.3switch语句
作用:执行多条件分支语句
语法:
switch(表达式)
{
case 结果1; 执行语句; break; //break退出当前分支,不再向下执行
case 结果2; 执行语句; break;
...
default: 执行语句; break; // default表示以上选择都没有
}
if 和switch区别
- switch在判断时只能时只能是整型或字符型,不可以是一个区间
- 与if相比,switch结构清晰,执行效率高,缺点是不能判断区间
int score = 0;
cin>>score;
switch(score)
{
case 10:
case 9:
cout<<"经典"<<endl;
break;
case 8:
case 7:
cout<<"不错"<<endl;
break;
case 6:
case 5:
cout<<"一般"<<endl;
break;
default:
cout<<"烂片"<<endl;
break;
}
注意:
- switch表达式中的语句只能是整型或字符型;
- case里如果没有break,程序会一直向下执行;
4.2循环结构
4.2.1while循环语句
作用:满足循环条件,执行循环语句
语法:while( 循环条件 ){ 循环语句 }
解释:只要循环条件的结果为真,就执行循环语句
int num = 0;
while (num <10)
{
cout<<num<<endl; //输出数字0-9
num++;
}
注意:写循环时要避免死循环;
练习案例:猜数字
案例描述:系统随机生成一个1到100的数字,玩家进行猜测。如果猜错,提示玩家数字过大或过小,如果猜对恭喜玩家胜利,并退出游戏。
#include <iostream>
#include<ctime>
using namespace std;
int main()
{
//添加随机数种子 作用利用当前系统时间生成随机数,防止每次随机数都一样
srand((unsigned int)time(NULL));
//1、系统生成随机数
int num = rand() % 100 + 1; //rand()%100 生成0~99的随机数
cout << "num=" << num << endl;
//2、玩家进行猜测
int num1 = 0;
cout << "请输入玩家猜测数字:" << endl;
cin >> num1;
//3、判断玩家猜测
while (num1!=num)
{
if (num1 < num)
{
cout << "输入的数字过小,请重新输入:" << endl;
}
else
{
cout << "输入的数字过大,请重新输入:" << endl;
}
cin >> num1;
}
cout << "您已猜中,游戏结束!" << endl;
system("pause");
return 0;
}
注意:生成随机数
#include<ctime>
srand((unsigned int)time(NULL)); //添加随机数种子 作用利用当前系统时间生成随机数,防止每次随机数都一样
int num = rand() % 100 + 1; //rand()%100 生成0~99的随机数
4.2.2do...while语句
作用:满足循环条件,执行循环语句
语法:do{ 循环语句 }while( 循环条件 );
注意:与while区别在于do...while会先执行一次循环语句,再判断循环条件
练习案例:水仙花数
案例描述:水仙花数是一个三位数,它的每个位上的数字的3次幂之和等于它本身,如13+53+33=153请利用do while语句,求出所有3位数中的水仙花数。
#include <iostream>
using namespace std;
int main()
{
int num = 100; //从最小的三位数100开始
do {
int a = 0, b = 0, c = 0;
a = num/100; //获取三位数的百位
b = (num/10)%10; //获取三位数的十位
c = num % 10; //获取三位数的个位
if ((a * a * a + b * b * b + c * c * c) == num)
{
cout << num << endl; //153 370 371 407
}
num++;
} while (num < 1000);
system("pause");
return 0;
}
4.2.3for循环语句
作用:满足循环条件,执行循环语句
语法:for (起始表达式; 条件表达式; 末尾循环体) { 循环语句; }
for(int i = 0; i<10; i++)
{
cout<<i<<endl;
}
注意:
- for循环中的表达式,要用分号进行分割
- while, do...while, for都是开发中常用的循环语句,for循环结构比较清晰,比较常用
练习案例:敲桌子
案例描述:从1开始数到数字100,如果数字个位含有7,或者数字十位含有7,或者该数字是7的倍数,我们打印敲桌子,其余数字直接打印输出。
#include <iostream>
using namespace std;
int main()
{
for (int i=1;i<=100;i++)
{
if ((i % 10 == 7)||(i/10==7)||(i%7==0)) {
//个位为7、十位为7、7的倍数:打印敲桌子
cout << "敲桌子" << endl;
}
else {
cout << i << endl;
}
}
system("pause");
return 0;
}
4.2.4嵌套循环
作用:在循环体中心再嵌套一层循环,解决一些实际问题
例如我们想在屏幕中打印如下 图片,需要利用嵌套循环
#include <iostream>
using namespace std;
int main()
{
for (int i=0;i<10;i++) //外层循环
{
for (int j = 0; j < 10; j++) //内层循环
{
cout << "* " ;
}
cout << endl;
}
system("pause");
return 0;
}
练习案例:乘法口诀表
案例描述:利用嵌套循环,实现九九乘法表
观察分析:
- 由图得知该图为9行9列;
- 列数 * 行数 = 计算结果;
- 列数 <= 当前行数
#include <iostream>
using namespace std;
int main()
{
for (int i=1 ;i<10;i++) //行数
{
for (int j = 1; j <= i; j++) //列数 <= 行数
{
cout << j<<"*"<<i<<"="<<i*j<<" ";
}
cout << endl;
}
system("pause");
return 0;
}
4.3跳转语句
4.3.1break语句
作用:用于跳出选择结构或者循环结构
break使用的时机:
- 出现在switch语句中,作用是终止case并跳出switch
- 出现在循环语句中,作用是跳出当前的循环语句
- 出现在嵌套循环中,跳出最近的内层循环语句
4.3.2contiune语句
作用:在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环
//0——100:奇数输出,偶数不输出
for (int i=0 ;i<100;i++)
{
if (i % 2 == 0)
{
continue; //可以筛选条件,执行到此不再向下执行,执行下一次循环
}
cout << i <<endl;
}
注意:continue并没有使整个循环终止,而break会跳出循环
4.3.3goto语句
作用:可以无条件跳转语句
语法:goto 标记;
解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置
cout<<"1、第一行代码"<<endl;
cout<<"2、第二行代码"<<endl;
goto FLAG;
cout<<"3、第三行代码"<<endl;
cout<<"4、第四行代码"<<endl;
FLAG:
cout<<"5、第五行代码"<<endl;
注意:程序中不建议使用gotu语句,以免造成程序混乱
标签:语句,int,Day2,C++,运算符,程序员,循环,执行,表达式 From: https://blog.51cto.com/u_16154883/6538200