判断
if-elseif-else判断
- 语句:
- 条件使用之前的逻辑运算符或者关系运算符
if(条件1){条件1成立时内容 }else if(条件2){条件2成立时内容 }else{所有条件不成立时内容 }
#include <iostream>using namespace std;int main() {int age = 10;if (age > 18) {cout << "成年了" << endl;}else{cout << "没成年" << endl;}return 0; }
- 多个判断
#include <iostream>using namespace std;int main() {int age = 18;bool is_have_id = true;// age >= 18 并且 is_have_id为true都成立时条件才会成立if (age >= 18 && is_have_id) {cout << "成年了,可以去网吧" << endl;}else{cout << "没成年" << endl;}return 0; }
- else if第二个判断
#include <iostream>using namespace std;int main() {int age = 18;bool is_have_id = false;// age >= 18 并且 is_have_id为true都成立时条件才会成立if (age >= 18 && is_have_id) {cout << "成年了,带了身份证可以去网吧" << endl;} else if (age >= 18 && !is_have_id) {// age >= 18 并且 is_have_id为flase都成立时条件才会成立cout << "成年了,但是没带身份证" << endl;} else {cout << "没有成年" << endl;}return 0; }
switch判断
-
用户输入数字
cin >> 变量;
-
switch语法:
switch(变量){case 条件1:内容breakcase 条件2:内容breakcase 条件……:内容……breakdefault:如果所有条件都不满足就会走default的内容 }
#include <iostream>using namespace std;int main() {// 定义day变量int day;// 获取用户输入cin >> day;// 把day传入switchswitch (day) {// 如果day为1则输出星期一case 1:cout << "星期一" << endl;// 结束switchbreak;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;default:cout << "未知输入" << endl;break;}return 0; }
如果不写break会怎么样?
- 假设我们把case 6的break去掉
当输入5的时候进入case 5打印星期五,但是没有break会继续往下走直到遇见break,也就打印出了星期六,如果不写break,switch会穿透
结合goto使用
- 我们每次输入完,程序执行一次就退出了,怎样才能循环使用,想退出的时候再退出?
- 使用goto跳转到标记点
- 语法:
标记名: 代码 goto 标记名;
#include <iostream>using namespace std;int main() {int day;// 打入标记switch_while:cout << "请输入星期几" << endl;cin >> day;switch (day) {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;case 8:cout << "退出程序" << endl;break;default:cout << "非法输入" << endl;// 清除输入流错误标记cin.clear(); // 取走刚才输入流中的字符cin.ignore(1024,'\n');break;}// 如果输入不为8则goto到标记的地方重新执行if (day != 8) {goto switch_while;}return 0; }
循环
for循环
- 语法:
for (定义局部变量i;条件;条件变化){条件满足时执行的内容,直到条件不满足 }
- 例子:打印1~100的和
#include <iostream>using namespace std;int main() {int result = 0;for (int i = 0; i <= 100; i++) {result += i;}cout << result << endl;return 0; }
while循环
-
语法:
while(条件){条件成立时执行的内容,直到条件不成立,如果条件一直成立就一直执行,就是死循环 }
-
例子:还是打印1~100的和
#include <iostream>using namespace std;int main() {int result = 0;int i = 0;while (i <= 100) {result += i;i++;}cout << result << endl;return 0; }
do while
-
语法:
do{先执行一次内容,然后判断条件,是否成立。成立执行这里面代码,直到条件不成立 }while(条件)
-
例子:可以看到条件不满足,但是还是执行了一次
#include <iostream>using namespace std;int main() {int i = 100;do {cout << "do执行了" << endl;} while (i < 100);return 0; }
关于三种循环
-
while
和for
只有条件成立时才会执行循环内的代码,但是do while
会先执行一次再判断条件后续执不执行。 -
三种循环中
continue;
关键字会跳过此次循环 -
break
关键字会结束循环 -
goto 标签;
也会结束循坏前往标签处继续执行 -
例子: 计算0~80的偶数和
#include <iostream>using namespace std;int main() {int result = 0;for (int i = 0; i <= 100; i++) {// 如果i / 2 的余数是否不为0 判断是否是偶数if (i % 2 != 0) {continue;}// 提前循环到80停止if (i > 80) {break;}result += i;}cout << result << endl;return 0; }