if,switch,循环结构,嵌套,自定义
if语句的表达形式
-
if(表达式)语句
例如:if(x>y) cout<<x; 如果x>y为真,就输出x,否则什么都不做
-
if(表达式)语句1else语句2
例如:if(x>y) cout<<x;
else cout<<y; 即如果x>y为真输出x,否则输出y
-
多重选择结构
if(表达式)语句1
else if(表达式)语句2
else if(表达式)语句3
....
else 语句n
也就是第一次先判断表达式1.为真执行语句1。为假判断表达式2,以此类推,如果都为假则自行语句n
例如:比较两个数的大小
#include<iostream>
using namespace std;
int main()
{
int x, y;
cout << "enter x and y:";
cin >> x >> y;
if (x != y)
if (x > y) cout<<"x>y" << endl;
else cout << "x<y" << endl;
else cout << "x=y" << endl;
return 0;
}
-
嵌套的if语句
语法形式
if()
if()语句1
else语句2
else
if()语句3
else语句4
每句1234可以是复合语句;每层的if与else配对,或者用{}来确定层次关系。
switch语句
-
switch语句的语法
switch(表达式)
{
case 常量表达式1:语句1
case 常量表达式2:语句2
.....
case 常量表达式n:语句n
default:语句n+1
}
-
执行顺序
以case中的常量表达式值为入口标号,由此开始顺序执行。因此每个case分支最后应该加break语句。
-
注意事项
case分支可包含多个语句,且不用{}
表达式,判断值都是int型或char型
如果若干分支执行内容相同可共用一组语句
循环结构while、do-while、for语句
-
while
- while语句的语法形式
while(表达式)语句
表达式应该是bool类型;语句可以为复合语句,其中必须含有改变表达式值的语句
- 执行顺序
先判断表达式的值,若为true,则执行语句。依次循环
-
do-while
- do-while语句的语法形式
do 语句
while(表达式)
语句可以是复合语句,其中必须含有改变表达式值的语句
-
for
- for语句语法形式
for(初始语句;表达式1;表达式2)语句
循环前先求解初始语句,表达式1为true时执行循环体,每次执行循环体后求解表达式2
- for语句的另外一种形式:范围for语句:
for(声明:表达式)语句 主要用于遍历一个容器中的序列
嵌套的控制结构、其他控制语句
例如:输入一系列整数,统计出正整数个数i和负整数个数j,直到输入0结束。
#include <iostream>
using namespace std;
int main()
{
int i = 0, j = 0, n;
cout << "请输入一系列数字" << endl;
cin >> n;
while (n != 0) {
if (n > 0) i = i + 1;
if(n < 0) j = j + 1;
cin >> n;
}
cout << "正整数个数为" << i << endl;
cout << "负整数个数为" << j << endl;
return 0;
}
-
其他控制语句
- break语句
使循环从循环体和switch语句内跳出,继续执行逻辑上的下一条语句。不宜用在别处。
- continue语句
结束本次循环,接着判断是否执行下一次循环
- goto语句
使程序的执行流程跳转到语句标号所指定的语句。
自定义类型
-
枚举类型
-
不限定作用域枚举类型
- 定义方式
将全部可取值一一列举出来
- 语法形式
enum 枚举类型名{变量值列表}
enum weekday {sun,mon,tue,wed,thu,fri,sat}
默认情况下从0-6
- 不限定作用域枚举类型说明:
枚举元素是常量,不能对它们赋值。例如:num weekday {sun,mon,tue,wed,thu,fri,sat} 不能写赋值表达式sun=0
枚举元素具有默认值
也可以在声明时另行指定枚举元素的值。如:num weekday {sun=7,mon=1,tue,wed,thu,fri,sat}
枚举值可以进行关系运算
整数值不能直接赋值给枚举变量,如果需要将整数值赋值给枚举变量,应进行强制类型转换
枚举值可以赋给整型变量
例如:一次比赛有四种可能,胜、负、平局、比赛取消。顺序输出。
#include<iostream>
using namespace std;
enum gameresult { win, lose, tie, cancle };
int main() {
gameresult result;
enum gameresult omit = cancle;
for (int count = win; count <= cancle; count++) {
result = gameresult(count);
if (result == omit)
cout << "the game was cancelled" << endl;
else {
cout << "the game was played" << endl;
if (result == win)
cout << "win" << endl;
if (result == lose)
cout << "lose" << endl;
}
}
return 0;
}
- aoto类型与delctype类型
auto:编译器通过初始值自动推断变量的类型
例如:auto val=val1+val2 如果val1+val2 是int类型,则val是int类型;如果val1+val2 是double类型,则val是double类型。
delctype:定义一个变量与某一表达式的类型相同,但不用该表达式初始化变量。
例如:delctype(i)j=2 表示j以2作为初始值,类型与i一致
浙公网安备 33010602011771号