【学习笔记】【C语言】选择结构-if
1.if的第1种结构
if(条件)
{
语句1;
语句2;
......
}
如果if右边小括号()中的条件成立,也就是为“真”时,就会执行大括号{}中的语句;
如果条件为假,就不执行大括号{}中的语句。这里的if是关键字。
C语言规定所有非0值都为“真”
2.if的第2种结构
if(条件1)
{
语句1;
语句2;
......
}
else
{
}
如果if右边小括号()中的条件成立,也就是为“真”时,就会执行大括号{}中的语句,
如果条件为假,就执行else中{}里面的语句。
3.if的第3种结构
if(条件1)
{
语句1;
语句2;
......
}
else if(条件2)
{
}
else if(条件3)
{
}
else if(条件4)
{
}
else
{
}
如果if右边小括号()中的条件1成立,也就是为“真”时,就会执行大括号{}中的语句,
如果条件1不成立就判断条件2成不成立,成立就执行不成立就继续往下走判断条件3,以此类推
如果如果所有的条件为假,就执行else中{}里面的语句。
注意:这么多大括号中,只有1个大括号内的代码会被执行。
4.if的第4种结构
如果if后面大括号{}中只有一行代码时,可以省略大括号。
if (条件)
语句1;
为了保证代码的可读性,不建议省略大括号!!!
5.语句嵌套
if语句内部是可以嵌套其他if语句的,如下面的例子
int a = 7;
if ( a > 0 )
{
printf("a的值大于0\n");
if ( a<9 )
{
printf("a的值小于9");
}
}
6.注意
1》
千万不要在if的小括号后面添加分号
if ( a>8 );
2》
假设本来是想判断a是否为0,那么本应该写if (a == 0),若误写成了if (a = 0),那将是一件非常可怕的事情,因为编译器又不报错,这样的BUG就难找了。因此,像a==0这样的表达式,最好写成0==a,若误写成0=a,编译器会直接报错。
// 不推荐
if (a == 0) {
}
// 推荐
if (0 == a) {
}
3》
在C语言中,可以不保存关系运算的结果。
int a = 10;
a > 10;
a == 0;
这里又是一个陷阱,假设你的本意是想给a赋值为0,那么本应该写a = 0; ,若误写成a == 0; ,那将又是一个非常难找的BUG,因为编译器根本不会报错。
7.练习
1 /* 2 输入一个整数score代表分数,根据分数输出等级(A-E)(用两种方式) 3 A:90~100 4 B:80~89 5 C:70~79 6 D:60~69 7 E:0~60 8 */ 9 10 #include <stdio.h> 11 12 int main() 13 { 14 // 1.提示输入 15 printf("请输入分数值:\n"); 16 17 // 2.接收输入 18 int score; 19 scanf("%d", &score); 20 21 // 3.判断等级 (性能最高) 22 if (score>=90 && score<=100) { // [90, 100] 23 printf("A\n"); 24 } else if (score>=80) { // [80, 89] 25 printf("B\n"); 26 } else if (score>=70) { // [70, 79] 27 printf("C\n"); 28 } else if (score>=60) { // [60, 69] 29 printf("D\n"); 30 } else { // (-∞, 59] 31 printf("E\n"); 32 } 33 34 /* 性能中等 35 if (score>=90 && score<=100) { // [90, 100] 36 printf("A\n"); 37 } else if (score>=80 && score<=89) { // [80, 89] 38 printf("B\n"); 39 } else if (score>=70 && score<=79) { // [70, 79] 40 printf("C\n"); 41 } else if (score>=60 && score<=69) { // [60, 69] 42 printf("D\n"); 43 } else { // (-∞, 59] 44 printf("E\n"); 45 }*/ 46 47 /* 性能最差 48 if (score>=90 && score<=100) { // [90, 100] 49 printf("A\n"); 50 } 51 52 if (score>=80 && score<=89) { // [80, 89] 53 printf("B\n"); 54 } 55 56 if (score>=70 && score<=79) { // [70, 79] 57 printf("C\n"); 58 } 59 60 if (score>=60 && score<=69) { // [60, 69] 61 printf("D\n"); 62 } 63 64 if (score<=59) { // (-∞, 59] 65 printf("E\n"); 66 }*/ 67 return 0; 68 }