C语言的选择结构有两种:if语句、switch语句
1.用if语句实现选择结构
if语句的一般形式
1.if(条件)
{
语句1;
语句2;
....
}
2.if(条件)
{
语句1;
语句2;
....
}
else
{
语句3;
}
3.if(条件1)
{
语句1;
语句2;
....
}
else if(条件2)
{
语句3;
语句4;
....
}
else if(条件3)
{
语句5;
语句6;
....
}
4.if(条件)
语句; // 此结构if语句的循环体只有其后的一句,不建议这样写,容易出错。
例如,
#include <stdio.h>
int main()
{
/*
// 人数
int count = 40;
if ( count >= 50 )
{
printf("开班!!!\n");
printf("准备机器!!!\n");
}
else
{
printf("不开班!!!\n");
printf("不准备机器!!!\n");
}*/
/*
int a = 6;
if (a++ > 10) // a == 7
{
printf("A\n");
}
else if (a++ > 5) // a == 8
{
printf("B\n");
}
else if (a++ > 3)
{
printf("C\n");
}
else
{
printf("D\n");
}
printf("a的值是%d\n", a);
*/
int a = -10;
if (a>1)
printf("A\n");
printf("B\n");
if使用注意
1.条件中判断是否相等时,常量一般放在左边,变量一般放在右边,如:
if(0==a) //if(a==0) 如果这样写,容易写成a=0,结果只会一直输出else中的内容
{
printf("A\n");
}
else
{
printf("B\n");
}
2.if语句后不要跟“;”,如:
if(10>6); // 代码块的定义问题,if后面加了;大括号里面的内容与之无关
{
int a=5;
}
3.if变量的作用域问题,如:
if(10>6)
{
int a=5;
}
printf(%d\n",a); //此处的a会报错,因为没有定义a,大括号里面的a的作用域只限于括号内
main()
{
if(10>6)
int a=5;
} //这样也是不对的,因为a的作用域不明确.
2.用switch实现多分支选择结构
switch语句的一般形式:
switch(数值)
{
case 数值1:
语句1;
break;
case 数值1:
语句2;
break;
case 数值1:
语句3;
break;
default:
语句4;
break;
}
{
case 数值1:
语句1;
break;
case 数值1:
语句2;
break;
case 数值1:
语句3;
break;
default:
语句4;
break;
}
break的作用是退出整个switch语句,如果case后面没有break,程序就会执行后面所有case中的语句,直到遇到break为止,如:
switch(10)
{
case 10:
printf("A\n");
case 5:
printf("B\n");
case 2:
printf("C\n");
break;
default:
printf("D\n");
break;
} //此语句会输出A和B。