判断
计算时间差(if语句实现)
#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;
}
if(im < 0){
im = 60 + im;
ih--;
}
如果if(condition){}
condition不满足,则{}里面的内容不用执行,直接跳过这个if语句。
if语句
if(条件成立){
...
}
做比较
计算机的智能是建筑在规则的基础上的,在遇到情况的时候,根据事先制定的规则做出判断,是计算机最基本的能力。
能做判断的基础,是能对数据做比较,比较就是关于两个数据是否相等、谁大谁小的结论,这需要用到关系运算:对两个数据之间的关系的计算。
计算两个值之间的关系叫做关系运算
C语言提供了六个关系运算符:
● == 相等
● != 不相等
● > 大于
● >= 大于或等于
● < 小于
● <= 小于或等于
注意其中有两个字符的运算符:==、>=和<=的两个字符必须紧紧连在一起,中间不能插入空格。
关系运算的结果是一个逻辑值,逻辑值只有两种可能的值:true(真,表示成立)或false(假,表示不成立)。当两个值的关系符合关系运算符的预期时,关系运算的结果为true,否则为false。
来自: 程序设计入门——C语言_中国大学MOOC(慕课)
printf("%d\n", 5==3);
printf("%d\n", 5>3);
printf("%d\n", 5<=3);
这三个式子中,5==3是一个关系运算,它的结果是一个逻辑值。
优先级
- 所有的关系运算符的优先级比算术运算的低,但是比赋值运算的高
- 7 >= 3 + 4
- int r = a>0;
- 而在所有的关系运算符中它们的优先级也是不一样的
- 判断是否相等的==和!=的优先级比其他的低,而连续的关系运算是从左到右进行的
- 5 > 3 == 6 > 4
- 6 > 5 > 4
- a == b == 6
- a == b > 0
不论程序多么复杂,它们执行的流程都是一样的 - 输入->计算->返回输出结果
注释(comment)方式
- 以//开始、以换行符结束的单行注释(line comment)
- 以/*开始、以*/结束的块注释(block comment)
- 预处理器会把每个注释都替换成一个空格
判断年龄
#include <stdio.h>
int main()
{
const int MINOR = 35;
int age = 0;
printf("请输入你的年龄:");
scanf("%d", &age);
printf("你的年龄是%d岁.\n", age);
if(age < MINOR){
printf("年龄是美好的.");
}
printf("年龄决定了你的精神世界, 好好珍惜吧.\n");
return 0;
}
否则的话
else = 否则的话
找零
// 初始化
int price = 0;
int bill = 0;
// 读入金额和票面
printf("请输入金额:");
scanf("%d", &price);
printf("请输入票面:");
scanf("%d", &bill);
// 计算找零
if(bill >= price){
printf("应该找您:%d\n", bill - price);
}else{
printf("你的钱不够\n");
}
if语句再探
- if语句可以没有大括号
#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和else语句只能控制其后的单个语句。 如果在单个语句后紧接着编写另一条语句,那么这条语句将始终会被执行,而不管if或else语句的条件是否为真或假。 因此,强调在 if 和 else 语句后使用花括号是为了确保代码的正确性和可读性
/* */会被替换为什么?
会变成空格进行替换
小测验
1<=n<=10
这个表达式的值为1,就变成了if(1);if(1);
这个if括号后面有分号,表示的是如果1
成立,则不执行任何语句,而是空语句,分号前面没有任何语句