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输入错误,请重新输入。");
}
}

C语言 第三章 关系、逻辑运算与分支流程控制的更多相关文章
- C语言 第四章 关系、逻辑运算与分支流程控制
一.关系运算 若干表达式用关系运算符连接而成,就构成关系表达式. 关系表达式中,表达式成立,其值为1(真):表达式不成立,其值为0(假).其他表达式中,其结果如果是非0则为真,结果为0则为假. 关系运 ...
- R语言学习 第四篇:函数和流程控制
变量用于临时存储数据,而函数用于操作数据,实现代码的重复使用.在R中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数.分支控制和循环控制,和通用编程语言的风格很相似, ...
- Go 从入门到精通(三)字符串,时间,流程控制,函数
一.strings和strconv的使用 strings strings.HasPrefix(s string,preffix string) bool:判断字符串s是否以prefix开头 stirn ...
- 第2章 Java基本语法(下): 流程控制--项目(记账本)
2-5 程序流程控制 2-5-1 顺序结构 2-5-2 分支语句1:if-else结构 案例 class IfTest1{ public static void main(String[] args) ...
- 大一C语言学习笔记(6)---自省篇--流程控制;break,continue,return间的异同;数组应用到循环语句中需要注意的问题;++i 和 i++的异同等。
下面是傻瓜博主"曾经"犯过的错和一些心得: ༼ つ ◕_◕ ༽つ 1.要想流程控制学好,一定要学会化繁为简,举栗子: 三目运算符 (略?略:略)---就是一个数字嘛, ...
- 【JAVA今法修真】 第三章 关系非关系 redis法器
您好,我是南橘,万法仙门的掌门,刚刚从九州世界穿越到地球,因为时空乱流的影响导致我的法力全失,现在不得不通过这个平台向广大修真天才们借去力量.你们的每一个点赞,每一个关注都是让我回到九州世界的助力,兄 ...
- 新手小白入门C语言第三章:关于数据类型
C 语言包含的数据类型 1.整型 整型分为整形常量和整形变量,常量就是我们平时所看到的准确的数字,例如:1.20.333等等,变量则按我的理解是我像内存去申请一个存储空间,告诉内存空间我申请了这个地方 ...
- C语言 第三章 基础编程测试与练习
1.屏幕上输出:This is a C program 2.输入两个整数,求两个数的和,如下所示:请输入第1个数:5请输入第2个数:3 3加5的和是8 3.完成华氏温度与摄氏温度间的转换,如下所示:请 ...
- C#语言————第三章 使用属性升级MyBank
********常见的访问修饰符*********: public :公共的,可以在其他类中访问 private:私有的,只有在本类里可以使用,其他的类无权访问 类的默认访问修饰符 internal( ...
随机推荐
- FPGA与PCI-E
从并行到串行: PCI Express(又称PCIe)是一种高性能.高带宽串行通讯互连标准,取代了基于总线的通信架构,如:PCI.PCI Extended (PCI-X) 以及加速图形端口(AGP). ...
- Python自学笔记-字符串编码(来自廖雪峰的官网Python3)
感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 1.理解变 ...
- hdu 4057--Rescue the Rabbit(AC自动机+状压DP)
题目链接 Problem Description Dr. X is a biologist, who likes rabbits very much and can do everything for ...
- c# xml操作类 比较齐全
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...
- 分布式锁的实现(redis)
1.单机锁 考虑在并发场景并且存在竞态的状况下,我们就要实现同步机制了,最简单的同步机制就是加锁. 加锁可以帮我们锁住资源,如内存中的变量,或者锁住临界区(线程中的一段代码),使得同一个时刻只有一个线 ...
- java使用spark/spark-sql处理schema数据(spark1.6)
1.spark是什么? Spark是基于内存计算的大数据并行计算框架. 1.1 Spark基于内存计算 相比于MapReduce基于IO计算,提高了在大数据环境下数据处理的实时性. 1.2 高容错性和 ...
- PHP-FPM进程池探秘
PHP 支持多进程而不支持多线程:PHP-FPM 在进程池中运行多个子进程并发处理所有连接请求.通过 ps 查看PHP-FPM进程池(pm.start_servers = 2)状态如下: root@d ...
- PE格式第七讲,重定位表
PE格式第七讲,重定位表 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶何为重定位(注意,不是重定位表格) 首先, ...
- hibernate使用注解简化开发
简述 在编写hibernate的时候,需要将实体类映射到数据库中的表.通常需要一个配置文件(hibernate.cfg.xml),一个实体类(XX.Java),还有一个映射文件(XX.hbm.xml) ...
- HTML5中表单中新增加元素
新增input 内属性 1,required:若文本内容为空,阻止表单提交格式,写入单词即可 如:<input type="text" name="username ...