【初阶C语言】跟着本娥轻松学会分支语句!

    恭喜你,学习到这里说明C语言的学习正式开始了。学习完本节知识,已经可以写大部分的题目啦!

 

   

我们先来看这个:

C语言语句分类:1.表达式语句

                                2.函调用语句

                                3.控制语句

                                4.复合语句

                                5.空语句

   C语言有五大语句,我们现在要去学习的就是控制语句;而控制语句分为顺序,选择结构和循环结构,这节课我们先学会if语句和switch语句。好啦,我们先来了解一下我们这两节课需要学的:

1.if选择语句      2.switch选择语句      3.while循环语句           4.for循环语句

5.break和continue在这些语句的用法      6.do...while语句         7.goto语句

本节目录

一.if语句

               1.单分支           2.双分支          3.多分支

二.swtich语句

 上面不是重点,下面才是哦!

一.if语句

  1.单分支

      1.结构
if(表达式)
   语句;

表达式:如果表达式结构为真,则会执行语句(默认执行后面跟的一条语句,若是想要执行多条语句,需要自行加大括号),为假则什么都不会执行。另一种判断方式:若表达式的结果为0,则为假;若结果非0,为真,也会执行语句。

我们看代码

#include<stdio.h>
int main()
{
   int a=0;
   scanf("%d",&a);//输入一个数
   if(a>0)
     printf("a为正数");//如果a>0则会在屏幕打印这句话,反之什么也不打印

   return 0;
}

  2.双分支

结构:二选一

if(表达式)
  语句1;
else
  语句2;

表达式为真执行语句1,为假执行语句2

1.我们看例子:

#include<stdio.h>
int main()
{
   int a=0;
   scanf("%d",&a);//输入一个数
   if(a>0)
     printf("a为正数");//如果a>0则会在屏幕打印这句话
   else
     printf("a表示正数");//表达式为假则会打印这句话
   return 0;
}

2.可以嵌套使用

if(条件1)
{
//语句1
}
else
{
    if(条件2)
     {
        //语句2
     }
     else
     {
        //语句3
     }
    
}

一般可以用嵌套都可以同多分支结构,所以嵌套一般不用,比较的繁琐。

3.错误案例

一般是if跟else的错误用法,跟条件的写法。

 if跟else匹配问题

//错误写法
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)//是这个if和下面的else匹配,与对齐不对齐没有关系
			printf("hehe\n");//所以会输出hehe
	else
			printf("haha\n");
	
	return 0;
}
//正确写法
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)//这里a!=1不会进入括号,就是什么都不会输出
	{          //需要自己加大括号把想要匹配的if和else括起来
		if (b == 2)
			printf("hehe\n");
		else
			printf("haha\n");
	}

	return 0;
}

条件写法问题

//如果年龄在18-30岁之间就输出青年,反之什么也不输出
//错误写法
#include<stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (18<=age<=30)//错误写法
		printf("青年\n");//只要输入>18的都会输出青年
	return 0;
}
//分析:我们输入50,理论上什么也不会输出。但是,它会先执行前面的表达式:18<50,显然
//18<50是成立的,也是就真,那就是1(真默认1,假为0);然后再执行后面表达式:1<30,
//显然这个也是成立的,也就是真,那就会执行后续语句,这就是也会输出青年的原因!


//正确写法
#include<stdio.h>
int main()
{
	//如果年龄大于等于18-成年人
	int age = 0;
	scanf("%d", &age);
	if (age>=18 && age<=30)//括号里面的条件我们需要写成逻辑结构,需要同属满足才会为真
		printf("青年\n");

	return 0;
}
//还有一种错误写法
//本应该是这样写
if(a==1)
//却写成if(a=1),这样是错误的!


  3.多分支

我们先看结构

if(表达式1)
  语句1;
else if(表达式2)
  语句2;
