21.条件分支语句-if
21.1 知识点
条件分支语句的作用
让顺序执行的代码产生分支。if
语句是第一个可以让程序产生逻辑变化的语句。
if语句
作用:满足条件时多执行一些代码。
语法
if (bool类型值 或 数值类型) {
满足条件要执行的代码;
}
注意:
if
语句的语法部分不需要写分号。if
语句可以嵌套使用。
示例代码
if (true) {
cout << "满足条件执行的内容" << endl;
}
cout << "if后面的内容" << endl;
int a = 1;
if (a > 0 && a < 5) {
cout << "a在0和5之间" << endl;
}
string name = "韬老狮";
string password = "666";
if (name == "韬老狮" && password == "666") {
cout << "登录成功" << endl;
}
if (name == "韬老狮") {
cout << "用户名验证成功" << endl;
if (password == "666") {
cout << "登录成功" << endl;
}
}
// 如果if语句满足条件后,后面只有一行需要执行的代码,可以省略大括号
if (false)
cout << "一行代码" << endl;
if…else语句
作用:产生两条分支,满足条件做什么,不满足条件做什么。
语法
if (bool类型值 或 数值类型) {
满足条件执行的代码;
} else {
不满足条件执行的代码;
}
注意:
if...else
语句的语法部分不需要写分号。if...else
语句可以嵌套。
示例代码
if (true) {
cout << "满足条件" << endl;
if (false) {
cout << "2满足条件" << endl;
} else {
cout << "2不满足条件" << endl;
}
} else {
cout << "不满足条件" << endl;
if (false) {
cout << "满足条件" << endl;
} else {
cout << "不满足条件" << endl;
}
}
cout << "后面的代码" << endl;
if…else if…else 语句
作用:产生多条分支,多条道路选择,最先满足其中一个条件时执行对应代码。
语法
if (bool类型值 或 数值类型) {
满足条件执行的代码;
} else if (bool类型值 或 数值类型) {
满足条件执行的代码;
}
// ...中间可以有n个 else if语句代码块
else {
不满足条件执行的代码;
}
注意:
if...else if...else
语句不需要写分号。- 可以嵌套使用。
else
是可以省略的。- 条件判断从上到下依次执行,满足第一个条件后,后续条件将不再执行。
示例代码
int a2 = 6;
if (a2 >= 10) {
cout << "a2是大于10的" << endl;
} else if (a2 > 5 && a2 < 10) {
cout << "a2在5到10之间" << endl;
} else if (a2 >= 0 && a2 <= 5) {
cout << "a2在0到5之间" << endl;
} else {
cout << "a2小于0" << endl;
}
// if语句相关:if, if...else, if...else if...else
// else if 和 else 是可以选择的,根据实际情况组合使用即可。
21.2 知识点代码
Lesson21_条件分支语句_if.cpp
#include <iostream>
using namespace std;
int main()
{
std::cout << "if语句\n";
#pragma region 知识点一 条件分支语句的作用
//让顺序执行的代码 产生分支
//if语句是第一个 可以让我们的程序 产生逻辑变化的 语句
#pragma endregion
#pragma region 知识点二 if语句
//作用: 满足条件时 多执行一些代码
//语法:
// if( bool类型值 或 数值类型 ) // bool类型相关:bool变量 关系运算符表达式 逻辑运算符表达式
// {
// 满足条件要执行的代码 写在if代码块中;
// }
// 注意:
// 1.if语句的语法部分, 不需要写分号
// 2.if语句可以嵌套使用
if (true)
{
//满足条件就会执行其中的内容
cout << "满足条件执行的内容" << endl;
cout << "满足条件执行的内容" << endl;
cout << "满足条件执行的内容" << endl;
cout << "满足条件执行的内容" << endl;
}
cout << "if后面的内容" << endl;
int a = 1;
if (a > 0 && a < 5)
{
cout << "a在0和5之间" << endl;
}
string name = "韬老狮";
string password = "666";
if (name == "韬老狮" && password == "666")
{
cout << "登录成功" << endl;
}
if (name == "韬老狮")
{
cout << "用户名验证成功" << endl;
if (password == "666")
{
cout << "登录成功" << endl;
}
}
//如果if语句满足条件后 后面只有一行需要执行的代码
//那么我们可以省略大括号
if (false)
cout << "一行代码" << endl;
#pragma endregion
#pragma region 知识点三 if...else语句
// 作用:
// 产生两条分支 分岔路口 满足条件做什么 不满足条件做什么
//语法:
// if( bool类型值 或 数值类型 )
// {
// 满足条件执行的代码;
// }
// else
// {
// 不满足条件执行的代码:
// }
// 注意:
// 1.if ...else 语句 语法部分 不需要写分号
// 2.if ...else 语句 可以嵌套
if (true)
{
//满足条件执行的内容
cout << "满足条件" << endl;
if (false)
{
//满足条件执行的内容
cout << "2满足条件" << endl;
}
else
{
//不满足条件执行的内容
cout << "2不满足条件" << endl;
}
}
else
{
//不满足条件执行的内容
cout << "不满足条件" << endl;
if (false)
{
//满足条件执行的内容
cout << "满足条件" << endl;
}
else
{
//不满足条件执行的内容
cout << "不满足条件" << endl;
}
}
cout << "后面的代码" << endl;
#pragma endregion
#pragma region 知识点四 if...else if...else 语句
//作用:
// 产生n条分支 多条道路选择 最先满足其中的一个条件 就做什么
// 语法:
// if( bool类型值 或 数值类型 )
// {
// 满足条件执行的代码;
// }
// else if( bool类型值 或 数值类型 )
// {
// 满足条件执行的代码;
// }
// ...中间可以有n个 else if语句代码块
// else
// {
// 不满足条件执行的代码:
// }
// 注意:
// 1. 和前面两个是一样的 不需要写分号
// 2. 是可以嵌套的
// 3. else 是可以省略的
// 4. 注意 条件判断 从上到下执行 满足了第一个后 之后的都不会执行了
int a2 = 6;
if (a2 >= 10)
{
cout << "a2是大于10的" << endl;
}
else if (a2 > 5 && a2 < 10)
{
cout << "a2在5到10之间" << endl;
}
else if (a2 >= 0 && a2 <= 5)
{
cout << "a2在0到5之间" << endl;
}
//else 是可以省略的
else
{
cout << "a2小于0" << endl;
}
//if语句相关 if if...else if...else if ...else if ...n个 ... else
//else if 和 else 是可以选择的 是可以进行组合使用的
//根据实际情况去选择就可以了
#pragma endregion
}
21.3 练习题
请用户输入今日看韬老狮视频花了多少分钟,如果大于60分钟,那么在控制台输出“今天看视频花了XX分钟,看来你离成功又进了一步!”
cout << "请用户输入今日看韬老狮视频花了多少分钟" << endl;
try
{
string str;
cin >> str;
int time = stoi(str);
if (time >= 60)
{
cout << "今天看视频花了" + str + "分钟,看来你离成功又进了一步!" << endl;
}
else
{
cout << "你还需努力" << endl;
}
}
catch (const std::exception&)
{
cout << "请输入正确格式的时间" << endl;
}
输入语文、数学、英语成绩
满足以下任意条件,则输出“非常棒,继续加油”:
- 语文成绩大于70且数学成绩大于80且英语成绩大于90
- 语文成绩等于100或者数学成绩等于100或者英语成绩等于100
- 语文成绩大于90且其他两门中有一门成绩大于70
try
{
string str;
cout << "请输入语文成绩" << endl;
cin >> str;
int yuwen = stoi(str);
cout << "请输入数学成绩" << endl;
cin >> str;
int shuxue = stoi(str);
cout << "请输入英语成绩" << endl;
cin >> str;
int yingyu = stoi(str);
bool b1 = yuwen > 70 && shuxue > 80 && yingyu > 90;
bool b2 = yuwen == 100 || shuxue == 100 || yingyu == 100;
bool b3 = yuwen > 90 && (shuxue > 70 || yingyu > 70);
if (b1 || b2 || b3)
{
cout << "非常棒,继续加油" << endl;
}
}
catch (const std::exception&)
{
cout << "请输入正确的数字,不能是小数" << endl;
}
定义变量存储小赵的考试成绩,如果成绩大于(含)90分,则爸爸奖励100元,否则一个月不能玩游戏。
int cj = 90;
if (cj >= 90)
cout << "爸爸奖励100元" << endl;
else
cout << "一个月不能玩游戏" << endl;
输入两个数 a
和 b
,如果两数可以整除或加起来大于100,则输出 a
的值,否则输出 b
的值。
try
{
cout << "请输入一个数" << endl;
string str;
cin >> str;
int a = stoi(str);
cout << "请再输入一个数" << endl;
cin >> str;
int b = stoi(str);
bool b1 = a % b == 0 || b % a == 0;
bool b2 = a + b > 100;
if (b1 || b2)
cout << a << endl;
else
cout << b << endl;
}
catch (const std::exception&)
{
cout << "请输入数字" << endl;
}
输入一个整数,如果是偶数则打印 “Your input is even”,否则打印 “Your input is odd”。
try
{
cout << "请输入一个数" << endl;
string str;
cin >> str;
int i = stoi(str);
if (i % 2 == 0)
cout << "Your input is even" << endl;
else
cout << "Your input is odd" << endl;
}
catch (const std::exception&)
{
}
输出三个整形变量中的最大值
int a = 500, b = 110, c = 25;
if (a > b && a > c)
cout << "最大的值是a" << endl;
else if (b > a && b > c)
cout << "最大的值是b" << endl;
else
cout << "最大的值是c" << endl;
接受用户输入的字符,如果是 0~9
的数字则显示“您输入了一个数字”,否则显示“这不是一个数字”。
cout << "请输入一个字符" << endl;
char c;
cin >> c;
int begin = '0';
int end = '9';
int askII = c;
if (askII >= begin && askII <= end)
cout << "输入的是一个数字" << endl;
else
cout << "你输入的不是数字" << endl;
用户名和密码验证
- 用户名是
admin
且密码是8888
则提示成功 - 用户名错误提示“用户名不存在”,否则提示“密码错误”
try
{
cout << "请输入用户名" << endl;
string name;
cin >> name;
cout << "请输入密码" << endl;
string password;
cin >> password;
if (name == "admin" && password == "8888")
{
cout << "登录成功" << endl;
}
else
{
if (name != "admin")
{
cout << "用户名不存在" << endl;
}
else
{
cout << "密码错误" << endl;
}
}
}
catch (const std::exception&)
{
}
根据年龄提供访问权限
try
{
cout << "请输入你的年龄" << endl;
string str;
cin >> str;
int age = stoi(str);
if (age >= 18)
cout << "你可以看" << endl;
else if (age >= 13 && age < 18)
{
cout << "是否继续查看(yes、no)" << endl;
cin >> str;
if (str == "yes")
cout << "请查看" << endl;
else
cout << "退出" << endl;
}
else
cout << "年龄不够,不能查看" << endl;
}
catch (const std::exception&)
{
cout << "请输入数字" << endl;
}
以下代码的打印结果
int a = 5;
if (a > 3)
{
int b = 0;
++b;
b += a;
}
cout << b << endl; // 报错,未声明变量 b
解析:变量 b
的作用域仅限于 if
语句块内,因此在块外引用 b
会导致编译错误。
21.4 练习题代码
Lesson21_练习题.cpp
#include <iostream>
#include <string>
using namespace std;
int main()
{
std::cout << "if语句练习题\n";
#pragma region 练习题一
//请用户输入今日看韬老狮视频花了多少分钟,如果大于60分钟,
//那么在控制台输出“今天看视频花了XX分钟,看来你离成功又进了一步!”
//打印输入 —— cout cin
//判断 —— 逻辑运算符 关系运算 算术运算符
//判断就可能产生分支 —— if else if else
cout << "请用户输入今日看韬老狮视频花了多少分钟" << endl;
try
{
string str;
cin >> str;
int time = stoi(str);
if (time >= 60)
{
cout << "今天看视频花了" + str + "分钟,看来你离成功又进了一步!" << endl;
}
else
{
cout << "你还需努力" << endl;
}
}
catch (const std::exception&)
{
cout << "请输入正确格式的时间" << endl;
}
#pragma endregion
#pragma region 练习题二
/*请输入你的 语文,数学,英语成绩,满足以下任意条件,则输出“非常棒,继续加油”
语文成绩大于70 并且 数学成绩大于80 并且英语成绩大于90
语文成绩等于100或者数学成绩等于100或者英语成绩等于100
语文成绩大于90 并且 其它两门中有一门成绩大于70*/
try
{
string str;
cout << "请输入语文成绩" << endl;
cin >> str;
int yuwen = stoi(str);
cout << "请输入数学成绩" << endl;
cin >> str;
int shuxue = stoi(str);
cout << "请输入英语成绩" << endl;
cin >> str;
int yingyu = stoi(str);
//语文成绩大于70 并且 数学成绩大于80 并且英语成绩大于90
bool b1 = yuwen > 70 && shuxue > 80 && yingyu > 90;
//语文成绩等于100或者数学成绩等于100或者英语成绩等于100
bool b2 = yuwen == 100 || shuxue == 100 || yingyu == 100;
//语文成绩大于90 并且 其它两门中有一门成绩大于70
bool b3 = yuwen > 90 && (shuxue > 70 || yingyu > 70);
if (b1 || b2 || b3)
{
cout << "非常棒,继续加油" << endl;
}
}
catch (const std::exception&)
{
cout << "请输入正确的数字,不能是小数" << endl;
}
#pragma endregion
#pragma region 练习题三
//定义一个变量,存储小赵的考试成绩,如果小赵的考试成绩大于(含)90分,
//那么爸爸奖励100元钱,否则一个月不能玩游戏
int cj = 90;
if (cj >= 90)
cout << "爸爸奖励100元" << endl;
else
cout << "一个月不能玩游戏" << endl;
#pragma endregion
#pragma region 练习题四
//要求用户输入两个数a、b,如果两个数可以整除或者这两个数加起来大于100,则输出a的值,否则输出b的值
//try
//{
// cout << "请输入一个数" << endl;
// string str;
// cin >> str;
// int a = stoi(str);
// cout << "请再输入一个数" << endl;
// cin >> str;
// int b = stoi(str);
// //两个数可以整除
// bool b1 = a % b == 0 || b % a == 0;
// //两个数加起来大于100
// bool b2 = a + b > 100;
// if (b1 || b2)
// cout << a << endl;
// else
// cout << b << endl;
//}
//catch (const std::exception&)
//{
// cout << "请输入数字" << endl;
//}
#pragma endregion
#pragma region 练习题五
//输入一个整数,如果这个数是偶数,则打印“Your input is even”,否则打印“Your input is odd”
try
{
cout << "请输入一个数" << endl;
string str;
cin >> str;
int i = stoi(str);
//能被2整除 就是偶数
if (i % 2 == 0)
cout << "Your input is even" << endl;
else
cout << "Your input is odd" << endl;
}
catch (const std::exception&)
{
}
#pragma endregion
#pragma region 练习题六
//有3个整形变量,分别存储不同的值,编写代码输出其中最大的整数
//int a = 500, b = 110, c = 25;
//if (a > b && a > c)
// cout << "最大的值是a" << endl;
//else if (b > a && b > c)
// cout << "最大的值是b" << endl;
//else
// cout << "最大的值是c" << endl;
#pragma endregion
#pragma region 练习题七
//写一个程序接受用户输入的字符,如果输入的字符是0~9数字中的一个,
//则显示“您输入了一个数字”,否则显示这不是一个数字
cout << "请输入一个字符" << endl;
char c;
cin >> c;
//相当于将字符转换为对应的ASKII码 然后判断码的范围
int begin = '0';
int end = '9';
int askII = c;
if (askII >= begin && askII <= end)
cout << "输入的是一个数字" << endl;
else
cout << "你输入的不是数字" << endl;
#pragma endregion
#pragma region 练习题八
//提示用户输入用户名,然后再提示输入密码,如果用户名是“admin”,并且密码是"8888",
//则提示正确,否则,如果用户名不是admin还提示用户用户名不存在,如果用户名是admin则提示密码错误
try
{
cout << "请输入用户名" << endl;
string name;
cin >> name;
cout << "请输入密码" << endl;
string password;
cin >> password;
if (name == "admin" && password == "8888")
{
cout << "登录成功" << endl;
}
else
{
if (name != "admin")
{
cout << "用户名不存在" << endl;
}
else
{
cout << "密码错误" << endl;
}
}
}
catch (const std::exception&)
{
}
#pragma endregion
#pragma region 练习题九
//提示用户输入年龄,如果大于等于18,则告知用户可以查看,如果小于13岁,则告知不允许查看,
//如果大于等于13并且小于18,则提示用户是否继续查看(yes、no),如果输入的是yes则提示用户请查看,
//否则提示“退出”。
try
{
cout << "请输入你的年龄" << endl;
string str;
cin >> str;
int age = stoi(str);
if (age >= 18)
cout << "你可以看" << endl;
else if (age >= 13 && age < 18)
{
cout << "是否继续查看(yes、no)" << endl;
cin >> str;
if (str == "yes")
cout << "请查看" << endl;
else
cout << "退出" << endl;
}
else
cout << "年龄不够,不能查看" << endl;
}
catch (const std::exception&)
{
cout << "请输入数字" << endl;
}
#pragma endregion
#pragma region 练习题十
/*请说明以下代码的打印结果(不要打一遍代码,请直接通过阅读说出结果)
int a = 5;
if (a > 3)
{
int b = 0;
++b;
b += a;
}
cout << b << endl;*/
//语句块外部声明的变量 可以在下面语句块内使用
int a = 5;
if (a > 3)
{
//语句块决定了 变量的生命周期 如果你在内部语句块中声明的变量
//是不能够在这个语句块外使用的
//内部语句块声明的内容 就不能拿出去用了
int b = 0;
++b;
b += a;
}
//cout << b << endl;//报错 未声明
#pragma endregion
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com