C专项——分支语句(选择语句)

一、if语句

1、语法结构

if语句语法结构
表达式的值为真,执行后面的语句,为假跳过。(注意!!在C语言中0为假,非0为真。)

2、易错提示

else悬空

#include<stdio.h>
int main()
{
    int x=1;
    int y=2;
    
    if(x==1)
        if(y==2)
            printf("xxxyyy\n");
    else
        printf("******\n");
        
    return 0;
}

此时,按照空格看应该是输出六个 ’ * ’ ,但是结果如下:
在这里插入图片描述
原因是:if 语句中的 else 会自动与离它最近的上面的第一个 if 结合,上面就是一个 if 嵌套了一个 if - else 。
如果要输出预期的结果,可以添加一对 { }。如下:
在这里插入图片描述

表达式书写错误

 #include<stdio.h>
int main()
{
	int x = 1;
	if (x = 3)
	{
		    printf("******\n");
	}
	return 0;
}

如上,按一般逻辑应该 x 不等于3,不执行下面的语句。但要注意 ‘ = ’ 和 ‘ == ’ 的区别。 前者代表赋值,表达式的值既是赋予的值;而后者表示判断两边是否相等。那么,表达式结果为3,非0为真,输出的结果就是六个 ’ * '。
若是因为这个错误,编译器检查没有语法错误是不会报错的。所以,为了防止犯这个错误,可以把要判断的常量写在前面,就可以很好的避免这个错误

3、实例

判断一个数是否为奇数

#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;
}

输出0-100之间的奇数

#include<stdio.h>

int main()
{
	int a = 1;
	for (a = 1; a <= 100; a++)
	{
		if (a % 2 != 0)
		{
			printf("%d\n", a);
		}
	}
	return 0;
}

二、switch语句

switch语句是一种适用于多分支的分支语句

1、语法结构

switch语句语法结构
注意:case语句单独使用无法实现分支的功能,所以需要和break一起搭配使用。

2、break的灵活使用

在switch语句中,一旦满足其条件进入case语句,它就会一直顺序执行,直到遇到break才会跳出。(所以编程时最好记得给最后一个case添加一个break,防止修改代码时忘记加,造成逻辑混乱)

所以下面就通过两个代码的对比来感受一下,break的灵活使用:

每个case语句都加break

#include<stdio.h>

int main()
{
	int grade = 0;
	scanf("%d", &grade);
	switch (grade)
	{
	case 1:
		printf( "小学\n" );
		break;
	case 2:
		printf( "小学\n" );
		break;
	case 3:
		printf("小学\n" );
		break;
	case 4:
		printf( "小学\n" );
		break; 
	case 5:
		printf( "小学\n" );
		break;
	case 6:
		printf( "小学\n" );
		break;
	case 7:
		printf( "中学\n" );
		break;
	case 8:
		printf( "中学\n" );
		break;
	case 9:
		printf("中学\n");
		break;
	}

	return 0;
}

根据需要灵活添加break:

#include<stdio.h>

int main()
{
	int grade = 0;
	scanf("%d", &grade);
	switch (grade)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
	case 6:
		printf("小学\n");
		break;
	case 7:
	case 8:
	case 9:
		printf("中学\n");
		break;
	}

	return 0;
}

灵活添加后,代码变得更加直观简便。

3、default子句

当表达式的值与所有case语句都不匹配时,一般情况会直接跳过,程序不会终止,当然也不会报错。

这种情况是非常不严谨的,所以就出现了default子句,当switch语句中case标签所有值都不匹配时,就会执行default子句后面的语句。

因此,它也具有一个特点,就是一个switch语句只能出现一个default子句。但是,它可以出现在任意一个case子句后,一般都放在最后或者最前。下面见举例:

#include<stdio.h>
int main()
{
	int grade = 0;
	scanf("%d", &grade);
	switch (grade)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
	case 6:
		printf("小学\n");
		break;
	case 7:
	case 8:
	case 9:
		printf("中学\n");
		break;
	default:
		printf("请重新输入 :\n");
		break;
	}
	return 0;
}

这里同样需要注意的是!!编程时记得给最后添加一个break,防止修改代码时忘记加,造成逻辑混乱,原因同case语句。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值