Cprogramming 简明教程

C - The If Statement

条件执行指令是计算机程序的基本要求。C 中的 if 语句是主要的条件语句。C 允许使用可选的 else 关键字来指定如果 if 条件为 false 则要执行的语句。

C - if Statement

if 语句是 C 编程中很基础的 decision control statement 。具体执行块中一个或多个语句将根据 if 语句中的布尔条件为真或假而决定。

Syntax of if Statement

if 语句的编写符合以下语法:

if(boolean_expression) {
   /* statement(s) will execute if the boolean expression is true */
}

How if Statement Works?

C 使用一对花括号形成代码块。如果布尔表达式求值为真,则 if 语句中的代码块将被执行。

如果布尔表达式求值为假,则 if 语句结尾后(即闭括号后)的第一组代码将被执行。

C 编程语言将所有非零且非空值视为真。如果值要么为零要么为空,则被视为假值。

Flowchart of if Statement

if 语句的行为由以下流程图表示:

if statement

Flowchart Explained

当程序控制遇到 if 语句时,此条件将得到评估。

如果条件为真,则 if 块中的语句将被执行。

如果条件为假,则程序流程将绕过条件块。

if 块后的语句将被执行,以继续程序流程。

Example of if Statement in C

该示例说明了 if 语句的最简单用例。它确定并告知用户某个变量的值是否小于 20。

#include <stdio.h>

int main (){

   /* local variable declaration */
   int a;

   // run the program for different values of "a"
   // Assign 12 first and 40 afterwards

   a = 12;  //change to 40 and run again
   printf("Value of a is : %d\n", a);

   // check the boolean condition using if statement

   if(a < 20){
      //if the condition is true, then print the following
      printf("a is less than 20\n" );
   }
   return 0;
}

运行以上程序并检查其输出:

Value of a is : 12
a is less than 20

现在分配大于 20 的数字。 if 条件未被执行。

Value of a is: 40

if Statement with Logical Operations

你可以在 if 语句中括号内的 &&|| 运算符中放置复合布尔表达式。

Example

在以下示例中,比较了三个 variables “a”、“b”和“c”。当“a”大于“b”和“c”时, if 块将被执行。

#include <stdio.h>

int main () {

   /* local variable declaration */
   int a, b, c;

   /*use different values for a, b and c as
   10, 5, 7
   10, 20, 15
   */

   // change to 10,20,15 respectively next time
   a = 10; b = 5; c = 7;

   if (a>=b && a>=c){
      printf ("a is greater than b and c \n");
   }
   printf("a: %d b:%d c:%d", a, b, c);

   return 0;
}

运行代码并检查其输出:

//when values for a, b and c are 10 5 7
a is greater than b and c
a: 10 b:5 c:7

//when values for a, b and c are 10 20 15
a: 10 b:20 c:15

注意,紧跟在条件块后面的语句在该块执行之后被执行。如果条件为假,则程序直接跳转到该块后的语句。

Multiple if Statements

如果你有多个条件要检查,则你可以多次使用 if 语句。

Example

在此示例中,净应付金额是通过对账单金额应用折扣来计算的。

如果金额在 1000 至 5000 之间,则适用 5% 的折扣,如果金额高于 5000,则适用 10% 的折扣。低于 1000 的采购不适用折扣。

#include <stdio.h>

int main () {

   // local variable declaration
   int amount;
   float discount, net;

   /*Run the program for different values
   of amount – 500, 2250 and 5200. Blocks in
   respective conditions will be executed*/

   // change to 2250 and 5200 and run again
   amount = 500;

   if (amount < 1000){
      discount=0;
   }
   if (amount >= 1000 && amount<5000){
      discount=5;
   }
   if (amount >= 5000){
      discount=10;
   }
   net = amount - amount*discount/100;
   printf("Amount: %d Discount: %f Net payable: %f", amount, discount, net);

   return 0;
}
//when the bill amount is 500
Amount: 500 Discount: 0.000000 Net payable: 500.000000

//when the bill amount is 2250
Amount: 2250 Discount: 5.000000 Net payable: 2137.500000

//when the bill amount is 5200
Amount: 5200 Discount: 10.000000 Net payable: 4680.000000

Checking Multiple Conditions With if Statement

你还可以使用一个 if 语句中的逻辑运算符检查多个条件。

Example

在这个程序中,当“phy”和“maths”成绩的平均分大于等于 50 时,学生才被声明为 passed 。此外,学生在两个科目中都应该获得超过 35 分。否则,学生将被声明为 failed

#include <stdio.h>

int main (){
   /* local variable declaration */
   int phy, maths;
   float avg;

   /*use different values of phy and maths
   to check conditional execution*/

   //change to 40, 40 and 80, 40
   phy = 50; maths = 50;
   avg = (float)(phy + maths)/2;
   printf("Phy: %d Maths: %d Avg: %f\n", phy, maths, avg);

   if (avg >= 50 && (maths >= 35 && phy >= 35)){
      printf("Result: Pass");
   }

   if (avg<50) {
      printf("Result: Fail\n");
   }
   return 0;
}

运行代码并检查其输出:

//when marks in Phy and Maths - 50 50
Phy: 50 Maths: 50 Avg: 50.000000
Result: Pass

//when marks in Phy and Maths - 40 40
Phy: 40 Maths: 40 Avg: 40.000000
Result: Fail

//when marks in Phy and Maths - 80 40
Phy: 80 Maths: 40 Avg: 60.000000
Result: Pass