c语言学习第三课:条件分支结构

来源:互联网 发布:网络诈骗到哪里报案 编辑:程序博客网 时间:2024/05/21 07:54

一:任务

掌握关系运算符的使用掌握什么是逻辑值,逻辑表达式以及掌握逻辑判断的方法掌握分支条件语句的使用方法掌握三目运算符的使用

二:知识结构图

这里写图片描述

三:知识点整理

3.1、关系表达式

关系表达式用于进行数据判定可以用于分支语句、循环语句的执行判定上
int i = 10; int j = 20;  i > j  //这就是一个关系表达式,不是完整语句

3.2、关系运算符

关系运算符用来确定操作数之间的关系常见的关系运算符:< 小于> 大于<= 小于等于>= 大于等于== 等于!= 不等于
//关系运算符的书写必须正确length => 30  //错误,=要位于右边a =  = b  //错误,两个=中间不能有空格

3.3、关系表达式的结果

使用关系运算符构建的关系表达式的结果为真或者假C语言中使用0作为假,非0作为真使用关系运算符构建的关系表达式的结果为两种:0和1,分别代表假和真
    //关系表达式。是有结果返回的。0代表假。非0为真。    int a=20,b=20;    char c1 = 'a',c2 = 'A';    int rst = a <= b;    int rst2 = c1 < c2;    printf("rst = %d\n",rst);//结果:1    printf("rst2 = %d\n",rst2);//结果:0    /**     *  注意。使用float有时候会不精确     */    float f1 = 10.1f;    double d1 = 10.1;    int rst3 = f1 > d1;//    printf("%f,%f\n",f1,d1);    printf("rst3 == %d\n",rst3);//结果为 1

注意:如果输出看控制台的话,两个结果是一样的。但是断点调试的话,就能看出不同了,见下图:
这里写图片描述
这里写图片描述

3.4 字符型关系运算

字符型数据也可以进行关系运算字符型数据本质上也是一种整型数据在比较时字符型使用其对应的ASCII码值进行比较
char c1 = 'A’; char c2 = 'a';int rst = c1 > c2; printf("%d", rst);

3.5 逻辑运算符

3.5.1: 需要多个条件叠加判断时需要使用逻辑运算3.5.2:逻辑运算包括三种:与运算(&&)表达式1 && 表达式2或运算(||)表达式1 || 表达式2非运算(!)! 表达式
示例:int i = 15, j = 30; double a = 12.0, b = 2.0;double complete = 0.0;a > b //真i == j || a < b //假a / b && i <= 20 //真

逻辑运算时将非0作为真,0作为假处理

3.5.3: 逻辑运算规则

这里写图片描述

3.6 逻辑运算短路情况

(1)与运算时:表达式1&&表达式2,如果表达式1为假,表达式2不再被执行(2)或运算时:表达式1||表达式2,如果表达式1为真,表达式2不再被执行
int i = 0; int j = 5;int rst = i ++ && j++; //结果 i = 1,j = 5

3.7 if 分支语句

(1)程序结构

if(表达式){    分支语句;} 分支后语句
ps:当分支语句只有一条时,花括号可以省略,如果分支语句有多条需要使用花括号

(2)程序流程图
这里写图片描述

单一if分支语句首先判断表达式结果,如果为真则执行分支中的语句,否则不执行分支中的语句转而直接执行分之后的语句

(3)示例:

int i = 1;if(i < 3)    i++;printf("i = %d", i); //结果为:2andint i = 3;if(i < 3)    i++;printf("i = %d", i);//结果为:3
    /**     *  输入一个数值,打印出绝对值     */    /*    int num1;    printf("请输入一个数:\n");    scanf("%d",&num1);    //判断这个数是否为负数,如果是负数,将其变成正数,如果是正数,不变    if (num1 < 0)    {        num1 = num1 * (-1);    }    printf("这个数的绝对值为:%d\n",num1);

3.8 if…else 分支语句

程序中需要做出 2选1 的情况下使用

(1)程序结构

if(表达式){    分支语句1;}else{    分支语句2;} 分支后语句;

(2)程序流程图
这里写图片描述

如果表达式为真,则执行语句1,否则执行语句2语句1和语句2无法同时执行语句3永远执行

(3)示例:

if(isRain == ‘Y’){    printf(“下雨了,需要带上雨具!”);}else{    printf(“没有下雨,不需要带雨具。”);} 

3.9 if..elseif..else分支链

*有些情况下需要处理多选一的情况,之前的if分支和if..else分支力不从心*C语言提供了if..elseif..else分支链以供解决多者选一的问题

(1)程序结构

if(表达式1){    语句1;}else if(表达式2){    语句2;}else if(表达式3){    语句3;}…… //可以有n个else if分支else{    语句4;}语句5; 

(2)程序流程图
这里写图片描述

(3)示例:

if(temperature < 15){    printf("天气寒冷!");}else if(temperature >= 15 && temperature <= 29){    printf("天气温暖!");}else{    printf("天气炎热!");}
    /**     *  输入一个身高,打印应该买什么样的车票     规则为:     身高1.20米以下(含)儿童不用购买车票     身高1.21米1.50米(含)儿童购买儿童票     身高1.50米以上购买成人车票     */    double height;    printf("请输入一个身高值!\n");    scanf("%lf",&height);    if (height<=1.20)    {        printf("不用买票!\n");    }else if (1.20<height && height <= 1.50)    {        printf("购买儿童票!\n");    }else{        printf("购买成人票!\n");    }

3.10 三元运算符

三元运算符可以替代if..else分支语句表达式1 ? 表达式2 : 表达式3 ***判断表达式1的结果,如果为真,整个三元运算表达式的结果为表达式2的值***如果为假,整个三元运算表达式的结果为表达式3的结果

代码示例:

    //比较两个数的大小,输出最大值。    int a=40,b=20;    int max;    max = a>b?a:b;    printf("Max = %d\n",max);

3.11 switch..case分支语句

1、switch..case可以替换if..elseif..else分支链中等值判断的情况2、switch语句中的判定表达式结果需要为整型(包含字符型)3、switch的每一个分支case的不允许重复4、每一个case中需要使用break来结束,否则从某一个case进入之后,直到遇见第一个break才能停止switch语句

(1)程序结构

switch(整型表达式){    case 数值1:        语句1_1;语句1_2;        ……; break;    case 数值2:        语句2_1;语句3_2;        ……; break;    ……    case 数值n:        语句n_1;语句m_2;        ……; break;    default:        语句m_1;语句m_2;        ……; break;}

(2)示例代码:

    /**     *  输入两个数字,然后再输入要进行的计算,最后打印计算结果     */    double num1,num2,rst;    int choose;    printf("请输入两个数字,用空格隔开\n");    scanf("%lf%lf",&num1,&num2);    printf("请输入计算类型1表示加法、2表示减法、3表示乘法、4表示除法\n");    scanf("%d",&choose);    switch (choose) {        case 1:            rst = num1 + num2;            break;        case 2:            rst = num1 - num2;            break;        case 3:            rst = num1 * num2;            break;        case 4:            rst = num1 / num2;            break;        default:            printf("输入有误!\n");            break;    }    printf("rst == %g\n",rst);

常见错误

1、关系表达式的双等号写成单等号2、使用分支语句时遗忘了必要的花括号3、if..else分支下的语句为多条语句时忘记加花括号4、使用逻辑运算符&&或者||时,写为&或者|5、类似于下面的错误:if(表达式);{语句1;} 6、switch..case分支中忘记使用必要的break语句进行错误的分支嵌套造成有些代码永远无法执行
0 0
原创粉丝点击