C语言 第三章 关系、逻辑运算与分支流程控制

目录

一、关系运算

若干表达式用关系运算符连接而成,就构成关系表达式。 
关系表达式中,表达式成立,其值为1(真);表达式不成立,其值为0(假)。
其他表达式中,其结果如果是非0则为真,结果为0则为假。 
关系运算符的优先级低于算术运算符,高于赋值运算符。

关系运算符号:> >= < <= !=

#include "stdio.h"
void main()
{
    //1、关系运算常用于比较
    //2、关系运算只有两种结果,1真,0假
    int a=1,b=2,c=3;
    printf("\n %d",a==b);
    printf("\n %d",a>=b);
    printf("\n %d",a!=b);
    printf("\n %d",1<=2);
    printf("\n %d",c<2);
    printf("\n %d",a+b>c);
}

运算结果:

二、逻辑运算

!(逻辑非) 
运算规则:!1 = 0,!0 = 1 。优先级:高。
&&(逻辑与)
运算规则:1&&1=1,1&&0=0,0&&1=0,0&&0=0优先级:中
||(逻辑或)
运算规则:0||1=1,1||0=1,0||0=0,1||1=1。
优先级:低

注意:短路,当与运算时,第一个表达式为假时,不会再处理第2个表达式。

a&&b

当或运算时,第1个表达式为真是,不会再处理第2个表达式

a||b

注意:

另外使用时必须注意以下几点:
代数中的不等式0<x<5必须写成(x>0)&&(x<5) 
C语言允许直接对数字或字符进行逻辑运算。
例如:!5,其结果为0。因为在C语言中,非0的值均认为是“真”,而5是个非零值,对非零值求反,即得零值。5&&‘c’,结果为1。因为字符‘c‘的ASCLL码为非零的整数,非零值与非零值作“与”运算,结果为真。

三、运算优先级

四、if语句

4.0、代码块

代码块表示一段代码,有{}符号界定,是一个新的作用域,可以有0-n行代码。

#include "stdio.h"
void main()
{
    //代码块1
    {
        int a=1;
        printf("\n %d",a);
    }

    //代码块2
    {
        int a=2;
        printf("\n %d",a);
    }

}

4.1、单if语句

#include "stdio.h"
void main()
{
    int a=1,b=2,c=3;
    if(a<=b&&c++<=c)
    {
        printf("\n yes %d",c);
    }
    printf("\n no %d",c);
}

if(条件表达式)
{
条件表达式为真时要执行的语句块(分支一语句);

其语义是:
如果表达式的值为真,则执行其后的分支一语句, 否则不执行该分支一语句。

4.2、if else

if(条件表达式)
{
条件表达式为真时要执行的语句块(分支一语句);
}
else
{
条件表达式为假时要执行的语句块(分支二语句);
}
其语义是:如果表达式的值为真,则执行分支一语句,否则执行分支二语句。

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int a,b,c,max;
    scanf("%d",&a);
    scanf("%d",&b);
    scanf("%d",&c);
    //如果条件成立
    if(a>b)
    {
        max=a;
    }
    else  //如果条件不成立
    {
        max=b;
    }

    if(c>max){  //有代码块的地方,总是会执行一句
        max=c;
    }

    printf("最大值是:%d",max);
}

4.3、多重if

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int a;
    scanf("%d",&a);

    if(a<0)
    {
        printf("负数");
    }
    else if(a==0)
    {
        printf("零");
    }
    else if(a>=100)
    {
         printf("大于100的正数");
    }
    else
    {
        if(a>=1 && a<=50)
        {
            printf("1-50");
        }
        else
        {
            printf("51-99");
        }
    }

    printf("\n程序完成");

}

使用多重if完成下面的内容:
输入分数,根据分数输出等级.
0-59 不及格 
59-70 良好
71-85 优秀
86-100 卓越

4.4、?号:号表达式

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int a,b,c;
    scanf("%d",&a);
    scanf("%d",&b);

    //a>10?printf("大于10"):printf("小于等于10");
    c=(a>b)?(a++):(++b);

    printf("%d",c);
}

五、switch语句

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int a;
    scanf("%d",&a);

    switch(a)
    {
        case 1:
            printf("a");
            break;
        case 2:
            printf("b");
            break;
        case 3:
            printf("c");
            break;
        default:
            printf("错误:");
            if(a>3)
            {
               printf("数字太大。");
            }
            else
            {
               printf("数字太小");
            }
    }

}

练习:

使用switch完成菜单功能,用户按键(1-5)选择。
1、开始游戏
2、创建存档
3、加载存档
4、加载地图
5、退出
请选择(1-5):

当输入1-5以外的内容时输出错误

switch练习2:

输入年份与月份,输出天数。

年:2008

月:2

29

年:2009

月:3

31

答案:

#include "stdio.h"
void main()
{
    float mark;

    printf("请输入分数:");
    scanf("%f",&mark);

    if(mark<60)
    {
        printf("不及格");
    }
    else if(mark>=60 && mark<=70)
    {
        printf("良好");
    }
    else if(mark>=71 && mark<=85)
    {
        printf("优秀");
    }
    else
    {
        printf("卓越");
    }

}

