跳转至

『C语言教程』2. 分支结构

T09:03:00+08:00

一、相关运算符

1.1 关系运算符

关系运算符 名称/含义
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于

1.2 逻辑运算符

逻辑运算符 名称/含义 备注 通俗易懂
&& 左右都满足时为真,否则为假 (并且)
|| 左右任意一个满足即为真,否则为假 (或者)
! 右侧值为假时为真,否则为假 (真变假,假变真 假作真时真亦假

二、if 语句

if 语句是最常用的分支语句,可以搭配 else 实现复杂的分支结构。

1.1 用法

C
1
2
3
if (/* expression */)
    // Do something...
// ...

expression (表达式)

  • 得到的值为0时,称该表达式的值为假
  • 得到的值非0时,称该表达式的值为真
  • expression 的值为真时,执行 if() 之后紧随的一个句子,随后继续执行下方语句(... 处)
  • expression 的值为假时,直接继续执行下方语句(... 处)

还可以配合 else 使用

C
1
2
3
4
5
if (/* expression */)
    // Do something...
else
    // Do some other thing...
// ...
  • expression 的值为真时,执行 if() 之后紧随的一个句子,随后继续执行下方语句(... 处)
  • expression 的值为假时,执行 else 之后紧随的一个句子,随后继续执行下方语句(... 处)

所谓 紧随的一个句子 即意为以下写法都是等价的,不受空格、换行、制表符、缩进影响:

C
if (/* expression */) // Do something...
else // Do some other thing...
// ...

if (/* expression */) // Do something...
else                  // Do some other thing...
// ...

if (/* expression */)
    // Do something...
else
    // Do some other thing...
// ...

当需要做的事情不止有一句话时可以用大括号括起来:

C
if (/* expression */) {
    // Do something...
    // Do something...
    // Do something...
} else {
    // Do some other thing...
    // Do some other thing...
    // Do some other thing...
}
// ...

同时也可以进行嵌套:

C
if (/* expression */) {
    // Do something...
    if (/* expression */)
        // Do something...
    // Do something...
} else {
    if (/* expression */)
        // Do something...
    else
        // Do some other thing...
    // Do some other thing...
    // Do some other thing...
    // Do some other thing...
}
// ...

else{ if... } 这种写法也可以用 else if() 来写(可以将 if... 整体当作一句话 ),即下面的写法是等价的:

C
if (/* expression */) {
    // Do something...
} else {
    if (/* expression */)
        // Do something...
    else
        // Do some other thing...
    // Do some other thing...
}
// ...

if (/* expression */)
    // Do something...
else if (/* expression */)
    // Do something...
else
    // Do some other thing...
    // Do some other thing...
// ...

可以无限这样写下去...

1.2 例

输入:两个整数 ab

输出:x is bigger ,其中 x 为代表更大的一个的数的字母( ab

C
1
2
3
4
5
6
7
8
#include <stdio.h>

int main() {
    int a, b; scanf("%d%d", &a, &b);
    if (a > b) printf("a");
    else       printf("b");
    printf(" is bigger.\n");
}

输入:一个整数 y 表示年份

输出:判断 y 是否为闰年,是则输出 yes 否则输出 no

C
1
2
3
4
5
6
7
8
9
#include <stdio.h>

// 闰年判断:是 4 的倍数,且不是 100 的倍数 或者 是 400 的倍数

int main() {
    int y; scanf("%d", &y);
    if (y % 400 == 0 || y%4 == 0 && y%100 != 0) printf("yes\n");
    else                                        printf("no\n")
}

三、switch 语句

1.1 用法

C
1
2
3
4
5
switch(integer_expression) {
    case integer_constant1:
    case integer_constant2:
    default:
}

integer_expression 整型表达式(表达式的值的类型为整型)

integer_constant 整型常数(可以是 符号常量、具体的值、定义的常量)

Tip: 由于 char 类型实际存储的也是个整数,所以也可以使用 char

考察 整形表达式 的值,与哪个 case 后的整型常量 则进入哪个 case ,若没有相等的则进入 deafult

注意:一个 case 内的语句执行完成后会继续执行下一个 case 中的语句,若想执行完一个 case 后退出则需要添加 break; 来跳出 switch

(懒得写太详细了自己试试吧)

评论