运行结果:
嵌套的控制结构、其他控制语句
例2-10 输入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束。 #include
int i = 0, j = 0, n;
cout <<\ cin >> n;
while (n != 0) {
if (n > 0) i += 1; if (n < 0) j += 1; cin >> n; }
cout << \ cout << \ return 0; }
运行结果:
其他控制语句 ● break语句
使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句。不宜用在别处。 ● continue 语句
结束本次循环,接着判断是否执行下一次循环。
● goto 语句
使程序的执行流程跳转到语句标号所指定的语句。不提倡使用。 2.5 自定义类型
类型别名:为已有类型另外命名 ● typedef 已有类型名 新类型名表
■ 例:
typedef double Area, Volume; typedef int Natural; Natural i1,i2; Area a; Volume v;
● using 新类型名 = 已有类型名;
■ 例:
using Area = double; using Volume = double;
枚举类型 ● 定义方式:
将全部可取值一一列举出来。 ● 语法形式:
enum 枚举类型名 {变量值列表};
例:enum Weekday {SUN, MON, TUE, WED, THU, FRI, SAT}; 默认情况下
SUN=0,MON=1,TUE=2,......,SAT=6
C++包含两种枚举类型: ● 不限定作用域枚举类型:
enum 枚举类型名 {变量值列表}; ● 限定作用域的enum类将在第4章介绍。 不限定作用域枚举类型说明: ● 枚举元素是常量,不能对它们赋值
例如有如下定义
enum Weekday {SUN, MON, TUE, WED, THU, FRI, SAT}; 不能写赋值表达式:SUN = 0
● 枚举元素具有默认值,它们依次为: 0,1,2,......。 ● 也可以在声明时另行指定枚举元素的值,如:
enum Weekday{SUN=7,MON=1,TUE,WED, THU,FRI,SAT}; ● 也可以在声明时另行指定枚举元素的值; ● 枚举值可以进行关系运算。
● 整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强
制类型转换。
● 枚举值可以赋给整型变量。 auto类型与decltype类型
● auto:编译器通过初始值自动推断变量的类型
■ 例如:auto val = val1 + val2;
如果val1+val2是int类型,则val是int类型;
如果val1+val2是double类型,则val是double类型。
● decltype:定义一个变量与某一表达式的类型相同,但并不用该表达式初始化变量
■ 例如:decltype(i) j = 2; 例2-11
● 设某次体育比赛的结果有四种可能:胜(WIN)、负(LOSE)、平局(TIE)、比赛取
消(CANCEL),编写程序顺序输出这四种情况。 ● 分析:
比赛结果只有四种可能,可以声明一个枚举类型。
#include
enum GameResult {WIN, LOSE, TIE, CANCEL}; int main() {
GameResult result;
enum GameResult omit = CANCEL;
for (int count = WIN; count <= CANCEL; count++) { result = GameResult(count); if (result == omit)
cout << \ else {
cout << \
if (result == WIN) cout << \ if (result == LOSE) cout << \ cout << endl; } }
return 0; }
运行结果:
2.6 深度探索