C 条件语句:IF、IF Else 和 Nested IF Else 示例

C 语言中的条件语句是什么?

C 语言中的条件语句根据条件进行决策。当语句之间没有条件时,条件语句按顺序执行。如果你为语句块设置了某个条件,执行流程可能会根据条件求值结果而改变。这个过程在“C”中称为决策制定。

在 C 语言编程中,可以通过以下两种构造实现条件语句:

1. If 语句

2. If-else 语句

由于程序根据求值条件的結果决定执行哪条语句,因此它也被称为分支。

If 语句

它是强大的条件语句之一。If 语句负责修改程序的执行流程。If 语句总是与条件一起使用。在执行 If 主体内的任何语句之前,都会先对条件进行求值。If 语句的语法如下:

 if (condition) 
     instruction;

条件求值为真或假。真始终为非零值,假为包含零的值。指令可以是单个指令,也可以是用花括号 {} 括起来的代码块。

下面的程序说明了 C 语言中 if 构造的用法。

#include<stdio.h>
int main()
{
	int num1=1;
	int num2=2;
	if(num1<num2)		//test-condition
	{
		printf("num1 is smaller than num2");
	}
	return 0;
}

输出

num1 is smaller than num2

上面的程序说明了 if 构造用于检查两个数字是否相等。

If Statement

  1. 在上面的程序中,我们将两个变量 num1 和 num2 初始化为 1 和 2。
  2. 然后,我们使用 if 语句及其测试表达式来检查哪个数字最小,哪个数字最大。我们在 if 构造中使用了关系表达式。由于 num1 的值小于 num2,因此条件将评估为真。
  3. 因此,它将打印 If 块内的语句。之后,控制将移出块,程序将成功终止。

关系运算符

C 语言有六个关系运算符,可用于构建布尔表达式,以进行决策和测试条件,这些条件返回真或假。

< 小于

<= 小于或等于

> 大于

>= 大于或等于

== 等于

!= 不等于

请注意,相等测试 (==) 与赋值运算符 (=) 不同,因为这是程序员最常遇到的问题之一,即混淆它们。

例如

int x = 41;
x =x+ 1;
if (x == 42) {
   printf("You succeed!");}

输出

 You succeed

请记住,求值为非零值的条件被视为真。

例如

int present = 1;
if (present)
  printf("There is someone present in the classroom \n");

输出

There is someone present in the classroom

If-Else 语句

The If-Else Statement

if-else 语句是 If 的扩展版本。if-else 的通用形式如下:

if (test-expression)
{
    True block of statements
}
Else
{
    False block of statements
}
Statements;

在这种构造中,如果 test-expression 的值为真,则将执行 true block 的语句。如果 test-expression 的值为假,则将执行 false block 的语句。在任何情况下,执行后,控制将自动转移到 If 块外部出现的语句。

以下程序说明了 if-else 构造的用法。


我们将初始化一个变量并编写一个程序来确定该值是小于十还是大于十。

我们开始吧。

#include<stdio.h>
int main()
{
	int num=19;
	if(num<10)
	{
		printf("The value is less than 10");
	}
	else
	{
		printf("The value is greater than 10");
	}
	return 0;
}

输出

The value is greater than 10

The If-Else Statement

  1. 我们已将变量初始化为 19。我们需要使用 C 程序找出该数字是大于 10 还是小于 10。为此,我们使用了 if-else 构造。
  2. 在这里,我们提供了条件 num<10,因为我们需要将我们的值与 10 进行比较。
  3. 正如你所看到的,第一个块始终是 true block,这意味着,如果 test-expression 的值为真,那么第一个块(即 If)将被执行。
  4. 第二个块是 else 块。该块包含 test-expression 的值变为假时将执行的语句。在我们的程序中,num 的值大于十,因此 test-condition 为假,将执行 else 块。因此,我们的输出将来自 else 块,即“The value is greater than 10”。if-else 之后,程序将成功终止。

在 C 语言编程中,我们可以在其中嵌套多个 if-else 构造,这称为 if-else 语句的嵌套。

