一、三目运算符
?:
表达式1 ? 值1 : 值2
如果表达式1为真,整个表达式的值为值1(引用)
如果表达式1为假,整个表达式的值为值2(引用)
// 从键盘输入两个数字,输出较大的数
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int data1 = 0;
int data2 = 0;
cout << "请输入第一个数:";
cin >> data1;
cout << "请输入第二个数:";
cin >> data2;
cout << (data1>data2?"data1大":"data2大") << endl;
return 0;
}
二、运算符的优先级
优先级越小优先级越高
三、自增自减运算符
1. 自增自减独立作为一条语句
不管是 i++ ,i-- ,++i ,--i ,如果是独立的一条语句,那么 i++和++i ,i--和--i没有区别
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int i = 3;
i++;
cout << "i的值为:" << i << endl; // 4
++i;
cout << "i的值为:" << i << endl; // 5
i--;
cout << "i的值为:" << i << endl; // 4
--i;
cout << "i的值为:" << i << endl; // 3
return 0;
}
2. ++,--在右边 先使用 后加减
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int i = 3;
int j = 0;
j = i++;
cout << "j的值为:" << j << endl; // 3
cout << "i的值为:" << i << endl; // 4
// 顺序: 1.j=i 2.i=i+1
j = i--;
cout << "j的值为:" << j << endl; // 4
cout << "i的值为:" << i << endl; // 3
// 顺序: 1.j=i 2.i=i-1
return 0;
}
3. ++,--在左边 先加减 后使用
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int i = 3;
int j = 0;
j = ++i;
cout << "j的值为:" << j << endl; // 4
cout << "i的值为:" << i << endl; // 4
// 顺序: 1.i=i+1 2.j=i
j = --i;
cout << "j的值为:" << j << endl; // 3
cout << "i的值为:" << i << endl; // 3
// 顺序: 1.i=i-1 2.j=i
return 0;
}
四、选择控制语句 if
1. if 语句
格式
if(表达式)
{
语句1;
语句2;
语句3;
}
应用场景:只关心条件成立的结果
案例:判断一个数字能被3整除(不关系不能被3整除的情况)
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int num = 0;
cout << "请输入一个数字:";
cin >> num;
if(num%3==0)
{
cout << num << "可以被3整除" << endl;
}
return 0;
}
2. if ... else ... 语句
格式
if(表达式)
{
语句1;
}
else
{
语句2;
}
如果表达式为真,执行语句1,否则执行语句2
应用场景:如果项目有两种结果,不会同时出现,就选择该格式
案例:求一个int类型数据除以2的余数
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int num = 0;
cout << "请输入一个数字:";
cin >> num;
if(num%2==0)
{
cout << num << "除以2的余数为0" << endl;
}
else
{
cout << num << "除以2的余数为1" << endl;
}
return 0;
}
3. if ... else if ... else 语句
格式
if(表达式1)
{
语句1;
}
else if(表达式2)
{
语句2;
}
else if(表达式3)
{
语句3;
}
. . . . . .
else
{
语句n;
}
如果表达式1为真,执行语句1,其他条件不会再判断。只有当表达式1为假时,才会去判断表达式2的真假。
如果表达式2为真,执行语句2,其他条件不会再判断。只有当表达式2为假时,才会去判断表达式3的真假。(以此类推)
只有当所有表达式为假时,才会执行else中的语句n
应用场景:如果项目有多个结果,但是指挥出现其中之一,选择该格式
案例:求一个int类型数据除以3的余数
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int num = 0;
cout << "请输入一个数字:";
cin >> num;
if(num%3==0)
{
cout << num << "除以3的余数为0" << endl;
}
else if(num%3==1)
{
cout << num << "除以3的余数为1" << endl;
}
else
{
cout << num << "除以3的余数为2" << endl;
}
return 0;
}
五、选择控制语句 switch
格式
switch(表达式) // 表达式只能是字符型(char)或整型(short int int long int)
{
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
default:
语句3;
break;
}
将表达式结果与case后的常量表达式的值一一对比,相等就从当前case语句处进入执行,直到遇到break跳出switch语句,如果没有break语句,会接着执行后面的代码(不会再与后面case的常量表达式的值进行对比,直接执行)
表达式结果与所有case后的常量表达式的值都不想等,如果有default,会执行default下的语句
案例:键盘输入1-7的数值,判断是星期几
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int date = 0;
cout << "请输入一个1~7的数字:";
cin >> date;
if (date<1 || date>7)
{
cout << "输入的数字无效,请输入1~7的数字" << endl;
return 0;
}
switch(date)
{
case 1:
cout << "星期一" << endl;
break;
case 2:
cout << "星期二" << endl;
break;
case 3:
cout << "星期三" << endl;
break;
case 4:
cout << "星期四" << endl;
break;
case 5:
cout << "星期五" << endl;
break;
case 6:
cout << "星期六" << endl;
break;
case 7:
cout << "星期日" << endl;
break;
}
return 0;
}
六、循环控制语句 for
格式
for(初始化语句;循环条件;步进语句)
{
循环体;
}
初始化语句:只会在进入for循环前执行一次初始化动作
循环条件:每次循环都会执行,只有当循环条件为真时,才会进入循环体
步进语句:每次循环体执行完成后,会自动执行步进语句
案例:求1-100的和
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int num = 0;
for(int i=1;i<=100;i++)
{
num += i;
}
cout << "1-100的和为:" << num << endl; // 5050
return 0;
}
for 循环中的break,continue
break跳出当前循环
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int num = 0;
for(int i=1;i<=100;i++)
{
if(i==51)
{
break;
}
num += i;
}
cout << "和为:" << num << endl; // 1275
// 循环为求1-100的和,但是当i=51时,break中断循环,所以实际是求的1-50的和
return 0;
}
continue跳过当前循环
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int num = 0;
for(int i=1;i<=100;i++)
{
if(i==51)
{
continue;
}
num += i;
}
cout << "和为:" << num << endl; // 4999
// 循环为求1-100的和,但是当i=51时,continue跳过本次循环,导致后面的num += i没有执行,所以所求的1-100的和中少计算了一个51的值
return 0;
}
for 循环的嵌套
案例:打印输出九九乘法表
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
for(int i=1;i<10;i++)
{
for(int j=1;j<=i;j++)
{
cout << j << '*' << i << '=' << i*j;
cout << '\t'; // 在两个算式之间添加一个制表符,使输出更加美观
}
cout << endl;
}
}
七、循环控制语句 while
格式
// 外部实现初始化
while(循环条件)
{
循环语句;
// 内部实现步进语句
}
案例:求1-100的和
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int i = 1;
int num = 0;
while(i<=100)
{
num += i;
i++;
}
cout << "1-100的和为:" << num << endl;
}
while 循环中的break,continue
break跳出当前循环
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int i =1;
int num = 0;
while(i<=100)
{
if(i==51)
{
break;
}
num += i;
i++;
}
cout << "和为:" << num << endl; // 1275
// 循环为求1-100的和,但是当i=51时,break中断循环,所以实际是求的1-50的和
return 0;
}
continue跳过当前循环
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int i = 1;
int num = 0;
while(i<=100)
{
if(i==51)
{
i++; // continue会跳过当前循环,后面的i++不会执行,当i=51时,如果不加此语句会造成死循环
continue;
}
num += i;
i++;
}
cout << "和为:" << num << endl; // 4999
// 循环为求1-100的和,但是当i=51时,continue跳过本次循环,导致后面的num += i没有执行,所以所求的1-100的和中少计算了一个51的值
return 0;
}
while 循环的嵌套
案例:打印输出九九乘法表
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int i = 1;
while(i<10)
{
int j = 1;
while(j<=i)
{
cout << j << '*' << i << '=' << i*j;
cout << '\t'; // 在两个算式之间添加一个制表符,使输出更加美观
j++;
}
i++;
cout << endl;
}
}
do ... while 格式
格式
do
{
语句1;
语句2;
语句3;
}while(条件);
do-while 循环和 while 循环之间的区别:do-while 是一个后测试循环,这意味着在循环结束时,也就是在每次迭代完成后,才测试其表达式。因此,即使测试表达式在开始时为 false,do-while 也至少要执行一次迭代。
while:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int i = 1;
while(i<0)
{
cout << "循环体已执行" << endl;
}
// 循环体一次都没有执行
return 0;
}
do ... while
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int i = 1;
do
{
cout << "循环体已执行" << endl;
}while(i<0);
// 循环体执行一次
return 0;
}