目录
1、 分支结构的作用就是将 C 语言的代码引入歧途
那么光有关系表达式和逻辑表达式还不足以实现分支结构,还需要学习一个新的语句——if 语句。
if 语句的实现有好几种形式,我们逐一给大家介绍一下。
第一种:
…… // 其它语句
if (表达式)
{
…… // 逻辑值为真所执行的语句、程序块
}
…… // 其它语句
第一种是最简单的,if 后边小括号内填写返回逻辑值的表达式,当然你可以直接填入一个逻辑值,当你填入这个值为非 0 的时候,编译系统就会认为这个逻辑值是真;只有当你填入 0 的时候,才被认为是假的。
第二种:
…… // 其它语句
if (表达式)
{
…… // 表达式的逻辑值为真所执行的语句、程序块
}
else
{
…… // 表达式的逻辑值为假所执行的语句、程序块
}
…… // 其它语句
第三种:
…… // 其它语句
if (表达式1)
{
…… // 表达式 1 的逻辑值为真所执行的语句、程序块
}
else if (表达式2)
{
…… // 表达式 2 的逻辑值为真所执行的语句、程序块
}
else if (表达式3)
{
…… // 表达式 3 的逻辑值为真所执行的语句、程序块
}
.
.
.
else if (表达式n)
{
…… // 表达式 n 的逻辑值为真所执行的语句、程序块
}
else
{
…… // 上面所有表达式的逻辑值均为假所执行的语句、程序块
}
…… // 其它语句
2、switch语句和分支嵌套
1. switch 语句
…… // 其它语句
switch (表达式)
{
case 常量表达式 1: 语句或程序块;
case 常量表达式 2: 语句或程序块;
……
case 常量表达式 n:语句或程序块;
default: 语句或程序块;
}
…… // 其它语句
-
这里每个 case 后边的常量是匹配 switch 后边表达式的值
-
case 后边必须跟一个常量值,而不能是一个范围
-
如果所有的 case 均没有匹配的,那么执行 default 的内容
-
default 是可选的,如果没有 default,并且所有的 case 均不匹配,那么 switch 语句不执行任何动作
2. 使用 break 语句跳出
switch 语句中的 case 和 default 事实上都是“标签”,用来标志一个位置而已。当 switch 跳到某个位置之后,就会一直往下执行,所以我们这里还需要配合一个 break 语句,让代码在适当的位置跳出 switch。
3. 分支结构的嵌套
如果在一个 if 语句中包含另一个 if 语句,我们就称之为 if 语句的嵌套,也叫分支结构的嵌套。
2. 使用 break 语句跳出
switch 语句中的 case 和 default 事实上都是“标签”,用来标志一个位置而已。当 switch 跳到某个位置之后,就会一直往下执行,所以我们这里还需要配合一个 break 语句,让代码在适当的位置跳出 switch。
3. 分支结构的嵌套
如果在一个 if 语句中包含另一个 if 语句,我们就称之为 if 语句的嵌套,也叫分支结构的嵌套。
4. 注意
悬挂 else
最好是加大括号解决!
等于号带来的问题
等于和赋值混淆,多注意!
3、课后习题(编程题)
第一题
要求用户输入一个字符,如果是大写字母,将其转换为小写;如果是小写字母,将其转换为大写;其他字符不做处理,并输出结果。
代码
#include <stdio.h>
int main()
{
char ch;
printf("请输入一个字符:");
scanf("%c", &ch);
if (ch >= 'A' && ch <= 'Z')
{
ch = ch + 32; // ch加32,变成小写,然后赋值回ch
}
else if (ch >= 'a' && ch <= 'z')
{
ch = ch - 32; // 同上
}
printf("%c\n", ch);
return 0;
}
结果
第二题
A. 通过调用 getHeartRate() 函数可以获得用户当前的心率。otW$}{.Q
- 该函数没有参数;返回用户当前的心率,返回值是整型。
- 比如 i = getHeartRate(),表示获得用户当前的心率,并赋值给变量 i。
- 该函数定义在头文件 ssebtr1.h 中(#include "ssebtr1.h")。
B. 通过调用 playSound() 函数播放指定节奏的音乐。JNxtW
- 该函数有一个参数,用于指定待播放音乐的 BPM(次心跳/分钟);如果该函数成功调用并播放,返回值为 0,如果找不到对应 BPM 的音乐或调用失败,返回值为 -1。
- 该函数定义在头文件 ssebtr1.h 中(#include "ssebtr1.h")。
- 程序刚开始默认播放 BPM == 150 的音乐,每次提升或降低的单位为 20。
C. 最高心率 == 220 – 用户年龄<'q8BJ^
-vZFekBc]il:X}>=;D#j(,_2^|
D. 耐力跑心率保持在:最高心率 * 75% ~ 最高心率 * 85%a.iQOUj
Rn^'2E4q~1AlY!ISNePGi|KD;wB3+0
OK,请根据下边流程图写代码
代码
#include <stdio.h>
int getHeartRate();
void playSound(int bpm);
int main()
{
int age,max_hr,bpm,hr;
printf("请输入您的年龄:");
scanf("%d",&age);
max_hr = 220-age;
bpm = 150;
// playSound(bpm);
hr = getHeartRate();
if(hr>max_hr)
{
printf("请马上停止跑步,否则会有生命危险...\n");
}
else if(hr>max_hr*0.85)
{
printf("请放慢脚步\n");
bpm = bpm -20;
playSound(bpm);
}
else if(hr<max_hr*0.75)
{
printf("Come on,请加快节奏!\n");
bpm = bpm +20;
playSound(bpm);
}
else
{
playSound(bpm);
}
return 0;
}
int getHeartRate()
{
int i = 160;
return i;
}
void playSound(int bpm)
{
printf("bpm=%d\n",bpm);
}
结果