判断
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: 内容 break case 条件2: 内容 break case 条件……: 内容…… break default: 如果所有条件都不满足就会走default的内容 }
#include <iostream> using namespace std; int main() { // 定义day变量 int day; // 获取用户输入 cin >> day; // 把day传入switch switch (day) { // 如果day为1则输出星期一 case 1: cout << "星期一" << endl; // 结束switch 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; 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; }