选择语句
不应该以聪明才智和逻辑分析能力来评判程序员,而要看其分析问题的全面性。
目录
1. 逻辑表达式
逻辑表达式只有两个值,即假(0)和真(1)。
1.1 关系运算符
< , > , <= , >=
1.2 判等运算符
==(等于,注意是两个等号) , !=(不等于)
1.3 逻辑运算符
|| (或),&& (且),! (非)
逻辑运算符产生的结果是0或1。逻辑运算符把任何非零值操作数作为真值来处理,同时将任何0操作数作为假值来处理。
2. if 语句
格式: if (表达式) 语句
if((i >= 0 && i < 7) i++;
2.1 复合语句
[复合语句]: {多条语句}
比如:
if (line_num == MAX_LINES) {
line_num == 0;
page_num++;
}
2.2 else 子句
带有 else 子句的 if 语句:if(表达式)语句;else 语句;
举个例子:
if (i > j)
max = i;
else
max = j;
//找出i,j,k三个数中的最大值。
if(i > j){
if(i > k)
max = i;
else
max = k;
} else {
if(j < k)
max = k;
else
max = j;
}
2.3 级联式 if 语句
if(表达式)
语句;
else if(表达式)
语句;
…
else if(表达式)
语句;
else
语句;
举个例子:
int main(void)
{
float commission,value;
printf("Enter value of trade: ");
scanf("%d",&value);
if (value < 2500.00f)
commission = 30.00f + .017f * value;
else if (value < 6250.00f)
commission = 56.00f + .0066f * value;
else if (value < 20000.00f)
commission = 76.00f + .0034f * value;
else if (value < 50000.00f)
commission = 100.00f + .0022f * value;
else if (value < 500000.00f)
commission = 155.00f + .0011f * value;
else
commission = 255.00f + .0009f * value;
printf("Commission: $%.2f\n",commission);
return 0;
}
2.4 悬空 else 问题
if
和 else
必须对应;
可以适当缩进或者用花括号来处理悬空else问题。
缩进:
if (y != 0)
if (x != 0)
result = x / y;
else
printf("Error: y is equal to 0\n");
花括号(复合语句)
if (y != 0) {
if (x != 0)
result = x / y;
} else
printf("Error: y is equal to 0\n");
2.5 条件表达式
条件运算符由符号?和符号:组成,两个符号必须按如下格式一起使用:
[条件表达式] 表达式1 ? 表达式2 : 表达式3
条件运算符是C运算符中唯一 一个需要三个操作数的运算符。因此,经常把它称为三元运算符。
条件表达式应该读作:如果表达式1成立,那么表达式2,否则表达式3。
if (i > j)
return i;
else
return j;
上述代码可以用三元运算符实现简化:
return i > j? i : j;
2.6 C99 中的布尔值
在C89中,一般使用TRUE和FLASE这样的名字来定义宏:
#define TRUE 1
#difine FALSE 0
在C99中,布尔变量可以声明为:
_Bool flag;
C99中还提供了一个新的头<stdbool.h>,该头文件提供了bool宏。如果程序中包含了这个头文件,可以这样写:
bool flag;
<stdbool.h>还提供了两个true和false两个宏,分别代表1和0。
flag = true;
flag = false;
<stdbool.h>头用起来特别方便。
3. switch 语句
下面的级联式 if 语句根据成绩的等级显示出相应的英语单词:
if (grade == 4)
printf("Excellent");
else if (grade == 3)
printf("Good");
else if (grade == 2)
printf("Average");
else if (grade == 1)
printf("Poor");
else if (grade == 0)
printf("Failing");
else
printf("Illegal grade");
C语言提供了 switch 语句作为级联式 if 语句的替换。下面的 switch 语句可以代替上面的级联式 if 语句:
switch (grade) {
case 4: printf("Excellent");
break;
case 3: printf("Good");
break;
case 2: printf("Average");
break;
case 1: printf("Poor");
break;
case 0: printf("Failing");
break;
default: printf("Illegal grade");
break;
}
多个分支标号可以放在同一组语句的前面:
switch (grade) {
case 4:
case 3:
case 2:
case 1: printf("Passing");
break;
case 0: printf("Failing")
break;
default: printf("Illegal grade");
break;
}
也可以写成这样:
switch (grade) {
case 4: case 3: case 2: case 1:
printf("Passing");
break;
case 0: printf("Failing")
break;
default: printf("Illegal grade");
break;
}
default分支不一定要放在最后,也可以没有default分支
- break 语句的作用
执行 break 语句可以跳出 switch 语句,继续执行后面的语句。