黑马程序猿_C语言之选择结构

C语言的选择结构有两种:if语句、switch语句

1.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语句的循环体只有其后的一句,不建议这样写,容易出错。

2.使用的注意点:

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(10>6)
{
int a=5;
}
printf(%d\n",a); //此处的a会报错,因为没有定义a,大括号里面的a的作用域只限于括号内
main()
{
if(10>6)
  int a=5;
}  //这样也是不对的,因为a的作用域不明确.

3.几种if语句的执行效率比较:

#include <stdio.h>

int main()
{
// 1.提示输入分数值
printf("请输入分数值:\n");

// 2.接收输入
int score;
scanf("%d", &score);

// 3.判断等级
if (score>=90 && score<=100)   //不能写成100>=score>=90,同等级的运算符运算顺序是从左到右的,先判断100大于score,不管结果是1还是0,此条件的最后结果都为0
{ // [90, 100]
printf("A\n");
}
else if (score>=80) 
{// [80, 89] 
printf("B\n");
}
else if (score>=70) 
{ // [70, 79]
printf("C\n");
} 
else if (score>=60) 
{ // [60, 69]
printf("D\n");
} 
else 
{ 
printf("E\n");
}
 //另一种
if (score>=90 && score<=100)
{ // [90, 100]
printf("A\n");
}
else if (score>=80 && score<=89) 
{ // [80, 89]
printf("B\n");
} 
else if (score>=70 && score<=79) 
{ // [70, 79]
printf("C\n");
} 
else if (score>=60 && score<=69) 
{ // [60, 69]
printf("D\n");
} 
else 
{ 
printf("E\n");
}

//另一种
if (score>=90 && score<=100) 
{ // [90, 100]
printf("A\n");
}

if (score>=80 && score<=89)
{ // [80, 89]
printf("B\n");
}

if (score>=70 && score<=79)
{ // [70, 79]
printf("C\n");
}

if (score>=60 && score<=69)
{ // [60, 69]
printf("D\n");
}

if (score<=59)
{ 
printf("E\n");
}
return 0;
}

其中最后一种的执行效率最差,因为每个if语句都判断,第一种执行效率最高,判断条件少。

4.switch选择结构

switch(数值)
{
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。

switch(10)
{
case 10:
case  9:         // 可以这样写,表示a的值为9和10都输出A
       printf("A\n");
case 5:
      printf("B\n");
case 2:
      printf("C\n");
      break;
default:
       printf("D\n");
       break;
} 

此外,如果要在case分支语句里定义新的变量,必须使用大括号,这样才能避免作用域不明确的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值