C语言 第四章 关系、逻辑运算与分支流程控制
一、关系运算
若干表达式用关系运算符连接而成,就构成关系表达式。
关系表达式中,表达式成立,其值为1(真);表达式不成立,其值为0(假)。
其他表达式中,其结果如果是非0则为真,结果为0则为假。
关系运算符的优先级低于算术运算符,高于赋值运算符。
关系运算符号:> >= < <= !=
- #include "stdio.h"
- void main()
- {
- //1、关系运算常用于比较
- //2、关系运算只有两种结果,1真,0假
- int a=,b=,c=;
- printf("\n %d",a==b);
- printf("\n %d",a>=b);
- printf("\n %d",a!=b);
- printf("\n %d",<=);
- printf("\n %d",c<);
- 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=;
- printf("\n %d",a);
- }
- //代码块2
- {
- int a=;
- printf("\n %d",a);
- }
- }
4.1、单if语句
- #include "stdio.h"
- void main()
- {
- int a=,b=,c=;
- 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<)
- {
- printf("负数");
- }
- else if(a==)
- {
- printf("零");
- }
- else if(a>=)
- {
- printf("大于100的正数");
- }
- else
- {
- if(a>= && a<=)
- {
- 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 :
- printf("a");
- break;
- case :
- printf("b");
- break;
- case :
- printf("c");
- break;
- default:
- printf("错误:");
- if(a>)
- {
- 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<)
- {
- printf("不及格");
- }
- else if(mark>= && mark<=)
- {
- printf("良好");
- }
- else if(mark>= && mark<=)
- {
- 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 :
- printf("\n开始游戏了");
- break;
- case :
- printf("\n创建存档了");
- break;
- case :
- printf("\n加载存档了");
- break;
- case :
- printf("\n加载地图了");
- break;
- case :
- printf("\n您确定要退出吗?");
- break;
- default:
- printf("\a输入错误,请重新输入。");
- }
- }
C语言 第四章 关系、逻辑运算与分支流程控制的更多相关文章
- C语言 第三章 关系、逻辑运算与分支流程控制
目录 一.关系运算 二.逻辑运算 三.运算优先级 四.if语句 4.0.代码块 4.1.单if语句 4.2.if else 4.3.多重if 4.4.?号:号表达式 五.switch语句 一.关系运算 ...
- Go语言系列(三)- 基础函数和流程控制
一.strings和strconv的使用 1. strings.HasPrefix(s string, prefix string) bool:判断字符串s是否以prefix开头 . 2. strin ...
- 第2章 Java基本语法(下): 流程控制--项目(记账本)
2-5 程序流程控制 2-5-1 顺序结构 2-5-2 分支语句1:if-else结构 案例 class IfTest1{ public static void main(String[] args) ...
- 新手小白入门C语言第四章:变量与常量
C 变量 变量其实只不过是程序可操作的存储区的名称. C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上. 变量的名称可以由字母.数字和 ...
- C语言 第四章 分支结构练习
一.输入语文,数学成绩,根据平均分分3档 #include "stdio.h" void main() { //接受用户输入 float chinese,math,avg; pri ...
- C#语言————第四章 深入C#的String类
*********类型转换**************** Convert与Parse的区别: Convert可以将任何内置类型转换为其他任何内置类型 XX.Parse:只能将字符串转换为XX类型例如 ...
- C#语言————第四章 常用Convert类的类型转换方法
方法 说明Convert.ToInt32() 转换为整型(int 型)Convert.ToStringle() 转换为单精度浮点型(float 型)Convert.ToDouble() 转换为双精度 ...
- 大一C语言学习笔记(6)---自省篇--流程控制;break,continue,return间的异同;数组应用到循环语句中需要注意的问题;++i 和 i++的异同等。
下面是傻瓜博主"曾经"犯过的错和一些心得: ༼ つ ◕_◕ ༽つ 1.要想流程控制学好,一定要学会化繁为简,举栗子: 三目运算符 (略?略:略)---就是一个数字嘛, ...
- c语言学习之第四章
第四章 第四章主要介绍了分支结构,循环结构的简单使用,还有其他简单的语句结束语句,比如,break,continue.还有gote语句.下面是我学习C语言第四章的一些心得和总结. 1简单的if语句 简 ...
随机推荐
- 运用TensorFlow处理简单的NLP问题
当前无论是学术界还是工业界,深度学习都受到极大的追捧,尤其是在Google开源深度学习平台TensorFlow之后,更是给深度学习火上浇油.目前在开源社区Github上所有开源项目中,TensorFl ...
- 【转】stopPropagation, preventDefault 和 return false 的区别
因为有父, 子节点同在, 因为有监听事件和浏览器默认动作之分. 使用 JavaScript 时为了达到预期效果经常需要阻止事件和动作执行. 一般我们会用到三种方法, 分别是 stopPropagat ...
- Hadoop.2.x_常用端口及定义方法(转)
组件 节点 默认端口 配置 用途说明 HDFS DataNode 50010 dfs.datanode.address datanode服务端口,用于数据传输 HDFS DataNode 5007 ...
- Python之路Day17-jQuery
本节内容: jQuery 参考:http://jquery.cuishifeng.cn/ 模块 <==>类库 Dom/Bom/JavaScript的类库 版本:1.x 1.12 2. ...
- 有关于canvas几个新知识点
对于canvas的初学者来说,以下几点应该是不知道的知识点: 1.canvas有兼容IE6/7/8的脚本文件 下载地址:https://github.com/arv/explorercanvas 2. ...
- java并发编程(十三)经典问题生产者消费者问题
生产者消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一存储空间,生产者向空间里生产数据,而消费者取走数据. 这里实现如下情况的生产--消费模型: 生产者不断交替地生产两组数据&q ...
- 2016huasacm暑假集训训练五 C-Common Subsequence
题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/C 题意:这是一道求字符串的公共子串的最大长度的题目,用dp动态方程即可 if(a[ ...
- Page
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <met ...
- 使div下的图片自适应div的大小
div img{ max-width:100%; height:auto; } 这里div 要给固定的宽度 开始这里还想了半天 用网上的方法也不行 问老大 又一句话就给我解决了...老大真男神啊!!! ...
- Spring缓存框架原理浅谈
运维在上线,无聊写博客.最近看了下Spring的缓存框架,这里写一下 1.Spring 缓存框架 原理浅谈 2.Spring 缓存框架 注解使用说明 3.Spring 缓存配置 + Ehcache(默 ...