c语言中的分支语句

在c语言中可用ifswitch实现选择结构
其中if语句用来实现两个分支的选择,switch用来实现多分支的选择结构

1.if语句

if语句

在if语句中一般形式为

if  (表达式)
    语句

若表达式结果为则执行语句 为则不执行
在c语言中0为假(不成立),⾮0表⽰真(成立)
例如以下代码

#include <stdio.h>
int sum =0;
int main()
{
  scanf("%d",&sum);
   if(sum)
  printf("hehe\n");
 return 0;
}

如果输入sum值为0则不会打印 若输入值为非零就就打印出hehe 
 

//以下代码用于判断输入值是否是偶数
#include <stdio.h>
int main()
{
 int a=0;
scanf("%d",&a);
  if(a%2==0)
  {
   printf("%d是偶数",a);
  }
 return 0;
}

注:if语句判断部分的括号后不可加; 加上就会使得之后的语句不受控制 就比如上面用于判断偶数的代码 如果在if (a%2==0)后加上; 这样无论输出什么数都会打印出是偶数

在以上代码中可以用来判断一个数是否是偶数 但如果要判断是奇数或者偶数应该怎么样表达呢
在这种情况是我们就可以用到if...else...语句

if...else...语句
形式如下

if  (表达式)
    语句1
else
    语句2
#include <stdio.h>
int main()
{
 int a=0;
scanf("%d",&a);
  if(a%2==0)
  {
   printf("%d是偶数\n",a);
  }
  else
  { 
   printf("%d是奇数\n",a);
  }
 return 0;
}

默认if语句和else语句只能控制⼀条语句,如果我们要同时控制2条语句那就要使⽤ {} 将代码括起来

嵌套if语句

在if...else...语句中内可以再嵌套if...else...语句
如要判断一个数是大于100还是小于100还是等于100就可以用到嵌套if语句

#include <stdio.h>
int main()
{
 int num = 0;
 scanf("%d", &num);
 if(a>100)
  { 
    printf("输入值大于100\n");
  }
 else
{
if(a==100) 
  {
    printf("输入值等于100\n");
  }
 else
  {
 printf("输入值小于100\n");
  }
}
 return 0;
}

这段代码还可以简化成 
 

#include <stdio.h>
int main()
{
 int num = 0;
 scanf("%d", &num);
 if(a>100)
  { 
    printf("输入值大于100\n");
  }
 else if(a==100) 
  {
    printf("输入值等于100\n");
  }
 else
  {
 printf("输入值小于100\n");
  }

 return 0;
}

练习:如果要判断两个数的大小 可用以下代码

#include <stdio.h>

int main() {
    int a =0;
    int b =0;
    while (scanf("%d %d", &a, &b) != EOF) 
        if(a>b)
        {
            printf("%d>%d\n",a,b);
        }
        else if(a==b)
        {
            printf("%d=%d\n",a,b);
        }
        else 
        {
            printf("%d<%d\n",a,b);
        }
    }
    return 0;
}

在使用if...else...语句时 如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配
同时在使用时尽量把if后的语句用{}扩起来

2.switch

switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重 的 else if 改成更易⽤、可读性更好的形式 但也不是所有的if语句都可转化为switch语句

switch (expression) 
{
 case value1: statement
 case value2: statement
 default: statement
}

注: switch 后的 expression 必须是整型表达式     case 后的值,必须是整形常量表达式
(字符类型也是归类到整形家族 因为字符的本质时ASCII的值,这个值是整数)

在使⽤ switch 语句的时候,我们经常可能遇到⼀种情况,⽐如 switch 后的表达式中的值⽆法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加⼊ default子句,switch 后边的 expression 的结果不是 value1 ,也不是 value2 的时候,就会执⾏ default ⼦句

注:在switch语句中case语句于default语句的顺序没有要求 但一般将default语句放在末尾li

:要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70~84分,C等为60~69分,D等为60分以下。成绩的等级由键盘输入。
这是一个多分支选择问题,根据百分制分数将学生成绩分为4个等级,如果用i语句来处理至少要用3层嵌套的i,进行3次检查判断。用switch语句,进行一次检查即可得到结果。

#include <stdio.h>
int main()
{ char great=0;
  scanf("%c",great);
  prinf("Your score:")
 switch(great)
{
 case('A'):
printf("85~100\n");
break;
 case('B'):
printf("70~84\n");
break;
 case('C'):
printf("60~69\n");
break;
 case('D'):
printf("<60\n");
break;
 default:
printf("enter date error\n");
}
return 0;
}



该代码的流程图如下 

在以上代码的case语句 若无break将输出
Your score:85~100
70~84
6069
<60
enter data error!

 

练习 :下面这段代码输出结果是什么?

#include <stdio.h>
int main() {
	int x = 3;
	int y = 3;
	switch (x % 2) {
	case 1:
		switch (y)
		{
		case 0:
			printf("first");
		case 1:
			printf("second");
			break;
		default: printf("hello");
		}
	case 2:
		printf("third");
	}
	return 0;
}
#include <stdio.h>
int main() {
	int x = 3;
	int y = 3;
	switch (x % 2)//x%2结果为1 在这个switch语句中加入到case1 因为case1后没有break之后再进入到case2
 {
	case 1:
		switch (y)//y为3 在这个switch语句中直接进入default语句
		{
		case 0:
			printf("first");
		case 1:
			printf("second");
			break;
		default: printf("hello");//打印hello 内部switch语句结束
		}
	case 2:
		printf("third");//打印third 外部switch语句结束
	}
	return 0;
}

所以以上代码最终输出结果为hellothird 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mljy.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值