else
  语句3

 在多分支里面,可以有多个else if(表达式),但是开头的If和结尾的else只有一个。

 else if 后面要跟条件,else后面不能跟条件

 我们看一道题

//按照不同年龄输出不同数据
//age<18  - 未成年
//18~30   - 青年
//31~50   - 中年
//51~70   - 中老年
//71~99   - 老年
//>99     - 老寿星
#include<stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
		printf("未成年\n");
	else if (age <= 30)
		printf("青年\n");
	else if (age <= 50)
		printf("中年\n");
	else if (age <= 70)
		printf("中老年\n");
	else if (age <= 99)
		printf("老年\n");
	else
		printf("老寿星\n");
	return 0;
}

不同的年龄输出不同的数据,因为条件比较多,所以适合多分支结构。

最上面的条件都不满足的时候,就会执行最后else的语句。

你说你学上瘾了?

那我们继续哈!

二.switch语句

结构:

switch(整形表达式)
{
  语句项;
}

 整形表达式可以是数字或者字符,不能为小数。

switch(整形表达式)
{
  case 整形常量表达式:语句;//case和整形常量表达式中间要用空格隔开,跟语句中间要用冒号
  default:语句;
}

switch语句要与break语句相互搭配,但是不能使用continue语句

switch语句允许嵌套

一般用于输入数字或者字符就输出什么

我们看一个例子:

输入1,输出星期一,以此类推,输入7,输出星期天

#include<stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);//4
	switch (day)
	{
	case 1:
		printf("星期1\n");
		break;
	case 2:
		printf("星期2\n");
		break;
	case 3:
		printf("星期3\n");
		break;
	case 4:
		printf("星期4\n");
		break;
	case 5:
		printf("星期5\n");
		break;
	case 6:
		printf("星期6\n");
		break;
	case 7:
		printf("星期天\n");
		break;
	}
	
	return 0;
}

我们可以看到,每一个分号前面都有一个break,break的意思就是跳出该程序,不会再执行其他。

比如,我们输入4,此时day=4,然后就会选择case后面为4的语句,就会在屏幕上打印星期四,然后会执行break,跳出循环。所以输入一个4,只会打印星期四,其他的一律不打印。

那有同学就有疑问了,我就要输入1-7之外的数字,看你怎么办!那也不怕,满足你的需求,我们对程序改进一下。

#include<stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);//4
	switch (day)
	{
	case 1:
		printf("星期1\n");
		break;
	case 2:
		printf("星期2\n");
		break;
	case 3:
		printf("星期3\n");
		break;
	case 4:
		printf("星期4\n");
		break;
	case 5:
		printf("星期5\n");
		break;
	case 6:
		printf("星期6\n");
		break;
	case 7:
		printf("星期天\n");
		break;
    default:printf("抱歉啦,输入错误!");
            break;
	}
	
	return 0;
}

我们在最后面加了default,只要你输入的数据没有跟case后面的匹配,通通会交给default处理。

格式:

default:语句;//注意,default和语句之间用冒号隔开,结尾要用分号
        break;

同学疑问又来了,那能不能输入不同的数据输出同一个结果呢?那当然也是可以的,我们把题目改一下

例子二:

输入1-5,输出工作日;输入6-7,输出休息日。

​#include<stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);//4
	switch (day)
	{
	case 1://输入1,会从这里进入,因为没有break会继续往下执行,直到遇到break结束
	case 2:
	case 3://输入3,会从这里开始,也是遇到break才结束
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;
    default:printf("抱歉啦,输入错误!");
            break;
	}
	
	return 0;
}

由此可见,我们可以根据break灵活控制语句的执行。

顺序可以不一样,如case 1到case 4可以换顺序;case1-5也可以跟case6-7换顺序;但是其他的不可以随便调换。最好也不要调换

啊,你都看到这里了,也不打算给我点个赞再走嘛?

 

猜你喜欢

转载自blog.csdn.net/2301_77053417/article/details/131767129