条件表达式

表达 if-else 语句的另一种方法是引入 ?: 运算符。在条件表达式中,?: 运算符只有一个与 if 和 else 相关的语句。

例如

#include <stdio.h>
int main() {
  int y;
  int x = 2;
   y = (x >= 6) ?  6 : x;/* This is equivalent to:  if (x >= 5)    y = 5;  else    y = x; */
   printf("y =%d ",y);
  return 0;}

输出

y =2

嵌套 If-else 语句

当需要一系列决策时,使用嵌套 if-else。嵌套是指在一个 if-else 构造内使用另一个 if-else 构造。

让我们编写一个程序来说明嵌套 if-else 的用法。

#include<stdio.h>
int main()
{
	int num=1;
	if(num<10)
	{
		if(num==1)
		{
			printf("The value is:%d\n",num);
		}
		else
		{
			printf("The value is greater than 1");
		}
	}
	else
	{
		printf("The value is greater than 10");
	}
	return 0;
}

输出

The value is:1

上面的程序使用嵌套 if-else 构造检查一个数字是小于还是大于 10,并打印结果。

Nested If-else Statements

  1. 首先,我们声明了一个变量 num,其值为 1。然后我们使用了 if-else 构造。
  2. 在外部 if-else 中,提供的条件检查一个数字是否小于 10。如果条件为真,它才会执行 内部循环。在这种情况下,条件为真,因此将处理内部块。
  3. 在内部块中,我们再次有一个条件,该条件检查我们的变量是否包含值 1。当条件为真时,它将处理 If 块,否则将处理 else 块。在这种情况下,条件为真,因此将执行 If 块,并将值打印到输出屏幕。
  4. 上面的程序将打印 变量 的值并成功退出。

尝试更改变量的值,看看程序如何运行。

注意:在嵌套 if-else 中,我们必须小心缩进,因为此过程中涉及多个 if-else 构造,因此很难确定各个构造。正确的缩进可以使程序易于阅读。

嵌套 If-else 语句

当需要多路径决策时,使用嵌套 else-if。

C 语言编程中 else-if 梯形图的构建方式的通用语法如下:

 if (test - expression 1) {
    statement1;
} else if (test - expression 2) {
    Statement2;
} else if (test - expression 3) {
    Statement3;
} else if (test - expression n) {
    Statement n;
} else {
    default;
}
Statement x;

这种结构称为 else-if 梯形图。这个链条通常看起来像一个梯子,因此也称为 else-if 梯形图。test-expressions 从上到下进行求值。一旦找到一个真 test-expression,就会执行与之相关的语句。当所有 n 个 test-expressions 都为假时,将执行默认的 else 语句。

让我们通过一个程序来看一下实际工作。

#include<stdio.h>
int main()
{
	int marks=83;
	if(marks>75){
		printf("First class");
	}
	else if(marks>65){
		printf("Second class");
	}
	else if(marks>55){
		printf("Third class");
	}
	else{
		printf("Fourth class");
	}
	return 0;
}

输出

First class

上面的程序根据测试成绩打印等级。我们在上面的程序中使用了 else-if 梯形图构造。

Nested Else-if Statements

  1. 我们初始化了一个变量 marks。在 else-if 梯形图结构中,我们提供了各种条件。
  2. 变量 marks 的值将与第一个条件进行比较,因为它是真的,所以与之相关的语句将在输出屏幕上打印。
  3. 如果第一个测试条件为假,则将其与第二个条件进行比较。
  4. 此过程将一直进行,直到所有表达式都得到求值,否则控制将移出 else-if 梯形图,并将打印默认语句。

尝试修改值并注意输出的变化。

摘要

  • 决策制定或分支语句用于根据求值表达式的结果选择一个路径。
  • 它也称为控制语句,因为它控制程序的执行流程。
  • C 提供了 if、if-else 构造用于决策制定语句。
  • 当需要测试多个路径时,我们也可以将 if-else 相互嵌套。
  • 当我们需要根据表达式的结果检查各种路径时,使用 else-if 梯形图。