1.选择结构:又称分支结构,是根据某个或某些条件,从若干个操作中选择某个操作 执行的一种控制结构。 选择结构分为以下三种: (1)单分支选择结构 (2) 双分支选择结构 (3)多分支选择结构.
2.if
if (条件表达式 1) { 语句块 1; }
else if (条件表达式 2) { 语句块 2; }
else if (条件表达式 n) { 语句块 n; }
else { 语句块 n+1; }
3.switch
switch(表达式){ case 常量值 1: 语句块 1;break;
case 常量值 2: 语句块 2;break;
case 常量值 n: 语句块 n; break;
[default: 语句块 n+1;]
(1)如果常量表达式的量与所有 case 语句的常量都不相符,就执行 default 语句中的程序。
(2)default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么在 switch 中就什么都不执行。接着执行后续代码。
(3)只能针对基本数据类型中的整型类型使用 switch,这些类型包括 int、char 等。对 于其他类型,则必须使用 if 语句。
(4)switch()的参数类型不能为浮点数,字符串。(必须是整型类型)。
(5) 标签必须是常量表达式(constantExpression),如 42 或者'4'+20。
(6)case 标签必须是惟一常量;也就是说,不允许两个 case 具有相同的常量值。
4.break和 continue 关键字
break:一旦执行,就结束当前循环结构
continue:一旦执行,就结束当次循环结构
5.分支结构嵌套
例:出票系统:根据淡旺季的月份和年龄,打印票价。要求,月份和年龄从键盘获取 输入
旺季: 成人(18-60):60 儿童(< 18):半价 老人(> 60):1/3
淡季: 成人 : 40 其他 : 20
int a,b;
printf("请输入月份和年龄");
scanf_s("%d%d", &a,&b);//a为月份,b为年龄
if (a>=4&&a<=10)
{
if(b<=18&&b>=60)
{ printf("60$"); }
else if(b<18)
{ printf("30$"); }
else
{printf("20$");}
}
else
{
if(b <= 18 && b >= 60)
{ printf("40$"); }
else
{printf("20$");}
}
6.循环结构:循环语句具有在某些条件满足的情况下,反复执行特定代码的功能。循环结构四要素:循环变量初始化 、循环条件 、循环体 、循环变量迭代。
7.for
for (①初始化部分; ②循环条件部分; ④迭代部分){ ③循环体部分; }
(1)for(;;)中的两个;不能多也不能少
(2)初始化部分,用于初始化循环变量,只执行一次。可以声明多个变量,但必 须是同一个类型,用逗号分隔
(3) ②循环条件部分,只要为 true ,就会不断执行循环体;当值为 false 时,退出循环
(4) ④迭代部分,每轮循环结束后执行,使得循环变量发生变化。可以有多个变量更新,用逗号分隔
8.while
①初始化部分
while(②循环条件部分){ ③循环体部分; ④迭代部分; }
(1) while(循环条件部分)中循环条件为非零值,表示 true、真;为零值,表示 false、假。
(2)注意不要忘记声明④迭代部分。否则,循环将不能结束,变成死循环。
(3) for 循环和 while 循环可以相互转换。二者没有性能上的差别。实际开发中,根据具体结构的情况,选择哪个格式更合适、美观。
(4)for 循环与 while 循环的区别:初始化条件部分的作用域不同。
9.do while
①初始化部分;
do{ ③循环体部分 ④迭代部分 }
while(②循环条件部分);
(1)do{}while();最后有一个分号
(2)do-while 结构的循环体语句是至少会执行一次,这个和 for 和 while 是不一样的
(3)循环的三个结构 for、while、do-while 三者是可以相互转换的
10.ATM取款问题,声明变量 balance 并初始化为 0,用以表示银行账户的余额,下面通过 ATM 机程序实现存款,取款等功能。
double ban = 0;
int opnum;
double add, sub;
_Bool esc = 0;
do
{
printf("==========ATM=========\n");
printf("\t1.存款\n\t2.取款\n\t3.显示余额\n\t4.退出\n");
scanf_s("%d", &opnum);
switch (opnum)
{
case 1:
printf("输入存款数:\n");
scanf_s("%lf", &add);
ban += add;
break;
case 2:
printf("输入取款数:\n");
scanf_s("%lf", &sub);
if (sub <= ban)
{
ban = ban - sub;
}
else
{
printf("余额不足\n");
}
break;
case 3:
printf("款数=:%.2lf\n", ban);
break;
case 4:
esc = 1;
break;
}
if (esc)
{
break;
}
} while (1);
11.循环嵌套
是指一个循环结构 A 的循环体是另一个循环结构 B。比如,for 循环里面还有一个 for 循环,就是嵌套循环。其中,for ,while ,do-while 均可以作为外层循环或内层循环。
for(初始化语句①; 循环条件语句②; 迭代语句⑦)
{ for(初始化语句③; 循环条件语句④; 迭代语句⑥) { 循环体语句⑤; } }