您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页分支程序设计

分支程序设计

来源:保捱科技网

在这里我们来复习一下前面学过的内容

关系运算符和表达式

关系运算符用于比较两个值之间的关系‌。

常见的六种关系运算符:

  • 小于(<)
  • 大于(>)
  • 小于等于(<=)
  • 大于等于(>=)
  • 等于(==)
  • 不等于(!=)

这些运算符在编程中用于比较两个值的大小或相等性,并返回一个布尔值(True或False)。例如,在C语言中,表达式 a < b 会返回 True 如果 a 小于 b,否则返回 False。

关系表达式是指使用关系运算符连接两个表达式的式子‌。例如,a <= b 是一个关系表达式,它比较变量 a 和 b 的大小,并返回一个布尔值。关系表达式的运算结果为逻辑值,表示两个值之间的关系是否成立。

关系运算的其他形式(仅了解)

除了关系运算符,关系运算还包括其他形式,如:

  • 选择运算‌:从关系中选出满足特定条件的元组。
  • 投影运算‌:从关系中选取特定的列组成新的关系。
  • 连接运算‌:将两个关系根据某些条件合并成一个关系。
  • 除法运算‌:通过除法运算可以从一个关系中提取出满足特定条件的元组。

逻辑运算符和表达式

逻辑运算符‌是用于对逻辑值(True和False)进行运算的运算符,主要包括以下三种:

逻辑表达式的优先级和结合方向‌:

  • 优先级‌:!(逻辑非) > &&(逻辑与) > ||(逻辑或)。这意味着逻辑非的优先级最高,逻辑与次之,逻辑或最低。
  • 结合方向‌:!(逻辑非)的结合方向是由右向左,而&&和||的结合方向是由左向右。

短路现象‌:
在逻辑表达式中,如果运算符左侧的表达式已经确定了整个表达式的结果,那么右侧的表达式可能不会被执行。例如:

  • 在&&运算中,如果左侧表达式为False,则右侧表达式不会被执行,因为结果已经确定为False。
  • 在||运算中,如果左侧表达式为True,则右侧表达式不会被执行,因为结果已经确定为True。

逻辑表达式的值‌:
在C语言中,逻辑表达式的值用1表示True,用0表示False。参与逻辑运算的操作数可以是逻辑值或能转换为逻辑值的数值(非0为True,0为False)。

运用:

#include <stdio.h>
int main() {
    int a = 3, b = 4;
    printf("%d\n", a <= 5 && a > 2); // 输出1(True)
    printf("%d\n", a < b || a + b == 8); // 输出1(True)
    printf("%d\n", !a || b && 2); // 输出1(True)
    return 0;
}

条件运算符和条件表达式

条件运算符由两个符号(?和:)组成,必须一起使用,称为三目运算符。其形式为:

表达式1 ? 表达式2 : 表达式3

这里,表达式1是一个布尔表达式,表达式2表达式3是任意两个表达式。如果表达式1的结果为真(非零),则整个条件表达式的值就是表达式2的值;否则,它就是表达式3的值‌。

使用场景和示例

条件表达式常用于需要根据某个条件进行简单分支的场合。例如:

计算两个数中的较大值‌:

int a = 5, b = 10;
int max = (a > b) ? a : b;
printf("The maximum is %d\n", max);

转换字符的大小写‌:

char ch = 'a';
char result = (ch >= 'a' && ch <= 'z') ? (ch - 'a' + 'A') : ch;
printf("The character in uppercase is %c\n", result);

根据成绩给出等级‌:

int score = 85;
char grade = (score >= 90) ? 'A' : (score >= 80) ? 'B' : (score >= 70) ? 'C' : (score >= 60) ? 'D' : 'F';
printf("The grade is %c\n", grade);

优先级和结合性

条件运算符的优先级低于大多数其他运算符,但高于赋值运算符。因此,在使用条件运算符时,先求解条件表达式,再将它的值赋给目标变量‌。条件运算符属于右结合(从右往左)‌。

二.简单分支程序设计

单分支结构的程序设计

单分支结构语句,即if语句,形式如下:
 

if (条件表达式)
    语句

这里的“条件表达式”是一个布尔表达式,如果条件表达式为真(true),则执行其后的语句;否则,直接跳过该语句‌。

编程语言中的实现方式

在中,单分支结构的基本语法如下:

if (条件表达式) {
    // 条件满足时执行的代码块
}

如果条件表达式为真,则执行大括号内的代码块;否则,直接跳过该代码块‌。

示例代码

简单的数字判断:

#include <stdio.h>
 
int main() {
    int num = 5;
 
    if (num > 3) {
        printf("Number is greater than 3\n");
    }
 
    return 0;
}

双分支结构的程序设计

在C语言中,双分支结构主要是通过if-else语句来实现的。这种结构能够让程序根据条件的真假,选择不同的执行路径。

#include <stdio.h> 
//这行代码是预处理指令,告诉编译器包含标准输入输出库。这是因为程序中用到了printf函数,该函数定义在这个库中。
 
