if做判断
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 = minut2 - minute1;
if ( im <0) {
im = 60 + im;
ih --;
}
printf("时间差是%d小时%d分。\n", ih, im);
return 0;
}
格式
if(成立条件){
}
条件
计算两个值间的关系,叫做关系运算
运算符 | 意义 |
---|---|
== | 相等 |
!= | 不相等 |
> | 大于 |
>= | 大于或等于 |
< | 小于 |
<= | 小于或等于 |
关系运算的结果
当两个值的关系符合关系运算符的预期时,关系运算的结果是1,反之是0
eg.
#include<stdio.h>
int main()
{
printf("%d\n", 5==3);
printf("%d\n", 5>3);
printf("%d\n", 5<=3);
return 0;
}
优先级
- 所有的关系运算符的优先级比算术运算符低,但比赋值运算高
- ==和!=的优先级比其他低,而连续的关系运算是从左到右进行的
找零计算器
- 用户操作:输入购买的金额,输入支付的票面
- 计算器动作:计算并打印找零,或告知用户余额不足
- 计算机程序角度:需要读用户的两个输入,然后进行一些计算和判断,随后输出结果
注释(comment)用来向读者提供解释信息,对于程序的功能没有任何影响
判断票面够不够
运用if和else语句
ps.也可以写两个if语句
比大小
方案一
int a,b;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
int max = 0;
if ( a > b ) {
max = a;
}
if ( a < b ) {
max = b;
}
printf("大的那个是%d\n", max);
问题
- a=b的情况未讨论
- 本意是只有两种可能:a大于b或a不大于b
方案二
int a,b;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
int max = 0;
if ( a > b ) {
max = a;
} else {
max = b;
}
printf("大的那个是%d\n", max);
方案三
int a,b;
printf("请输入两个整数:" );
scanf("%d %d", &a, &b);
int max = b;
if ( a > b ) {
max = a;
}
printf("大的那个是%d\n", max);
compare 二vs三
方案二更容易让别人读懂。
代码也要看重能不能让足够多的人看懂你的代码。
if语句
- 一个基本的if语句有一个关键字if开头
- { }是之间的若干条件语句
- 如果表示条件的逻辑表达式的结果不是0,执行大括号的内容;反之跳过
- if语句有时没有";",而后面的赋值语句写在if的下一行,并且缩进了
if ( total > amount )
total += amount + 10;
这表示这条赋值语句是 if语句的一部分,if语句拥有和控制这条赋值语句,决定是否被执行
eg.1
#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;
}
eg.2
#include <stdio.h>
int main()
{
const int PASS=60;
int score;
printf("请输入成绩:");
scanf("%d", &score);
printf("你输入的成绩是%d。\n", score);
if ( score < PASS )
printf("很遗憾,成绩不及格。");
else
printf("祝贺你,成绩及格。");
printf("再见\n");
return 0;
}