#include "stdio.h"
void main()
{
    int menu;
    printf("\n**********************************");
    printf("\n1、开始游戏");
    printf("\n2、创建存档");
    printf("\n3、加载存档");
    printf("\n4、加载地图");
    printf("\n5、退出");
    printf("\n**********************************");
    printf("\n请选择(1-5):");
    scanf("%d",&menu);

    switch(menu)
    {
        case 1:
            printf("\n开始游戏了");
            break;
        case 2:
            printf("\n创建存档了");
            break;
        case 3:
            printf("\n加载存档了");
            break;
        case 4:
            printf("\n加载地图了");
            break;
        case 5:
            printf("\n您确定要退出吗?");
            break;
        default:
            printf("\a输入错误,请重新输入。");
    }
}

时间: 2024-10-24 19:26:15

C语言 第三章 关系、逻辑运算与分支流程控制的相关文章

Go 从入门到精通(三)字符串,时间,流程控制,函数

一.strings和strconv的使用 strings strings.HasPrefix(s string,preffix string) bool:判断字符串s是否以prefix开头 stirngs.HasSuffix(s string,suffix string) bool:判断字符串s是否以suffix结尾 strings.Index(s string,str string) int:判断str在s中首次出现的位置,如果没有出现,则返回-1 strings.LastIndex(s st

R语言第三章 统计绘图表示第二节

R语言 第2节 1. 散点图 plot(x$x1,x$x2, main="数学分析与线性代数成绩的关系", xlab="数学分析", ylab="线性代数", xlim=c(0,100), ylim=c(0,100), xaxs="i",#Setx axis style as internal yaxs="i",#Sety axis style as internal col="red"

笔记2-第三章 关系模型

注:本文是自己学习摘要,以便后面查询,无其他目的! 解决函数依赖的范式 其他参考:从范式和性能的角度谈一谈表的设计

C#语言————第三章 使用属性升级MyBank

********常见的访问修饰符*********: public :公共的,可以在其他类中访问 private:私有的,只有在本类里可以使用,其他的类无权访问 类的默认访问修饰符 internal(同一程序集中的文件内才是可访问的,后期讲) 字段和方法的默认访问修饰符是:private **************值传递和引用传递************* ①:值传递:把参数的值传到方法里面,如果在被调用的方法中对参数的值进行了修改,在方法调用之后,不保留对参数的修改. ②:引用传递:引用传递

第三章:系统总线-5.总线控制

原因:数据传输是要依赖物理层设备,物理层设备是依靠低电压和高电压来区分1,0,所以,同一个时间只能有一份电压输出 总线判优控制: 总线通讯控制: 原文地址:https://www.cnblogs.com/chenming-1998/p/11703454.html

产品经理分享第三章:功能点与流程设计

功能点一定是用来解决特定问题的,解决大问题的是大功能点,解决小问题的是小功能点,大功能点一般包含多个小功能点.在设计功能点时,需要分析我们要去解决的问题,并优先去解决主要问题.效用大.见效快.好实现的功能. 功能点在操作时候的各种步骤,信息的输入输出,判断逻辑可以用流程图这种清晰明白的工具去表示.一个业务由许许多多的功能点组成,所以表示业务从开始到结束的操作.判断.输入输出的流程图就叫业务流程图.业务流程图是产品经理让其他人快速了解业务的工具. 业务流程图在绘制的时候需要注意一些规则,例如事件.

第三章.运算符

在Swift中你可以对浮点数进行取余运算( % ) 术语 运算符有一目, 双目和三目运算符. 一目运算符对操作一个对象, 如 -a. 一目运算符分为前置运算符和后置运算符, 前置运算符需紧排操作对象之前, 如 !b, 后置运算符需紧跟操作对象之后,如 i++, 双目运算符操作两个操作对象, 如 2 + 3. 是中置的, 因为它们出现在两个操作对象之间. 三目运算符操作三个操作对象, 和C语言一样, Swift只有一个三目运算符, 就是三目条件运算符 a ? b : c. 受运算符影响的值叫操作数

Python学习(三)流程控制

Python流程控制 本章介绍 python 的基础流程控制.包括 if 条件语句.for 循环 和 while 循环语句: continue 及 break 的用法等. 基本用法与 C 和 Java 差不多,无 switch 语句. if 语句 以下例为例,if(...)  括号内为一表达式,当为True(即成立)时,执行对应的代码段,注意,所有条件语句后方都需加冒号 : 1 ''' 判断用户输入的整数是几位数(暂不考虑用户输入非整数) 2 为零 输出 It's zero. 3 个位数 输出

HTML与CSS入门——第三章 理解HTML和XHTML的关系

知识点: 1.以HTML创建一个简单网页的方法 2.包含每个网页必须有的所有HTML标签的方法 3.用段落和换行组织页面的方法 4.用标题组织内容的方法 5.HTML.XML.XHTML和HTML5之间的差别 3.1 从一个简单的网页开始: 作者建议:从简单的文本编辑器开始学习,之后再转向可视化工具. 扩展名支持:.htm以及.html 如.jsp,.asp,.php之类的文件类型使用超出了HTML范围的服务器端技术,需要专门的服务端支持.比如Apache服务器 3.2 每个XHMTL网页必须有