C语言if else语句详解
在很多情况下,只有顺序结构的代码是远远不够的,例如判断一个数是奇数还是偶数。这时程序就需要做出判断,并给出提示。
分支结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。C 语言把任何非零和非空的值假定为 true,把零或空值(NULL)假定为 false。
基本分支语句及描述如下表所示。
本节重点讲解 if else 语句的用法,也就是讲解表中前 3 种分支语句的用法。
下面的实例用于判断字符变量是否是字母或数字:
isalnum() 的返回值非 0(真)表示 ch_c 是字母或者数字,返回值为 0(假)表示 ch_c 既不是数字也不是字母。
在这个程序中,先判断 a 是否为字母或者数字,是则输出 a 是字母或者数字,否则继续执行。程序的执行流程如下图所示:

图 1 if 执行流程图
再举个例子,输入两个整数,比较并输出其中的较大者。代码如下:
例如,判断用户输入的整数是奇数还是偶数,代码如下:

图 2 if else执行流程图
举个例子,判断用户输入的字符是否是控制符,如果不是控制符,则判断是否是数字;如果不是数字,则判断是否是大写字母;如果不是大写字母,则判断是否是小写字母;如果不是小写字母,则是其他字符。
程序的执行流程如下图所示。

图 3 if...else if的执行流程图
应特别注意的是,如果有多个 if 语句,else 子句是就近配对的。
if 语句比较灵活,需要在深入理解的基础上活学活用。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
分支结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。C 语言把任何非零和非空的值假定为 true,把零或空值(NULL)假定为 false。
基本分支语句及描述如下表所示。
语句 | 描述 |
---|---|
if 语句 | —个 if 语句由一个布尔表达式后跟一个或多个语句组成。 |
if...else 语句 | —个 if 语句后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。 |
if...else if 语句 | 可以在一个 if 或 else if 语句内嵌套另一个 if 或 else if 语句。 |
switch 语句 | —个 switch 语句允许测试一个变量等于多个值时的情况。 |
本节重点讲解 if else 语句的用法,也就是讲解表中前 3 种分支语句的用法。
if语句
if 语句的格式如下:if(表达式) 语句;如果表达式的值为真,则执行其后的语句,否则不执行该语句。语句可以是单条语句,也可以是通过
{ }
构成的复合语句。下面的实例用于判断字符变量是否是字母或数字:
#include <stdio.h> #include <ctype.h> int main() { char ch_c='a'; if (isalnum(ch_c)) printf("%c is a character. \n",ch_c); return 0; }isalnum() 是 C 语言提供的一个函数,用于判断一个字符是否是字母(包括大写字母和小写字母)或数字(0~9)。这个函数需包含头文件
<ctype.h>
。isalnum() 的返回值非 0(真)表示 ch_c 是字母或者数字,返回值为 0(假)表示 ch_c 既不是数字也不是字母。
在这个程序中,先判断 a 是否为字母或者数字,是则输出 a 是字母或者数字,否则继续执行。程序的执行流程如下图所示:

图 1 if 执行流程图
再举个例子,输入两个整数,比较并输出其中的较大者。代码如下:
#include<stdio.h> int main() { int i_a,i_b,i_max; printf("\ninput two numbers:"); scanf("%d%d",&i_a,&i_b); i_max=i_a; if(i_max<i_b) i_max=i_b; printf("i_max=%d\n",i_max); return 0; }运行结果为:
10 20
20
if...else语句
if else 语句格式如下:if(表达式) 语句1; else 语句2;语义是:如果表达式的值为真,则执行语句 1,否则执行语句 2。语句 1 和语句 2 可以是通过
{ }
构成的复合语句。例如,判断用户输入的整数是奇数还是偶数,代码如下:
#include <stdio.h> int main() { int i_num; printf("请输入一个整数: "); scanf("%d", &i_num); // 判断这个数除以 2 的余数 if(i_num % 2 == 0) printf("%d 是偶数。", i_num); else printf("%d 是奇数。", i_num); return 0; }编译运行,结果如下:
请输入一个整数: 6
6 是偶数。

图 2 if else执行流程图
if...else if语句
if...else if 语句一般形式为:if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; ... else if(表达式m) 语句m; else 语句n;语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句,然后跳到整个 if 语句外继续执行程序;如果所有的表达式的值均为假,则执行语句 n,然后继续执行后续程序。
举个例子,判断用户输入的字符是否是控制符,如果不是控制符,则判断是否是数字;如果不是数字,则判断是否是大写字母;如果不是大写字母,则判断是否是小写字母;如果不是小写字母,则是其他字符。
#include <stdio.h> int main() { char ch_a; printf("input a character:"); ch_a =getchar(); if(ch_a < 32) printf("This is a control character\n"); else if(ch_a >= '0' && ch_a <= '9') printf("This is a digit\n"); else if(ch_a >= 'A' && ch_a <= 'Z') printf("This is a capital letter\n"); else if(ch_a >= 'a' && ch_a <= 'z') printf("This is a small letter\n"); else printf("This is an other character\n"); return 0; }运行结果为:
input a character:B
This is a capital letter
程序的执行流程如下图所示。

图 3 if...else if的执行流程图
总结
if 条件控制语句的形式是多种多样的,如 if 嵌套、if...if 类似的形式,但是都离不开上面介绍的 3 种基本形式。应特别注意的是,如果有多个 if 语句,else 子句是就近配对的。
if 语句比较灵活,需要在深入理解的基础上活学活用。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。