int main() {//这是主函数的开始。在C语言中,程序的执行总是从main函数开始。int表明main函数返回一个整数类型的值,这是程序执行结束时的状态码。按照惯例,如果程序成功执行,会返回0。
    int num = 10;// 这行代码声明了一个整数变量num并初始化为10。这意味着num存储了值10
 
    if(num > 0) {//这是一个`if`语句,用于判断`num`的值是否大于0。如果条件为真(即`num`的值确实大于0),则执行大括号`{}`内的代码。
        printf("Number is positive\n");//如果if语句的条件为真,则执行这行代码,打印出Number is positive,然后换行。\n是换行符。
    } else {//如果`if`语句的条件为假(即`num`的值不大于0),则执行`else`部分大括号`{}`内的代码。但在这个例子中,由于`num`被初始化为10,这个`else`部分实际上不会被执行。
        printf("Number is non-positive\n");
    }// 这行代码位于else部分,如果num的值不大于0,则会打印Number is non-positive,然后换行。但如前所述,这在这个特定的程序运行中不会发生。
 
    return 0;//这行代码表示main函数的结束,并向操作系统返回0,表示程序成功执行结束。
}

三.多分支程序设计

if语句的多重选择程序设计

在C语言中,if语句是用来进行多重选择的重要控制语句。它的基本语法结构如下:

if (condition)
{
    // Block of code to be executed if the condition is true
}

如果你想在条件为真时执行多个语句,可以使用大括号{}将这些语句括起来,构成一个复合语句。

if (condition)
{
    statement1;
    statement2;
    // ...
}

如果你想在条件为真时执行一个代码块,否则执行另一个代码块,可以使用else关键字

if (condition)
{
    // Block of code to be executed if the condition is true
}
else
{
    // Block of code to be executed if the condition is false
}

如果你想进行多重选择,即有多个条件需要判断,可以使用else if关键字。

if (condition1)
{
    // Block of code to be executed if condition1 is true
}
else if (condition2)
{
    // Block of code to be executed if condition1 is false and condition2 is true
}
else
{
    // Block of code to be executed if both conditions are false
}

在使用if语句时,需要注意以下几点:

  1. 条件(condition)应该是一个可以转换为布尔类型的表达式。

  2. 如果你有多个else if语句,它们应该按照你认为可能为真的顺序排列。

  3. 最后的else语句是可选的,当所有的条件都不满足时,代码块中的内容将不会执行。

排序程序示例:

#include <stdio.h>
 
int main() {
    int a, b, c;
    printf("请输入三个数字:");
    scanf("%d %d %d", &a, &b, &c);
 
    if (a > b) {
        if (a > c) {
            if (b > c) {
                printf("顺序为:%d > %d > %d\n", a, b, c);
            } else {
                printf("顺序为:%d > %d > %d\n", a, c, b);
            }
        } else {
            printf("顺序为:%d > %d > %d\n", c, a, b);
        }
    } else {
        if (b > c) {
            if (a > c) {
                printf("顺序为:%d > %d > %d\n", b, a, c);
            } else {
                printf("顺序为:%d > %d > %d\n", b, c, a);
            }
        } else {
            printf("顺序为:%d > %d > %d\n", c, b, a);
        }
    }
 
    return 0;
}

switch语句的多重选择程序设计

在C语言中,switch语句是一种选择结构,它允许程序根据一个变量的不同值,使用多个代码块中的一个。这是一种非常有效的代替多个if-else-if语句的方法,尤其是在需要比较一个变量与多个值的情况下。

 switch语句中的变量类型可以是int、char等基本类型,也可以是枚举类型或者是整型常量表达式。

case标签必须是整型常量表达式,包括字面量和已定义的常量。

每个case后面必须有break语句,以防止case穿透。

如果没有任何case匹配,程序将执行switch语句的default部分。

每个case的值必须互不相同,以保证程序可以准确地识别应该执行哪一段代码。

int x = 1;
switch(x) {
    case 1:
        printf("x is 1\n");
        break;
    case 1:
        printf("x is 1 again\n");
        break;
    default:
        printf("x is neither 1 nor 2\n");
}
代码示例:
#include <stdio.h>
 
int main() {
    int number;//在主函数内部,声明了一个整型变量number,用于存储用户输入的数字。
 
    printf("请输入一个数字(1-4):");//使用printf函数打印提示信息,告诉用户需要输入一个1到4之间的数字。
    scanf("%d", &number);//使用scanf函数从标准输入(通常是键盘)读取一个整数,并将其存储在变量number中。%d是格式说明符,表示读取的数据是一个整数。&number是变量number的地址,scanf需要这个地址来将输入的数据存储到number中。
 
    switch (number) {//使用switch语句来根据变量number的值选择执行不同的代码块。switch语句是C语言中一种多分支选择结构
        case 1://如果number的值是1,则执行这个case后面的代码块
            printf("您选择了选项1\n");// printf("您选择了选项1\n");: 打印出用户选择了选项1的信息
            break;//结束当前的case块,跳出switch语句。如果没有break,程序会继续执行下一个case块的代码,这通常是不希望发生的(称为“贯穿”现象)。
        case 2:
            printf("您选择了选项2\n");
            break;
        case 3:
            printf("您选择了选项3\n");
            break;
        case 4:
            printf("您选择了选项4\n");
            break;
        default://如果number的值不是1、2、3或4中的任何一个,则执行default后面的代码块。            printf("未知的选项\n");
            break;
    }
 
    return 0;
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务