Skip to content

3 、判断语句


一、if 判断🧀

1
2
3
4
5
6
7
if () {
    // do something
} else if () {
    // do something
} else {
    // do something
}
时间差
int main() {
    int hour1, minute1, hour2, minute2;
    printf("Enter the first time: ");
    scanf("%d:%d", &hour1, &minute1);
    printf("Enter the second time: ");
    scanf("%d:%d", &hour2, &minute2);


    int ih = hour2 - hour1;
    int im = minute2 - minute1;

    // 判断分钟差是否在一小时以内
    if (im < 0) {
        im = 60 + im;
        ih--;
    }
    printf("%d,%d", ih, im);

    return 0;
}
// 改进,用判断拒绝分钟大于60的输入
#include <stdio.h>

int main() {
    int hour1, minute1, hour2, minute2;
    printf("Enter the first time: ");
    scanf("%d:%d", &hour1, &minute1);
    printf("Enter the second time: ");
    scanf("%d:%d", &hour2, &minute2);

    int ih = hour2 - hour1;
    int im = minute2 - minute1;

    // 判断分钟是否大于60
    if (minute1 > 60 || minute2 > 60) {
        printf("Time error!!!");
    } else if (im < 0) {
        im = 60 + im;
        ih--;
    }
    printf("%d,%d\n", ih, im);

    return 0;
}

1、条件运算符🧀

运算符 意义
== 相等
!= 不相等
> 大于
>= 大于或等于
< 小于
<= 小于或等于

Abstract

  • 关系运算结果只有1/0
  • ==/!= 运算优先级比其他关系运算符更低

2、优先级🧀

\[ 赋值运算<关系运算<算术运算 \]
1
2
3
4
5
//验证
printf("%d\n", 7 >= 3 + 4);
/*
1
*/
找零计算器
int main() {
    double price;
    double bill;
    printf("Please enter your price:");
    scanf("%lf", &price);
    printf("Please enter your bill:");
    scanf("%lf", &bill);

    // 判断价格和票面
    if (price < bill) {
        printf("Your price is less than your bill");
    } else if (bill < price) {
        printf("Your bill change: %f", price - bill);
    }

    return 0;
}

省略 {}

\[ \text{if 语句逻辑} = \begin{cases} \text{执行大括号内所有语句}, & \text{若有大括号 \{\}} \\ \text{只执行 if 后面的一条语句}, & \text{若无大括号} \end{cases} \]
int main() {
    const int PASS = 60;
    int score;
    printf("Please enter your score:\n");
    scanf("%d", % score);

    if (score < PASS)
        printf("You failed\n");
    else
        printf("You passed\n");

    return 0;
}

3、嵌套的 if-else🧀

判断三个数中最大的
int main() {
    int a, b, c;
    printf("Enter three numbers:");
    scanf("%d %d %d", &a, &b, &c);
    if (a > b) {
        if (a > c) {
            printf("%d is max", a);
        } else {
            printf("%d is max", c);
        }
    }

    if (a < b) {
        if (b > c) {
            printf("%d is max", b);
        } else {
            printf("%d is max", c);
        }
    }

    return 0;
}

Warning

  • else(无大括号的情况下)总与最近的if配对

  • C语言中缩进不表示同一层级,但是最好编写时注意 → 便于阅读

  • 最好if/else总是用 { }


二、switch case判断🧀

// 格式
switch (控制表达式) {
    case 常量1:
        // 执行语句1
        break;
    case 常量2:
        // 执行语句2
        break;
    // 可以有多个 case
    default:
        // 默认执行语句
        break;
}

// 说明:
// 1. 控制表达式只能是整数类型(包括 int、char 等)
// 2. case 后的常量必须是整数或能计算成整数的常量表达式
// 3. 每个 case 后通常要用 break 语句阻止“穿透”
// 4. switch-case 结构不用像 if 语句那样用大括号包围每个分支语句,但需要注意代码块结构
int main() {
    int type;

    printf("type a number:");
    scanf("%d", &type);
    if (type == 1)
        printf("Good morning!");
    else if (type == 2)
        printf("Good afternoon!");
    else if (type == 3)
        printf("Good evening!");
    else if (type == 4)
        printf("Good night!");

    return 0;
}
int main() {
    int type;

    printf("Enter a number:");
    scanf("%d", &type);
    switch (type) {
    case 1:
        printf("Good morning!");
        break;
    case 2:
        printf("Good afternoon!");
        break;
    case 3:
        printf("Good evening!");
        break;
    case 4:
        printf("Good night!");
        break;
    default:
        printf("Wrong number!");
        break;
    }
    return 0;
}
成绩互转
int main() {
    int score;
    int grade;
    printf("Enter your score: ");
    scanf("%d", &score);
    grade = score / 10;
    switch (grade) {
    case 10:
    case 9:
        printf("A\n");
        break;
    case 8:
        printf("B\n");
        break;
    case 7:
        printf("C\n");
        break;
    case 6:
        printf("D\n");
        break;
    default:
        printf("F\n");
        break;
    }
    return 0;
}

三、三元运算符🧀

三元运算符是if-else的简写形式,格式如下:

表达式1 ? 表达式2 : 表达式3
  • 如果 表达式1 为真(非0),则结果为 表达式2 的值
  • 否则,结果为 表达式3 的值
判断两个数哪个更大
int a = 5, b = 10;
int max = (a > b) ? a : b;
printf("max = %d\n", max);

// 等价于
int max;
if (a > b) {
    max = a;
} else {
    max = b;
}

Danger

  • 三元运算符本质上是表达式,有返回值,可以直接赋值或嵌入更复杂的表达式中。
  • 三元运算符适合简单条件判断,过于复杂的条件建议用if-else结构以提高可读性。
  • 可以嵌套使用,但不建议过深,避免代码难懂。