引言
4.1 选择结构
4.1.1 if语句
作用:执行满足条件的语句
if 语句的三种形式
单行格式if语句
#include <iostream>
using namespace std;
int main()
{
//选择结构if语句
//用户输入分数,如果分数大于600分,则考上一本大学,在屏幕上输出
// 1.用户输入分数
int score;
cout << "请输入你的分数= " ; // 不写endl 代表不换行
cin >> score;
// 2.打印用户输入的分数
cout << "你输入的分数为" << score << endl;
// 3.判断你输入的分数是否大于600
if(score >600){
cout << "恭喜你考上了一本大学" << endl;
}
return 0;
}
多行格式if语句
#include <iostream>
using namespace std;
int main()
{
//选择结构 - 多行if语句
//用户输入分数,如果分数大于600分,则考上一本大学,在屏幕上输出,否则输出,没有考上一本大学
// 1.用户输入分数
int score;
cout << "请输入你的分数= " ; // 不写endl 代表不换行
cin >> score;
// 2.打印用户输入的分数
cout << "你输入的分数为" << score << endl;
// 3.判断你输入的分数是否大于600
if(score >600)
{
cout << "恭喜你考上了一本大学" << endl;
}else
{
cout << "没有考上一本大学" << endl;
}
return 0;
}
多条件的if语句
#include <iostream>
using namespace std;
int main()
{
//选择结构 - 多条件if语句
//用户输入分数,如果分数大于600分,则考上一本大学,
// 分数大于500分,考上二本大学
// 分数大于400分,考上三本大学
// 分数小于等于400分,未考上本科。
// 1.用户输入分数
int score;
cout << "请输入你的分数= " ; // 不写endl 代表不换行
cin >> score;
// 2.打印用户输入的分数
cout << "你输入的分数为" << score << endl;
// 3.判断你输入的分数是否大于600
if(score >600)
{
cout << "恭喜你考上了一本大学" << endl;
}
else if(score>500)
{
cout << "恭喜你考上了二本大学" << endl;
}
else if(score>400)
{
cout << "恭喜你考上了三本大学" << endl;
}
else
{
cout << "没考上本科" << endl;
}
return 0;
}
嵌套if语句
在if语句中,可以嵌套if语句,达到更精准的判断
案例需求:
提示用户输入一个分数,根据分数做判断
分数大于600分,则考上一本大学,分数大于500分,考上二本大学,分数大于400分,考上三本大学,都不满足,没考上本科
在一本分数中,如果分数大于700分,考入北大,大于650分,考入清华
#include <iostream>
using namespace std;
int main()
{
//嵌套if 语句
// 1.用户输入分数
int score;
cout << "请输入你的分数= " ; // 不写endl 代表不换行
cin >> score;
// 2.打印用户输入的分数
cout << "你输入的分数为" << score << endl;
// 3.判断你输入的分数是否大于600
if(score >600)
{
cout << "恭喜你考上了一本大学" << endl;
if (score>700)
{
cout << "恭喜你考入了北大" << endl;
}
else if(score>750)
{
cout << "恭喜你考入了清华" << endl;
}
}
else if(score>500)
{
cout << "恭喜你考上了二本大学" << endl;
}
else if(score>400)
{
cout << "恭喜你考上了三本大学" << endl;
}
else
{
cout << "没考上本科" << endl;
}
return 0;
}
练习案例:三只小猪称体重
有三只小猪ABC,请分别输入三只小猪的体重,并判断那只小猪体重最重?
#include <iostream>
using namespace std;
int main()
{
//案例:三只小猪称体重
//1.创建三只小猪的重量
int a,b,c;
// 2.让用户输入三只小猪的体重
cout << "分别输入三只小猪的分数" << endl;
// cin >>a,b,c; // cin不支持多个变量一起输入
cout << "请输入小猪a的体重 ";
cin >> a;
cout << "请输入小猪b的体重 ";
cin >> b;
cout << "请输入小猪c的体重 ";
cin >> c;
// 3.打印用户输入小猪的体重
cout << "小猪a体重=" <<a << endl;
cout << "小猪b体重=" <<b << endl;
cout << "小猪c体重=" <<c << endl;
// 4.进行判断,找出那只小猪的体重最重
if (a>b) //a比b重
{
if(a>c) //a比c重
{
cout << "小猪a的体重最重" << endl;
}
else //c比a重
{
cout << "小猪c的体重最重" << endl;
}
}
else //b比a重
{
if (b>c) //b比c重
{
cout << "小猪b的体重最重" << endl;
}
else //c比b重
{
cout << "小猪c的体重最重" << endl;
}
}
return 0;
}
此案例,还不算完善,没有判断体重相等的情况,大家可以自行思考一下,补全代码。
4.1.2 三目运算符
作用:通过三目运算符实现简单的判断
语法:表达式1?表达式2:表达式3
解释:
如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
如果表达式1的值为假,执行表达式3,并返回表达式3的结果。
#include <iostream>
using namespace std;
int main()
{
//三目运算符
//创建三个变量a,b,c
int a,b,c;
a = 10;
b = 20;
//将a和b做比较,将变量大的值赋值给c
c = (a>b?a:b);
cout <<"c的值=" << c << endl;
//在C++中三目运算符返回的是变量,可以继续赋值
(a>b?a:b) = 100; // 进行判断,如果a大于b,将a的值赋给100,否则将b的值赋值给100
cout << "a=" << a << endl;
cout << "b=" << b << endl;
return 0;
}
4.1.3 switch语句
作用:执行多条件分支语句
语句:
#include <iostream>
using namespace std;
int main()
{
//switch语句
//给电影进行打分操作
// 10~9 经典
// 8~7 非常好
// 6~5 一般
// 5以下 烂
// 1.提示用户给电影打分
cout << "请给电影进行打分" << endl;
// 2.用户输入分数
int score;
cin >> score;
cout << "你打的分数是" << score << endl;
// 3.根据分数输出结果
switch(score)
{
case 10: //注意:这里是冒号,不是分号
cout << "你认为是经典电影" << endl;
break; // 代表退出当前分支,如果你不写break,条件会一直走。不会中止
case 9:
cout << "你认为是经典电影" << endl;
break;
case 8:
cout << "你认为是电影非常好" << endl;
case 7:
cout << "你认为是电影非常好" << endl;
break;
case 6:
cout << "你认为电影一般" << endl;
break;
case 5:
cout << "你认为电影一般" << endl;
break;
default: //如果以上条件都没,则执行以下代码 ,条件超出10分,也会执行,可以先进性判断在执行以下代码
cout << "你认为电影烂" << endl;
}
return 0;
}
if和switch区别?
// switch缺点,判断时候只能是整型或者字符型,不可以是一个区间
// switch优点,结构清晰,执行效率高。
4.2 循环结构
4.2.1 while循环语句
作用:满足循环条件,会一直执行
语法:while(循环条件){循环语句}
#include <iostream>
using namespace std;
int main()
{
//while 循环
// 在屏幕中打印0~9这10个数字
int num = 0;
while (num<10){ // 注意在写循环中,避免死循环
cout << num << endl;
num++;
}
return 0;
}
while循环练习案例:猜数字
案例描述:系统随机生成一个1到100之间的数字,玩家进行猜测,如果猜错,提示猜大了,还是猜小了,猜对了用户胜利。
#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
//while 循环案例
// 1.系统生成随机数
// int num = rand()%100; //C++中使用rand生成随机数,此函数会生成0~99的随机数,需要加1生成100
// num += 1; //因为次数的生成的随机数是伪随机数,所以每次都是42
// 如果想生成真正的随机数,需要添加随机数种子,利用当前系统时间生成随机数,防止每次随机数都一样。
srand((unsigned int)time(NULL)); //此处最好是添加一个头文件 ctime
int num = rand()%100 +1;
cout << "系统生成的随机数是" << num << endl;
// 2.用户进行猜测
while(true)
{
int val;
cout << "用户进行输入" << endl;
cin >> val;
// 3.进行判断
if (val>num)
{
cout << "猜测过大" << endl;
}
else if(val<num)
{
cout << "猜测过小" << endl;
}
else
{
cout << "猜测正确" << endl;
break;
}
}
return 0;
}
4.2.2 do...while循环语句
作用:满足循环条件,执行循环语句
语法:do{循环语句}while(循环条件);
注意:与while的区别在于do...while会先执行一次循环语句,在判断循环条件。
#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
//do while语句
// 在屏幕中输出0~9 这10个数字
int num = 0;
do
{
cout << num << endl;
num++;
}
while(num<10);
return 0;
}
#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
//do while语句
// 求出所有三位数的水仙花树
// 1.找出所有的三位数(100~999)
int num = 100;
do{
// 2.找出水仙花树
// 获取个位 %10
// 获取十位 /10%10
// 获取百位 /100
int a; // 个位
int b; // 十位
int c; // 百位
a = num%10;
b = num/10%10;
c = num/100;
// 3.判断,如果个位^3 +十位^3+百位^3 = num
if((a*a*a + b*b*b +c*c*c) == num)
{
cout << num << endl;
}
// cout << num << endl;
num++;
}
while(num<1000);
return 0;
}
4.2.3 for循环语句
作用:满足循环条件,执行循环语句
语法:for(起始表达式;条件表达式;末尾循环体){循环语句;}
#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
//for循环
//打印0~9
int num;
for(num=0;num<10;num++)
{
cout << num << endl;
}
return 0;
}
练习案例:敲桌子
案例描述:从1开始数到数字100,如果数字个位含有7,或者数字十位含有7,或者该数字是7的倍数,我们打印敲桌子,其余数字直接打印输出。
#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
//for循环
int num;
for(num=1;num<=100;num++)
{
if (num%7 ==0 ||num%10 ==7 or num/10 ==7 )
{
cout << "敲桌子" << endl;
}
else
{
cout << "num=" << num << endl;
}
}
return 0;
}
4.2.4 循环嵌套
作用:在循环体内,在嵌套一层循环,解决实际问题。
案例:打印99乘法表
#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
//打印99乘法表
for(int i=1;i<10;i++)
{
for(int j=1;j<=i;j++)
{
cout << j <<"*" << i << "=" << i*j<< "\t";
}
cout << endl;
}
return 0;
}
4.3 跳转语句
4.3.1 break语句
#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
// break;
// 1.出现在是switch中
/*
cout << "请选择副本的难度" << endl;
cout << "1.普通" << endl;
cout << "2.中等" << endl;
cout << "3.困难" << endl;
int select;
cin >> select;
switch(select){
case 1:
cout << "你选择了普通难度副本" << endl;
break;
case 2:
cout << "你选择了中等难度副本" << endl;
break;
case 3:
cout << "你选择了困难难度副本" << endl;
break;
default:
break;
}
*/
// 2.出现在循环语句中
/*
for(int i=0;i<10;i++)
{
cout << i << endl;
if (i == 5)
{
break;
}
}
*/
// 3.出现在嵌套循环语句中
for(int num=1;num<10;num++)
{
for(int num1=1;num1<=num;num1++)
{
if (num == num1)
{
cout << num << endl;
break; //退出循环,只退出了内层循环
// continue; // 跳过后续语句,进入下一次循环
cout << "相同" << endl;
}
}
}
}
4.3.2 continue语句
作用:在循环语句中,跳过当前循环,执行下一次代码
#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
// continue
for(int i = 0;i<10;i++)
{
if (i== 5)
{
continue;
cout << i << endl; // continue之后的代码不执行
}
cout << i << endl;
}
return 0;
}
4.3.3 跳转语句
语法:goto标记
解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置
#include <iostream>
//#include <ctime>
using namespace std;
int main()
{
// goto语句
cout << "1" << endl;
cout << "2" << endl;
goto A; // 一般goto后面加个大写字母
cout << "3" << endl;
cout << "4" << endl;
A: // 标记加冒号,可以直接跳转
cout << "5" << endl;
return 0;
}