一.导入

在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语句中的内容,如图所示:

复习课20 C语言if语句的使用(1)_if语句

反之如果我们将条件改为:

if(1==1){
  printf("false");
}

那么这样1等于1表达式为真,则会执行if语句中的内容,如图所示:

复习课20 C语言if语句的使用(1)_if else语句_02


三.警惕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 进行解决,这样子我们就可以对用户输入的值进行判断并输出对应的信息,如图所示:

复习课20 C语言if语句的使用(1)_C语言_03

                                                                                                                   2024/2/8     

                                                                                                                    王起舟