![80b42e7b8541b55ee2846a825a13bc3d.png](https://i-blog.csdnimg.cn/blog_migrate/71f6e1105e07206ed0f5ec5945bc7e53.jpeg)
木叶医院,一名婴儿在几名医疗忍者的努力下,缓缓睁开了眼睛。
”这,这孩子的眼睛?“
——《火影之雪殇》
做判断
还记得上周的内容当中,我们有这样一段。
![ceb1f7c2679cb267bd687ce0fbdcb1de.png](https://i-blog.csdnimg.cn/blog_migrate/bc6fabd2438a378becb5a067aecf9f28.jpeg)
如果
- 就用分别减的方案,然后判断有没有出现错位行不行?
- 错位的表现是,分钟减的结果小于0
int im = minute2-minute1;
if ( im <0 ){
…
}
虽然2点10分减1点40分(分钟减分钟,时钟减时钟)得到的1小时负30分,然我们都知道,其实这负30分钟应该加上1小时,也就是30分钟。
所以这里,我们需要做一个调整(当出现负数时),就是把那个小时数减一;然后分钟数做一个调整,比如10分钟减40分钟,减下来得到的是负30分,其实我们知道,那应该是60减30,正确的是过了30分钟,而不是负30分钟。所以,如果语言,有这么一种机制,它能够帮我们做这样的一种判断,根据某种条件决定做这件事情,还是不做这件事情,那,我们就有可能写出这样的一种代码来。
#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;
}
我们在这个当中,用了C语言的一种手段,叫做条件判断。我们用的是这个叫做“if”的东西。如果im<0,我们要做的就是让60加上im,把那个复数给补回去,然后,我们还要让ih(小时)减一。如果im不小于0,我们就不需要做这样的一个调整了。所以,这是我们在C语言中的一种机制,叫做if语句,叫做判断机制。我们可以给定一个条件,判断一件事是做还是不做。
我们来试一下这几行代码是怎样运行的。
![56e8a4e3892cfacef4300ba67abd0797.png](https://i-blog.csdnimg.cn/blog_migrate/ac4e7d6e3a09075f9c6cbd68fff21e95.jpeg)
我们输入了,2个数,得到的是0小时40分。那么,在这个语句中,if是怎么起作用的呢?
如果条件满足,则做所有大括号里的语句,如果不满足,计算机则直接跳过这一大段语句。(具体 步骤可用“调试”功能查看)。
判断的条件
在上面的程序中有这么一段if( im <0){ im=60+im; ih --;},在这个圆括号里面出现了“<”,“<”是用来做比较的,除了“<”,我们当然还会有“>”,和判断他们是否相等的“=”。在if语句的圆括号里的东西,我们把他称为运算。这个运算,计算两个值之间的关系所以叫关系运算。
![99b3fc5f2ce9ba3ff90abcd1015c8a93.png](https://i-blog.csdnimg.cn/blog_migrate/305391774bc433cf23b7c071d7970a34.jpeg)
注意!这张图里,第一行是两个“=”号,而不是一个“=”。如果是一个“=”,我们就会用掉了,因为它代表赋值,只有当“==”,才表示相等;第二行的“!=”中的“!”在C语言中表示“否”、“非”,“不是”。
关系运算的结果
- 当两个值的关系符合关系运算符的预期时,关系运算的结果为整数1,否则为整数0
- printf(“%dn”,5==3);
- printf(“%dn”,5>3);
- printf(“%dn”,5<=3);
我们来看一下运行结果。
![653b181367dfbc6894bb0d596cb53117.png](https://i-blog.csdnimg.cn/blog_migrate/a28167af7c21e81d05d953d751ecd5d1.jpeg)
所以,比较运算的结果值,只有“0”和“1”这两种值,不会有其他值。
既然,它们都是运算符,那它们肯定有优先级。
优先级
- 所有的关系运算符的优先级比算术运算的低,但是比赋值运算的高。
- 7>=3+4
- Int r = a>0;
- 判断是否相等的==和!=的优先级比其他的低,而连续的关系运算是从左到右进行的
- 5>3==6>4
- 6>5>4
- a==b==6
- a==b>0
7>=3+4中,这里,我们按照运算法则,先算加法,再判断大小。我们用计算机看一下,是不是这样算的。
![06799f85293879056222eda393d2cabb.png](https://i-blog.csdnimg.cn/blog_migrate/7ac0f8d3dcee914cecb0ff75c208cfe8.jpeg)
没错是这样计算的,结果为1,所以关系运算符的优先级比算术运算的低。
再看看6>5>4;
![080cf83f1fa305bf873cc7cb9c5ea24a.png](https://i-blog.csdnimg.cn/blog_migrate/a532a9e6d50fcdb4672f729109ae5ede.jpeg)
找零计算器
- 找零计算器需要用户做两个操作:输入购买的金额,输入支付的票面,而找零计算器则根据⽤用户的输入做出相应的动作:计算并打印找零,或告知用户余额不足以购买。
- 从计算机程序的角度看,这就是意味着程序需要读用户的两个输入,然后进行一些 计算和判断最后输出结果。
#include <stdio.h>
int main()
{
// 初始化
int price=0;
int bill=0;
// 读入金额和票面
printf("请输入金额:");
scanf("%d",&price);
printf("请输入票面:");
scanf("%d",&bill);
// 计算找零
printf("应该找您:%d",bill-price);
return 0;
}
这个找零程序,比以往多了一个注释。那么,什么是注释,注释有什么用,怎么用?
注释
- 以两个斜杠“//”开头的语句把程序分成了 三个部分:
1. 初始化 2. 读入金额和票面 3. 计算并打印找零
注释(comment)插⼊入在程序代码中, 用来向读者提供解释信息。它们对于程序的功能没有任何影响,但是往往能使 得程序更容易被人类读者理解。
/* */注释
- 延续数行的注释,要用多行注释的格式来写。多行注释由⼀一对字符序列“/*”开始, 而以“*/”结束。
- 也可以用于一行内的注释