一.导入
在C语言中有五类语句,他们分别是:控制语句、循环语句、表达式语句、函数调用语句与空语句
我们这篇文章要讲的if语句就是控制语句中的条件判断语句,接下来就我们一起来学习if语句的使用
二.if语句的语法结构
if语句的语法结构可以简化成如下形式:
if(表达式)
语句;
当表达式的值为真(非零)的时候,则执行语句,否则不执行语句,下面我们用一段代码来测试一下到底是不是这样,代码如下:
#include<stdio.h>
int main(void){
if (1 == 0)
printf("false");
getchar();
return 0;
}
我们从程序中可以得知如果 1等于0 则输出 false 否则什么都不会输出,1是不等于0的所以表达式为假,所以并不会执行if语句中的内容,如图所示:
反之如果我们将条件改为:
if(1==1){
printf("false");
}
那么这样1等于1表达式为真,则会执行if语句中的内容,如图所示:
三.警惕if语句中潜在的陷阱
我们下面来看一段代码并思考,当程序运行后会不会进行输出?
#include<stdio.h>
int main(void){
int i = 0;
if (i = 10){
printf("haha\n");
}
getchar();
return 0;
}
如果我们没有仔细看代码的话很可能就想当然的认为 i 一开始被初始化为 0 随后经过 if 语句进行判断,这里 0 是不等于 10 的所以什么都不会输出,但是当我们运行程序后会发现程序输出了 haha ,这是为什么呢?
这里我们就需要区分 = 与 == 当我们使用 = 时所表达的含义是将右值赋值给左边的变量,进行的是赋值操作,但是 == 表示的则是判断右值是否等于左值,若相等则返回 非零值 若不相等则返回 0 这里我们本应使用 == 进行判断而不是使用 = 进行赋值,所以这里变量 i 变成了10,10又为非零,非零代表真,所以必然会执行if中的语句,当我们修改代码成如下形式后再次运行则不会输出:
if(i == 10)
四.if语句的应用场景
(1)请你编写一个程序,提示用户输入年龄并进行判断,若用户输入的数字小于18则输出未成年,若大于18则输出成年
示例代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void){
int age = 0;
printf("请输入您的年龄:");
scanf("%d",&age);
if (age < 18){
printf("未成年");
}
else{
printf("成年");
}
getchar();
getchar();
}
程序使用 else 语句来处理 age>=18 时候的情况,当 age<18 不成立时则会执行 else 语句中的代码
(2)尝试运行下面代码,看看程序能不能成功编译
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void){
int age = 0;
printf("请输入您的年龄:");
scanf("%d",&age);
if (age < 18)
printf("未成年");
printf("hello");
else{
printf("成年");
}
getchar();
getchar();
}
当我们尝试编译该程序时候编译器会报错,报错内容是:没有匹配if的非法else ,注意!这段代码中
printf("未成年");
这段代码是属于 if 的但是下面一段代码则不属于if,若需要一起执行,则必须用大括号括起来,如下:
if (age < 18){
printf("未成年");
printf("hello");
}
五. if...else if... 语句的使用
考虑如何使用代码实现以下效果:
1.提示用户输入年龄并储存
2.判断用户的值
若用户输入的值在 0 至 14 岁之间则输出 幼年
若用户输入的值在 14 - 30 岁之间则输出 青年
若用户输入的值在 30 - 50 岁之间则输出 中年
若用户输入的值在 50 - 70 岁之间则输出 老年
若用户输入的值在 70 - 120岁之间则输出 寿星
若用户输入的值大于 120 则输出非法输入
示例代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void){
int age = 0;
printf("请输入您的年龄:");
scanf("%d",&age);
if (age > 0 && age < 14){
printf("幼年\n");
}
else if (age >= 14 && age < 30){
printf("青年\n");
}
else if (age >= 30 && age < 50){
printf("中年\n");
}
else if (age >= 50 && age < 70){
printf("老年\n");
}
else if (age >= 70 && age < 120){
printf("寿星\n");
}
else{
printf("非法输入\n");
}
getchar();
getchar();
}
当然处理这样的情况有更优解,但是我们先使用if else if 进行解决,这样子我们就可以对用户输入的值进行判断并输出对应的信息,如图所示:
2024/2/8
王起舟