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 编程语言将所有非零且非空值视为真。如果值要么为零要么为空,则被视为假值。
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