当前位置:网站首页>C语言程序设计笔记(浙大翁恺版) 第三周:判断
C语言程序设计笔记(浙大翁恺版) 第三周:判断
2022-08-09 14:23:00 【CS_Lee_】
按照中国大学MOOC上浙江大学翁恺老师主讲的版本所作,B站上也有资源。原课程链接如下:
https://www.icourse163.org/course/ZJU-9001
由于是大三抽空回头整理的,所以可能前五章会记的内容比较简略。此外,作为选学内容的A0:ACLLib的基本图形函数和链表两章也没有做。西电的考试是机试,理论上学到结构体就能够应付考试了,但为了以后的学习考虑建议全学。
其他各章节的链接如下:
判断
编程练习解析部分的几个细节:
如何输入a和b?
scanf("%d %d ", &a, &b);scanf("%d %d\n", &a, &b);scanf("price%d %d", &a, &b);


int foot = cm / 30.48;
将浮点数类型的运算结果保存在一个整数变量里会自动做转换,这是C语言允许的
判断
做判断
if语句根据条件决定做还是不做
如果

// interval2.c
#include <stdio.h>
int main()
{
int hour1, minute1;
int hour2, minute2;
scanf("%d %d", &hour1, &minute1);
scanf("%d %d", &hour2, &minute2);
int ih = hour2 - hour1;
int im = minute2 - minute1;
if ( im <0 ) {
im = 60 + im;
ih --;
}
printf("时间差是%d小时%d分。\n", ih, im);
return 0;
}
判断的条件
关系运算,做比较的运算符
条件
计算两个值之间的关系,所以叫做关系运算

关系运算的结果
当两个值的关系符合关系运算符的预期时,关系运算的结果为整数1,否则为整数0
printf("%d\n", 5==3);
printf("%d\n", 5>3);
printf("%d\n", 5<=3);
优先级
所有的关系运算符的优先级比算术运算的低,但是比赋值运算的高
7 >= 3 + 4
int r = a>0;
判断是否相等的==和!=的优先级比其他的低,而连续的关系运算是从左到右进行的
5 > 3 == 6 > 4
6 > 5 > 4
a == b == 6
a == b > 0
找零计算器
判断,注释,流程图
找零计算器
找零计算器需要用户做两个操作:输入购买的金额,输入支付的票面,而找零计算器则根据用户的输入做出相应的动作:计算并打印找零,或告知用户余额不足以购买
从计算机程序的角度看,这就是意味着程序需要读用户的两个输入,然后进行一些计算和判断,最后输出结果

注释
注释(comment)插入在程序代码中,用来向读者提供解释信息。它们对于程序的功能没有任何影响,但是往往能使得程序更容易被人类读者理解
//是C99的注释,ANSI C不支持
/* */注释
延续数行的注释,要用多行注释的格式来写。多行注释由一对字符序列”/*“开始,而已”*/“结束
也可以用于一行内的注释。 如:int ak=47 /* 36*/, y=9;
否则的话
如果条件不成立呢?
else
else=否则的话

IF语句再探
一个基本的if语句由一个关键字if开头,跟上在括号里的一个表示条件的逻辑表达式,然后是一对大括号”{}“之间的若干条语句。如果表示条件的逻辑表达式的结果不是零,那么就执行后面跟着的这对大括号的语句,否则就跳过这些语句不执行,而继续下面的其他语句
if语句这一行结束的时候并没有表示语句结束的”;“,而后面的赋值语句写在if的下一行,并且缩进了,在这一行结束的时候有一个表示语句结束的”;“。这表明这条赋值语句是if语句的一部分,if语句拥有和控制这条赋值语句,决定它是否要被执行
if ( total > amount )
total += amount+10;
// salary.c
#include <stdio.h>
int main()
{
const double RATE = 8.25;
const int STANDARD = 40;
double pay = 0.0;
int hours;
printf("请输入工作的小时数: ");
scanf("%d", &hours);
printf("\n");
if (hours > STANDARD)
pay = STANDARD * RATE +
(hours-STANDARD) * (RATE * 1.5);
else
pay = hours * RATE;
printf("应付工资: %f\n", pay);
return 0;
}
分支
嵌套的if-else
在if或else后面要执行的还是if语句,就成了嵌套
嵌套的判断
当if的条件满足或者不满足的时候要执行的语句也可以是一条if或if-else语句,这就是嵌套的if语句

找三个数中的最大
如果要求输入三个整数,输出其中最大的,应该怎么做?


else的匹配
else总是和最近的那个if匹配

缩进
缩进格式不能暗示else的匹配

嵌套的if





tips
在if或else后面总是用{},即使只有一条语句的时候
级联的if-else if
像分段函数这样的程序就可以写成级联的if
级联的if-else if

分段函数


if-else的常见错误
没有{}、多了;、=和==这些都是常见的错误
if语句常见的错误
- 忘了大括号
if后面的分号- 错误使用
==和= - 使人困惑的
else
忘了大括号
永远在if和else后面加上大括号,即使当时后面只有一条语句

if后面的分号

错误使用==和=
if只要求()里的值是零或非零

代码风格
在if和else之后必须加上大括号形成语句块
大括号内的语句缩进一个tab的位置

多路分支:switch-case语句
switch-case语句
switch-case


break

边栏推荐
- Analysis of select principle in golang
- [Database] How does Sqlserver backup the database regularly and clear it regularly
- 刷完这174道Android开发面试题,搞懂所有技术栈
- 从软件哲学角度谈 Amazon SageMaker(第一讲)
- dpkg: error: cannot new file '/var/lib/dpkg/info/format-new': no
- #25-1 OJ 78 Calculate birthday day of the week
- 【DevOps】jekinsBuild step ‘Execute shell‘ marked build as failure
- Word numbering and text spacing are too large
- RHCE Course Summary
- Meta 发布 1750 亿聊天机器人,亿万富翁老板小扎被「他」疯狂吐槽!
猜你喜欢
随机推荐
下班后用微信工作发病是否属于工伤?法院这样判
nav标签的作用
JVM如何判断对象无用
uniapp学习
Common sql records
RHCE Course Summary
IK学习笔记(2)——TwoBones IK
IK学习笔记(1)——CCD IK
Simulate the realization of strcpy function (including multiple optimization ideas)
Recursive implementation of the Tower of Hanoi problem
太厉害了!华为大牛终于把MySQL讲的明明白白(基础+优化+架构)
*1-1 OJ 56 Hamming Distance
计算成像技术
len()的使用
零时科技 | Nomad 跨链桥被盗1.8亿美元事件分析
【消息中心】架构准备
YOLOv5网络详解
看完腾讯大佬90天整理的“Redis深度笔记”,我直接当场膜拜
30分钟使用百度EasyDL实现健康码/行程码智能识别
[DevOps] jekins deployment (1)









