4.1.3 switch语句
作用:执行多条件分支语句
语法:
switch(表达式)
case 结果1:执行语句;break;
case 结果2:执行语句;break;
case 结果3:执行语句;break;
...
defalt: 执行语句; break;
#include <iostream>
using namespace std;
int main()
{
//switch语句
//给电影进行打分
//9~10 经典
//7~8 非常好
//5~6 一般
//5以下 烂片
//1.提示用户给电影评分
cout << "请给电影进行打分" << endl;
//2.用户开始进行打分
int score = 0;
cin >> score;
cout << "您打的分数为:" << score << endl;
//3.根据用户输入的分数来提示用户最后的结果
switch (score)
{
case 10:
case 9:
cout << "您认为是经典电影" << endl;
break;
case 8:
case 7:
cout << "您认为是非常好电影" << endl;
break;
case 6:
case 5:
cout << "您认为是一般电影" << endl;
break;
default:
cout << "您认为是烂片" << endl;
break;
}
//if和switch的区别
//switch缺点,判断是好只能是整型或字符型,不可以是一个区间
//switch优点:结构清晰,执行效率高
system("pause");
return 0;
}
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++;
}
system("pause");
return 0;
}
while循环练习案例:猜数字
#include <iostream>
using namespace std;
//time系统时间头文件包含
#include <ctime>
int main()
{
//添加随机数种子 利用当前系统时间生成随机数,防止每次随机数都一样
srand((unsigned int)time(NULL));
//1.系统生成随机数
int num = rand() % 100 + 1;//rand()%100 生成0~99的随机数,+1后生成1~100的随机数
//cout << "num = " << num << endl;
//2.玩家进行猜测
int val = 0;//玩家输入的数据(value)
int a = 0;//最多猜五次
cout << "请输入所猜数字,最多猜5次" << endl;
while (1) {
cin >> val;
a++;
//3.判断玩家的猜测
//猜对 退出游戏
//猜错 提示猜的结果 过大或过小 重新返回第2步
if (val > num) {
cout << "猜测过大" << endl;
}
else if (val < num) {
cout << "猜测过小" << endl;
}
else
{
cout << "恭喜您猜对了" << endl;
//猜对 退出游戏
break;// break 在循环中可利用break退出当前循环
}
//最多猜五次
if (a >= 5) {
cout << "很遗憾,猜测次数已经用完,您没能猜出结果" << endl;
break;
}
}
system("pause");
return 0;
}
4.2.2 do...while循环语句
语法:do{循环语句} while(循环条件);
注意:与while循环语句的区别在于,do...while会先执行一次循环语句,再判断循环条件
#include <iostream>
using namespace std;
int main()
{
//do...while语句
//在屏幕中输出0到9这十个数字
int num = 0;
do
{
cout << num << endl;
num++;
}
while (num < 10);
system("pause");
return 0;
}
练习案例:水仙花数
案例描述:水仙花数指的是一个3位数字,它的每一个位上的数字的3次幂之和等于该数字本身
例如:1^3+5^3+3^3=153
请利用do...while循环语句,求出所有3位数中的水仙花数
#include <iostream>
using namespace std;
int main()
{
//do...while语句
//在屏幕中输出0到9这十个数字
int num = 100;
int a = 0;
int b = 0;
int c = 0;
do
{
//获取个位:取模于10
a = num % 10;
//获取十位:先整除于10,得到两位数,再取模于10,得到十位数
b = num / 10 % 10;
//获取百位:直接除以100,整型变量之间乘除,结果依然是整型变量
c = num / 100;
//注意:^3不是算三次方,C++里面是pow(a,3),并且需要头文件<math.h>颇为
if ((a*a*a + b*b*b + c*c*c) == num)
{
cout << num << endl;
}
num++;
}
while (num < 1000);
system("pause");
return 0;
}
4.2.3 for循环语句
语法:for(起始表达式;条件表达式;末尾循环体){循环语句;}
注意:for循环中的表达式要用分号进行分隔
#include <iostream>
using namespace std;
int main()
{
//for循环
//从数字0打印到数字9
for (int i = 0; i < 10; i++)
{
cout << i << endl;
}
system("pause");
return 0;
}
练习案例:敲桌子
#include <iostream>
using namespace std;
int main()
{
for (int num = 1; num <= 100; num++) {
if ((num % 10 == 7) || (num / 10 == 7) || (num % 7 == 0)) {
cout << "敲桌子" << endl;
}
else {
cout << num << endl;
}
}
system("pause");
return 0;
}
4.2.4 嵌套循环
作用:在循环体中再嵌套一层循环,以解决实际问题
例如在屏幕中打印这样的图片
#include <iostream>
using namespace std;
int main()
{
//利用嵌套循环实现星图
//外层循环执行一次,内层执行一周
//外层循环
for (int i = 0; i < 10; i++)
{
//内层循环
for (int j = 0; j < 10; j++)
{
cout << "* ";
}
cout << endl;
}
cout << endl;
system("pause");
return 0;
}
练习案例: 乘法口诀表
案例描述:利用嵌套循环,实现九九乘法表
#include <iostream>
using namespace std;
int main()
{
//特点:列数 * 行数 = 计算结果
//列数 <= 当前行数
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++)
cout << j << "*" << i << "=" << i * j<<"\t";
cout << endl;
}
system("pause");
return 0;
}
4.3 跳转语句
4.3.1 break语句
作用:跳出选择结构或循环结构
#include <iostream>
using namespace std;
int main()
{
//break的使用时机
//1.出现在switch语句中
cout << "请选择副本难度" << endl;
cout << "1.普通" << endl;
cout << "2.中等" << endl;
cout << "3.困难" << endl;
int select = 0;//创建选择结果的变量
cin >> select;//等待用户的输入
switch (select)
{
case 1:
cout << "您选择的是普通难度" << endl;
break;//退出switch语句中
case 2:
cout << "您选择的是中等难度" << endl;
break;
case 3:
cout << "您选择的是困难难度" << endl;
break;
default:
break;
}
//2.出现在循环语句中
for (int i = 0; i < 10; i++)
{
//如果i等于5,退出循环
if (i == 5) {
break;
}
cout << i << endl;
}
//3.出现在嵌套循环语句中
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (j == 5) {
break;
}
cout << "* ";
}
cout << endl;
}
system("pause");
return 0;
}
4.3.2 continue语句
作用:在循环语句中,跳过本次循环中尚未执行的语句,继续执行下一次循环
注意:continue并没有使整个循环终止,而break会跳出循环
#include <iostream>
using namespace std;
int main()
{
//continue语句
for (int i = 0; i <= 100; i++) {
//如果是奇数输出,偶数不输出
if (i % 2 == 0) {
continue;
//break 会退出循环,而continue不会
}
cout << i << endl;
}
system("pause");
return 0;
}
4.3.3 goto语句
作用:可以无条件跳转语句。
语法:goto 标记;
解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置
#include <iostream>
using namespace std;
int main()
{
//goto语句
cout << "1.xxxxx " << endl;
cout << "2.xxxxx " << endl;
goto FLAG;
cout << "3.xxxxx " << endl;
cout << "4.xxxxx " << endl;
FLAG:
cout << "5.xxxxx " << endl;
system("pause");
return 0;
}
5.数组
5.1 概述
所谓数组,就是一个集合,里面存放了相同类型的数据元素
特点1:数组中的每个数据元素都是相同的数据类型
特点2:数组是由连续的内存位置组成的
一维数组定义的三种方式: