c语言分支循环浅介绍(上)

《一》.分支部分

分支语句总的来说可以分为if语句和switch语句。

分支直白点讲就是一种选择关系,比如我去北京,可以选择火车,可以选择飞机,一个个不同的选择就是一个个分支。

 (1) if 语句

1.1单if语句介绍

if语句语法形式如下

 if(表达式)

   语句

表达式为真,则执行相对应下面的语句,表达式为假则不执行。

举个例子

输入一个成绩a,判断是否为及格(大于等于60分为及格)

#include

int main()

{

     int a=0;

     scanf("%d",&a);

     if(a>=60)

     printf("及格");//只有输入的分数a大于60(即满足if括号里面的表达式)才会执行词条语句

}

1.2  else的配合

当然了,如果不大于60,那就是不及格了,这时候就得配合else形成另一个选择分支了

例如 输入一个成绩a,如果成绩大于等于60,则该成绩及格,否则不及格

#include

int main()

{

    int a=0;

    scanf("%d",&a);

     if(a>=60)

     printf("及格");

    else

     printf("不及格");

}

1.3 if的嵌套

有了if和else的配合就可以形成多个分支的嵌套了

else if 和if 还有else表达的都是一样的意思,三个语句一样用就可以构成多重嵌套判断

举个简单的例子,假设分数大于445分是二本线,而在大于445分基础上518分是一本线,一本线以上又可以分为(小于600分)的普通一本和(大于600分)的985,211学校

#include <stdio.h>
int main()
{
    int score = 0;
    scanf("%d", &score);
    if (score > 445)
    {
        if (score < 518)
            printf("二本");
        else if (score > 518)
        {
            if (score < 600)
                printf("普通一本");
            else
                printf("上985,211");
        }

    }
    else
         printf("继续努力学习");
}

!!!!!值得注意的是else并不是和哪个if对齐就是和哪个是一队,如果写代码很混乱分不清的时候,else是和自己最近的if相匹配的,不能乱点鸳鸯谱啊

///

(2)switch分支语句

其实switch可以算是if.....else语句的特殊进化板,它比if语句的各个分支更加简结,表达的逻辑意思其实差不多。if的小伙伴是else,而switch的小伙伴是case 和default

举个if语句和switch语句对照的例子

输入月份,打印对应的天数(不考虑闰年,二月固定28天)

如果是if语句那么就是这样写的

#include<stdio.h>
int main()
{
	int month = 0;
	scanf("%d", &month);
	if (month == 1)
		printf("31天\n");
	if (month == 2)
		printf("28天\n");
	if (month == 3)
		printf("31天\n");
	if (month == 4)
		printf("30天\n");
	if (month == 5)
		printf("31天\n");
	if (month == 6)
		printf("30天\n");
	if (month == 7)
		printf("31天\n");
	if (month == 8)
		printf("31天\n");
	if (month == 9)
		printf("30天\n");
	if (month == 10)
		printf("31天\n");
	if (month == 11)
		printf("30天\n");
	if (month == 12)
		printf("31天\n");
}

而switch是这样写的

int main()
{
	int month = 0;
	scanf("%d", &month);
	switch (month)
	{
	case 1:
		printf("31天\n");
		break;
	case 2:
		printf("28天\n");
		break;
	case 3:
		printf("31天\n");
		break;
	case 4:
		printf("30天\n");
	case 5:
		printf("31天\n");
		break;
	case 6:
		printf("30天\n");
		break;
	case 7:
		printf("31天\n");
		break;
	case 8:
		printf("31天\n");
		break;
	case 9:
		printf("30天\n");
		break;
	case 10:
		printf("31天\n");
		break;
	case 11:
		printf("31天\n");
		break;
	case 12:
		printf("30天\n");
		break;
	}
}
		

也许会有人有疑问,为什么要加这么多个break呢

switch英文是开关的意思,整个switch语句可以看作是一条河开闸放水了。而break可以看作是这条河流经途中的闸门,有了break闸门就可以截断河流,不让它继续往下流了(即不执行下面剩下的语句了)。而没有break拦着当然是一路往下继续执行了,直到结束,江河入海。

比如下面的例子,我的本意是只打印1月的天数就行,可是它却全打印出来了。这就是没装闸机break的原因,导致从上流一路流到下游最后入海。

int main()
{
	int month = 0;
	scanf("%d", &month);
	switch (month)
	{
	case 1:
		printf("31天\n");
	case 2:
		printf("28天\n");
	case 3:
		printf("31天\n");
	case 4:
		printf("30天\n");
	case 5:
		printf("31天\n");
	case 6:
		printf("30天\n");
	case 7:
		printf("31天\n");
	case 8:
		printf("31天\n");
	case 9:
		printf("30天\n");
	case 10:
		printf("31天\n");
	case 11:
		printf("31天\n");
	case 12:
		printf("30天\n");
	}
}
		

在使⽤ switch 语句的时候,我们也可能遇到⼀种情况,⽐如 switch 后的表达式中的值⽆法匹
配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加⼊
default语句


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


switch 后边的 expression 的结果不是 value1 ,也不是 value2 的时候,就会执⾏
default ⼦句

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值