if与if判断
基本的if语句由关键字if
开头,在括号里的是表示条件的逻辑表达式,在{}
之间的若干表达式.如果表示条件的逻辑表达式结果不是零,那么执行后面{}
之间的表达式,否则就跳过这些表达式不执行,而继续执行下面的其他语句.
if 格式
- if&else
1 | if (条件判断){ |
- if
1 | if (条件判断){ |
值得注意的是,可以使用if嵌套
计算两个值之间的关系判断叫关系运算/比较运算
运算符 | 意义 |
---|---|
== | 相等 |
!= | 不相等 |
> | 大于 |
>= | 大于或等于 |
< | 小于 |
<= | 小于或等于 |
优先级
- 关系运算符的优先级比算术运算符低,但是比赋值高
1 | int x = 4 >= 5 + 3; |
- 判断是否相等的
==
和!=
优先级比其他关系运算符低,在连续的关系运算符中,优先级的顺序是自左向右运算.
1 | 5 > 3 == 6 > 4 |
代码示例
计算找零
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main() {
// 初始化
int price = 0;
int bill = 0;
// 让用户输入金额和票面
printf("请输入金额:");
scanf("%d", &price);
printf("请输入票面:");
scanf("%d", &bill);
// 判断,当票面大于或等于金额时,执行找零操作
if ( bill >= price ){
printf("应当找您:%d\n",bill - price);
} else{
printf("您的钱不够");
}
return 0;
}计算年龄
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main() {
// 定义初始值
const int MINOR = 35;
// 初始化
int age = 0;
// 输入年龄
printf("请输入您的年龄:");
scanf("%d", &age);
printf("您的年龄是:%d\n",age);
// 判断
if ( age <= MINOR){
printf("年轻是美好的\n");
} else{
printf("年龄决定了您的精神世界,请好好珍惜吧。\n");
}
return 0;
}比较大小
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main() {
// 定义变量
int a , b;
// 输入整数
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
// 初始化
int max = 0;
// 判断
if ( a > 0 ){
max = a;
} else{
max = b;
}
printf("大的值是%d\n",max);
return 0;
}而上述代码还可以简写成下面的样子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main() {
// 定义变量
int a , b;
// 输入整数
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
// 初始化
/*
*将b的值赋值给max,而后进行判断,当a的值大于max时将a的值赋值给max
*而不满足判断时,直接输出max的值(也就是b的值)
*/
int max = b;
// 判断
if ( a > b ){
max = a;
}
printf("大的值是%d\n",max);
return 0;
}计算薪水
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25/*
* 按照薪资标准,加班的时间以1.5倍计算
* 当用户输入工作时长后,进行判断,如果大于每周标准工作时长则进行计算:每周的工资+加班时间*1.5倍工资
* 否则计算用户输入工作时长*小时薪资
*/
int main() {
// 定义变量
const double RATE = 8.25; // 每小时8.25块
const int STANDARD = 40; // 一周标准工作时长40小时
double pay = 0.0;
int hours;
// 输入工作时长
printf("请输入工作的小时数:");
scanf("%d", &hours);
// 判断
if ( hours > STANDARD ){
pay = STANDARD * RATE + (hours - STANDARD) * (RATE * 1.5);
} else{
pay = hours * RATE;
}
printf("应付工资:%f",pay);
return 0;
}判断成绩
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main() {
// 定义变量
const int PASS = 60;
int source;
// 输入成绩
printf("请输入成绩:");
scanf("%d", &source);
printf("您输入的成绩是%d\n",source);
// 判断
if ( source < PASS ){
printf("您的成绩不合格!");
} else{
printf("您的成绩是合格的!");
}
printf("再见");
return 0;
}
if嵌套
在嵌套中,if没有{}
的情况下,else通常是和最近的if匹配
同时,else不会被代码缩进影响
所以标准写法还是在if和else后加上{}
,哪怕是只有一条语句
判断大小
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main() {
int a,b,c;
printf("请输入任意三个整数:");
scanf("%d %d %d", &a, &b, &c);
int max = 0;
if ( a > b ) {
if ( a > c ){
max = a;
} else{
max = c ;
}
} else{
if ( b > c ){
max = b;
} else{
max = c;
}
}
printf("最大值是:%d",max);
return 0;
}可以简化成下面的样子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main() {
int a, b, c;
printf("请输入任意三个整数:");
scanf("%d %d %d", &a, &b, &c);
int max = 0;
if (a > b)
if (a > c)
max = a;
else
max = c;
else if (b > c)
max = b;
else
max = c;
printf("最大值是:%d", max);
return 0;
}级联判断/分段函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main() {
int x,f;
x = 0;
f = 0;
scanf("%d", &x);
if ( x < 0){
f = -1;
} else if ( x == 0){
f = x;
} else {
f = 2 * x;
}
printf("f=%d",f);
return 0;
}
switch
switch语句的作用就是基于计算的跳转,当满足表达式的值之后,程序会跳转到对应的case(分支标号)处
但分支标号只是作为switch的标记,在switch内的表达式后面如果没有break作为结束,将会继续执行下一个case内的表达式,直至遇到一个break或整个switch执行完毕
- 级联与switch
1 |
|
这种代码看上去十分繁琐,使用switch就能轻松实现
switch的语法与if大同小异,而且代码明了高效率
1 | switch (整型变量或表达式){ |
用switch把上面的if转换成简单易懂的风格就是如下
1 |
|
- 题目-成绩转换
将百分制成绩转换成五分制成绩,并严格遵循如下转换规则:
- 大于等于90分为A
- 小于90且大于等于80为B
- 小于80且大于等于70为C
- 小于70且大于等于60为D
- 小于60为E
输出格式
输入在一行中给出1个整数的百分制成绩
输出格式
在一行中输出对应的五分制成绩
输入样例
90
输出样例
A
解题思路:除了级联if嵌套以外,还可以使用switch来判断并输出,碍于需要判断大小于,所以可以将输入的整数进行/10
的操作,只取前1位有效数作为变量,实现代码如下
1 |
|
如此,便满足了题目要求