C语言学习_DAY_4_判断语句if_else和分支语句switch_case【C语言学习笔记】

高质量博主,点个关注不迷路🌸🌸🌸

目录

1.案例引入

2.if判断语句的语法与注意事项

3.switch多分支语句的语法与注意事项


前言: 书接上回,我们已经学习了所有的数据类型、运算符,并且可以书写简单的运算式子来解决一些问题了。那么下面进入到C语言学习的下一阶段:判断语句 的学习。对于任意一种编程语言,我们用的最多的几种结构,无非就是 顺序结构、分支(判断)结构 与 循环结构,顺序结构比较简单,就是指程序是按从上到下的顺序依次执行的一种结构。这种结构我们最初在写第一段C语言的程序时就用过了,因此无须赘述。而今天学习第二种结构:分支(判断结构),并用它解决更多的编程问题。

1.案例引入

首先,如前言所述,学习每一门编程语言,我们都要学习顺序结构、判断结构和循环结构这三种结构,这是从宏观上看,我们必须要学习的三种结构。那么判断结构,有哪些实际的意义呢?我们下面举一个简单的例子:

假如有这么一个需求:

我们需要让用户输入两个数,并帮他其中较大的那个数字打印在控制台,我们要怎么做呢?

这需求看起来很简单,但我们目前学习的内容是不足以解决这类比较并执行的任务的。因此需要引入if-else判断语句。


2.if判断语句的语法与注意事项

下面用一段简单的代码,展示if-else判断语句的语法格式:

#include<stdio.h>
 
int main(){
 
    int a = 3;

    int b = 4;

    if(a > b){
        printf("%d",a);
    }
    else{
        printf("%d",b);
    }
   	
    return 0;
}

从这段代码可以看出if-else的语法格式:

if (判断表达式){

        若表达式为真,执行的内容

}

else{

       若表达式为假,执行的内容

}

其中具体的判断表达式,则根据我们的需求进行编写,如果你要问什么是表达式,请看上一篇笔记。

之后我们补充几点注意事项:

首先,if-else语句,可以没有else,只有if,即else部分并不是必须的,但是if是必须有的,

不能没有if来一个else。(这个很好理解,if才是做判断的地方,没有if,else自然没有意义)

其次,如果if语句后面的执行部分,只有一句代码,可以不写大括号,即:if () 表达式

但这种写法不推荐,推荐无论是否是一行执行代码,都写上大括号,便于代码的阅读。

接下来是if-else if-else 的多判断语句的语法格式:

#include<stdio.h>
 
int main(){
 
    int x = 3;

    if(x > 0){
        printf("x是正数");
    }
    else if (x > 0){
        printf("x是负数");
    }
    else{
        printf("x是0");
    }
   	
    return 0;
}

上面这段代码的逻辑是:

如果x的值大于0,则输出x是正数,否则执行判断x是否小于0,如果是,则输出x是负数,如果前两个都不满足,则x为0。

于是得到if-else if-else多判断语句的语法格式:

if (判断表达式1){

        若表达式1为真,执行的内容

}

else if(判断表达式2){

       若表达式1为假,但判断表达式2为真,执行的内容

}

else{

       若表达式1和2都为假,执行的内容

}

需要注意的是,if-else if-else型的多判断语句,else if的数量可以是无穷多的,例如我们想要判断当前用户输入的值对应的月份,可以这么写:

#include<stdio.h>
 
int main(){
 
    int x = 3;

    if(x == 1){
        printf("一月");
    }
    else if (x == 2){
        printf("二月");
    }
    else if (x == 3){
        printf("三月");
    }
    ...
   	
    return 0;
}

注意,多个else if时,每个表达式都是按从上到下顺序访问的,即:先判断第一个if的表达式,如果为假,则判断第一个else if,如果还为假,则判断第二个else if,如果判断到某个分支,发现成立(为真),则不会继续向下判断和执行其他的分支的内容。


3.switch多分支语句的语法与注意事项

下面讲解分支结构中比if稍微不常用一些的switch语句。这种语句没有if那么“火爆”,但作为系统学习的入门笔记,需要进行讲解。

我们先看这样一个小的案例:

假如我们需要实现:当用户输入一个在[1,7]之间的整数时,我们在控制台打印该数字对应星

期几,例如用户输入3,我们需要在控制台输出:星期三。

首先,应该想到可以用上面学习的if-else if-else的多重判断语句实现,但这样写,代码量太大了,而且看起来比较臃肿,不够简洁,我们能否用一种简洁的方式实现呢?于是我们引入switch case的分支语句:

switch(num){


        case num1:


            执行内容


            break;


        case num2:


            执行内容


            break;


             ...


    }

上面是switch case语句的语法格式,它的执行逻辑是这样的:

在switch()中,放置一个整型数或者整型变量,而后在下面的case关键字后面写上一个整型数或者整型变量,当switch()的括号中的数字等于case关键字后面的整型数时,会执行对应的内容,其中case 的个数是无限的。

于是基于switch case 的语法特点,我们很容易实现上面的输出周几的需求:

#include<stdio.h>

int main(){
	int num;
	printf("请输入[0-7]中的一个数字\n");
	scanf("%d",&num); 
	switch(num){
		case 1:
			printf("星期一");
			break;
		case 2:
			printf("星期二");
			break;
		case 3:	
			printf("星期三");
			break;
		case 4:
			printf("星期四");
			break;
		case 5:
			printf("星期五");
			break;
		case 6:
			printf("星期六");
			break;
		case 7:
			printf("星期日");
			break;
	}
	return 0; 
}

下面补充一个重要的细节,这个细节在switch case中经常容易被忽略:

break关键字的使用:break关键字,表示中断的意义。在switch case语句中,每一个case最后都需要有一个break,否则会导致执行该case之后,并不会跳出switch case结构,而是会继续向下执行下一个case,这会导致我们的程序出现意外的错误。例如我们看下面这段代码:

#include<stdio.h>

int main(){
	int num = 2;
	switch(num){
		case 1:
			printf("星期一");
			break;
		case 2:
			printf("星期二");
			
		case 3:	
			printf("星期三");
			break;
		case 4:
			printf("星期四");
			break;
		case 5:
			printf("星期五");
			break;
		case 6:
			printf("星期六");
			break;
		case 7:
			printf("星期日");
			break;
	}
	return 0; 
}

这段代码在case 2的后面没有break,而且当前的num变量的值恰好是2,于是我们运行代码会发现:

也就是说,最终输出了两个case 的内容,这与我们的预期显然是不对的,我们的预期,此时只应该输出星期二,因此我们一定要注意break关键字不要漏掉了!!! 

那么到这里,我们的分支(判断)结构以及在C语言中的两种实现方式:if else和switch case语句就都学习完毕了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

跳探戈的小龙虾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值