运算符
作用:用于执行代码的运算
运算符类型 | 作用 |
算术运算符 | 用于处理四则运算 |
赋值运算符 | 用于将表达式的值赋给变量 |
比较运算符 | 用于表达式的比较,并返回一个真值或假值 |
逻辑运算符 | 用于根据表达式的值返回真值或假值 |
算术运算符
运算符 | 术语 | 示例 | 结果 |
+ | 正号 | +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; |
C++中,两个整数相除时,除数(分母)不可为0,结果依然是整数,将小数部分去除;两个小数相除,结果也可能是小数。
取模运算的本质就是求余数。
两个小数是不可以做取模运算的。
前置:先让变量+1或-1,然后再运行表达式;后置则相反。
赋值运算符
作用:将表达式的值赋给变量。
运算符 | 术语 | 示例 | 结果 |
= | 赋值 | 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 = 1; |
比较运算符
作用:用于表达式的比较,并返回一个真值或假值。
逻辑运算符
作用:依据表达式的值返回真值或假值
非:真变假,假变真
与:同真为真,其余为假
或:同假为假,其余为真
程序流程结构
C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构
选择结构
执行满足条件的语句
if语句:
注意事项:if判断语句后面不加分号
if语句的三种形式:
1.单行格式if语句:if(条件){条件满足执行的语句}
2.多行格式if语句:if(条件){条件满足执行的语句}else{条件不满足执行的语句}
3.多条件的if语句:if(条件1){条件1满足执行的语句}else if(条件2){条件2满足执行的语句}……else{都不满足执行的语句}
嵌套if语句:
达到更精确的条件判断
if(条件)
{
执行语句;
if(条件)
{
执行语句;
}
}
else if(条件)
{
执行语句;
}
else
{
执行语句;
}
三目运算符
语法:表达式1 ?表达式2 :表达式3
解释:如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
如果表达式1的值为假,执行表达式3,并返回表达式3的结果。
C++中三目运算符输出的是变量,可以继续赋值
int a = 10;
int b = 20;
int c = 0;
c = (a>b ? a : b);
(a>b ? a : b) = 100;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
输出:
a = 10
b = 100
c = 20
switch语句
执行多条件分支语句
break:终止case并跳出switch;
switch(表达式)
{
case 结果1:执行语句;break;
case 结果1:执行语句;break;
……
default:执行语句;break;
}
例子:电影打分
int main()
{
cout << "请打出你的分数" << endl;
int score = 0;
cin >> score;
cout << "你打出的分数为:" << score << endl;
switch(score)
{
case 10:
cout << "你认为经典" << endl;
break;
case 9:
cout << "你认为经典" << endl;
break;
case 8:
cout << "你认为很好" << endl;
break;
case 7:
cout << "你认为不错" << endl;
break;
case 6:
cout << "你认为及格" << endl;
break;
default:
cout << "你认为很差" << endl;
break;
}
}
注意事项:
switch判断时只能是整型或者字符型,不可以是区间;
case里如果没有break,那么程序会一直向下执行;
与if语句相比,对于多条件判断时,switch结构更清晰,执行效率更高,缺点是不能判断区间。
循环结构
满足循环条件,执行循环语句
while循环语句:
语法:while(循环条件){循环语句}
例子:打印0-9、猜数字
int main()
{
int num = 0;
while(num < 10)
{
cout << num << endl;
num++;
}
}
#include<iostream>
#include<ctime>
int main()
{
srand((unsigned int)time(NULL)); //添加随机数种子,利用当前系统生成随机数,防止每次随机数都一样
int num = rand () % 100 + 1;//系统生成 0 + 1~99 + 1 随机数
cout << "请输入你猜测的数字" << endl;
int val = 0; //玩家输入的数据
while (1)
{
cin >> val;
if (val > num)
{
cout << "你猜大了" << endl;
}
else if (val < num)
{
cout << "你猜小了" << endl;
}
else
{
cout << "你猜对了" << endl;
break; //利用break关键字退出当前循环
}
}
}
注意事项:在执行循环语句的时候,程序必须提供跳出循环的出口,否则出现死循环
do…while循环语句
语法:do{循环语句}while(循环条件);
与while的区别:先执行一次循环语句,再判断循环条件
例子:打印0-9
int num = 0;
do
{
cout << num << endl;
num++;
}
while (num < 10);
案例:水仙花数
水仙花数是指一个三位数,每个位上的数字的3次幂之和等于它本身,如:1^3 + 5^3 + 3^3 = 153
利用do…while语句,求出所有3位数中的水仙花数。
int main()
{
//先打印所有三位数字
int num = 100;
do
{
int a = 0;//个位
int b = 0;//十位
int c = 0;//百位
a = num % 10;//获取数字个位
b = num / 10 % 10;//获取数字十位
c = num / 100;//获取数字百位
if (a*a*a + b*b*b + c*c*c == num)//判断是否为水仙花数
{
cout << num << endl;//输出水仙花数
}
num++;
}
while (num < 1000);
}
for循环语句
语法:for(起始表达式;条件表达式;末尾循环体){循环语句;}
起始表达式只执行一次
例子:打印0-9
for(int i = 0; i < 10; i++)
{
cout << i << endl;//打印0-9
}
/*for的拆分
int i = 0;
for( ; ; )
{
if(i >= 10)
{
break;//退出循环
}
cout << i << endl;
i++;
}*/
注意:for循环中的表达式要用分号分隔
while、do…while、for都是开发中常用的循环语句,for循环结构比较清晰,比较常用
案例:敲桌子
从1开始到数字100,如果数字个位或者十位含有7,或者该数字是7的倍数,打印敲桌子,其余数字直接打印输出。
for(int i = 1; i <= 100; i++)
{
if(i % 7 == 0 || i % 10 == 7 || i / 10 == 7)
//是7的倍数、 个位含有7、 十位含有7
{
cout << "敲桌子" << endl;
}
else
{
cout << i << endl;
}
}
嵌套循环
循环中再嵌套一层循环,解决一些实际问题
例子:打印10*10星图
//外层循环 外层循环执行一次,内层执行一周
for(int i = 0; i < 10; i++)
{
//内层循环
for(int j = 0; j < 10; j++)
{
cout << "* " ;
}
cout << endl;
}
案例:乘法口诀表
for(int i = 1; i <= 9; i++)//打印行数
{
for(int j = 1; j <= i; j++)//打印列,列数<=行数
{
cout << j << " * " << i << " = " << j*i << "\t" ;//列数*行数=结果,\t用以对齐
}
cout << endl;
}
跳转语句
break语句:用于跳出选择结构或循环结构
用于switch条件语句中,终止case并跳出switch
用于循环语句中,跳出当前循环
用于嵌套循环中,跳出最近的内层循环语句
continue语句:在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环
for(int i = 0; i <= 100; i++)
{
if(i % 2 == 0)//奇数输出,偶数不输出
{
continue;//可筛选条件,执行到此就不再向下执行,执行下一次循环
}
cout << i << endl;
}
goto语句:无条件跳转语句
语法:goto 标记;
解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置。
cout << "111111" << endl;
cout << "222222" << endl;
goto FLAG;
cout << "333333" << endl;
cout << "444444" << endl;
FLAG:
cout << "555555" << endl;
//被跳过的333333和444444不会被输出
注意:在程序中不建议使用goto语句,以免造成程序流程混乱