4程序流程结构
最基本三种结构:
1)顺序结构:程序按顺序执行,不发生跳转;
2)选择结构:依据条件是否满足,有选择的执行相应功能;
3)循环结构:依据条件是否满足,循环多次执行;
4.1选择结构
4.1.1 if语句
作用:执行满足条件的语句
三种形式:
单行if语句
语法:if(条件语句)(条件满足时执行)
多行if语句
语法:if(条件)(条件满足时执行)else(条件不满足时执行)
多条件if语句
语法:if(条件1)(条件1 满足时执行)else if(条件2)(条件2满足时执行)…else if(条件n)(条件n满足时执行)else(都不满足时执行)
int a = 1;
cout << "请输入一个分数:" << endl;
cin >> a;
if (a >= 90)
{
cout << "优秀" << endl;
}
else if (a >= 70)
{
cout << "良好" << endl;
}
else if (a >= 60)
{
cout << "及格" << endl;
}
else
{
cout << "不及格" << endl;
}
案例:三只小猪称体重,判断谁最重?
#include <iostream>
using namespace std;
int main()
{
int a = 1;
int b = 1;
int c = 1;
cout << "请输入a的体重:" << endl;
cin >> a;
cout << "请输入b的体重:" << endl;
cin >> b;
cout << "请输入c的体重:" << endl;
cin >> c;
if (a > b)
{
if (a > c)
{
cout << "a最重" << endl;
}
else
{
cout << "c最重" << endl;
}
}
else
{
if (b > c)
{
cout << "b最重" << endl;
}
else
{
cout << "c最重" << endl;
}
}
system("pause");
return 0;
}
4.1.2三目运算符
作用:通过三目运算符实现简单的判断
语法:表达式1?表达式2:表达式3
如果表达式1的值为真,执行表达式2,并返回表达式2 的结果;
如果表达式1的值为假,执行表达式3,并返回表达式3 的结果;
eg:比较a和b的大小,并把最大值赋给c
#include <iostream>
using namespace std;
int main()
{
int a = 13;
int b = 17;
int c = 1;
a > b ? c = a : c = b;//或者 c= (a>b?a:b);
cout << "c=" << c << endl;
system("pause");
return 0;
}
三目运算符返回的是变量,可以继续赋值:(a>b?a:b)=100; 输出b=100,a=13
4.1.3switch语句
作用:执行多条件分支
语法:
switch(表达式)
{
case结果1:执行语句,break;
case结果2:执行语句,break;
case结果3:执行语句,break;
…
default :执行语句,break;
}
eg:给电影评分
int core = 0;
cout << "请输入一个分数" << core << endl;
cin >> core;
cout << "您输入的分数为" << core << endl;
switch (core)
{
case 5:cout << "这是一个烂片" << endl; break;
case 8:cout << "这是一个hao片" << endl; break;
case 10:cout << "这是一个h片" << endl; break;
default :cout << "这是一个w片" << endl; break;
}
if和switch的区别:
1)switch判断时只能是整数型或者字符型,而不能是一个区间;
2)switch结构清晰,执行效率高;
4.2循环结构
4.2.1while循环语句
先判断,在执行
作用:满足循环条件,执行循环语句
语法:while(循环条件){循环语句}
eg:打印0~9
int a = 0;
while (a <10)
{
cout << a << endl;
a++;
}
案例:生成一个随机数,玩家进行猜测,如果猜错了,则提示过大或过小,如果猜对了则提示恭喜猜对了并退出游戏;
注:rand()生成一个随机数
#include <iostream>
using namespace std;
int main()
{
srand((unsigned int)time(NULL));//添加随机种子,作用是:利用当前系统时间生成随机数,防止每次随机数都一样
//生成一个随机数
int num = rand() % 100 + 1;//在0+1~99+1之间生成一个随机数,单独用rand()时,每次游戏生成的随机数都一样
int num2 = 0;//玩家输入一个数
while (num != num2)
{
cin >> num2;
cout << "你输入的是" << num2 << endl;
if (num > num2)
{
cout << "你输入的过小" << endl;
}
else
{
cout << "你输入的过大" << endl;
}
}
cout << "恭喜你,猜对啦" << endl;
system("pause");
return 0;
}
4.2.2 do…while循环
先执行,再判断
EG:在屏幕上输出0~9
int a = 0;
do
{
cout << a << endl;
a++;
}
while (a < 10);
案例:一个三位数,若它的每个位上的数字的三次幂之和加起来仍等于它本身,则称这个数为水仙花数,eg:1^3+555+333=153.用do…while语句,求出所有三位水仙花数
int num = 100;
do
{
int a = 0;
int b = 0;
int c = 0;
a = num % 10;//获得个位数;
b = num / 10 % 10;//获得十位数;
c = num /100;//获得百位数;
if ( a*a*a +b*b*b+c*c*c==num)
{
cout << num << endl;
}
num++;
} while (num < 1000);
4.2.3for循环
语法:for(起始表达式;条件表达式;末尾循环体){循环语句;}
eg:输出0·9
for (int i = 0; i < 10; i++)
{
cout << i << endl;
}
案例:敲桌子:从1开始数到100,如果数字个位数含有7,或者数字十位数含有7,或者数字是7的倍数,则打印敲桌子,其余数字直接打印
for (int i = 1; i <= 100; i++)
{
int a = 0;
int b = 0;
a = i % 10;//得到个位数
b = i / 10;//得到十位数
if (a == 7 ||b == 7 || i % 7 == 0)//个位数为7或者十位数为7或者为7的倍数
{
cout << "敲桌子" << endl;//满足其中一个条件
}
else
{
cout << i << endl;
}
}
4.2.4嵌套循环
打印10X10的*图
for (int i = 1; i <= 10; i++)
{
for (int j = 1; j <= 10; j++)
{
cout << "# ";
}
cout << endl;
}
效果:
案例:打印九九乘法表;
{
for (int j = 1; j <=i; j++)
{
cout <<j<<"*"<<i<<"="<<j*i<<" ";
}
cout << endl;
}
结果:
4.3跳转语句
4.3.1break语句
作用:用于跳出选择结构或者循环结构
使用时机:
1)出现在switch条件语句中,作用是终止case并跳出switch;
2)出现在循环语句中,作用是跳出当前的循环语句;
3)出现在嵌套环中,跳出最近的内层循环语句;
4.3.2continue语句
作用:在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环;
在0·100中输出奇数;
for (int i = 1; i <= 100; i++)
{
if (i % 2 == 0)
{
continue;
}
cout << i << endl;
}
4.3.3goto语句
作用:可以无条件跳转语句
语法:goto 标记;
解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置;