C语言分支结构

初识 C语言之———分支与循环1

一.分支结构

分支结构也可被称为选择结构,主要可以分为if语句和switch语句,另外还有一种不常用的go to语句。

1.if语句

if语句的语法形式表达如下

if(表达式)
{
语句
}

if在英语中是如果的意思,if语句就是说如果表达式为真,则执行下面的语句,否则不执行;在C语言中0表示假,非0表示真,也就是说如果表达式的结果为0,则不执行下面的语句,否则执行。
示例:输入一个数,判断其是否为偶数

#include<stdio.h>
int main()
{
int a=0;
scanf("%d",&a);
if(a%2==0)
{
printf("a为偶数\n");
}
return 0;
}

上述例子为if语句的基本用法,if语句还常与else连用构成if else语句

2.if else语句

if else语句用来说明一个事情不是A情况就是B情况。
例如一个正整数不是奇数就是偶数。

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

当然一个事可能不止两种情况,这时就可以使用if else的多重和嵌套用法,这里不再具体讲实例,给大家简单描述一下语法结构。
切记:else与距离其最近的if匹配

多重if else
if(表达式1)
{
语句1
}else if(表达式2)
{
语句2
}else
{
语句3
}
嵌套if else语句
if(表达式1)
{
	if(表达式2)
	{
	语句1
	}else
	{
	语句2
	}
}
else
{
语句3
}

二.switch语句

switch语句可以看为一种特殊的if else语句,用于判断一个条件多个结果的情况。
switch语句的语法结构如下所示:

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

switch后的表达式必须为整形表达式
case后的值,必须为整型常量表达式
下面给大家举个具体的例子:
一个数除于3后的余数,无非就是0 1 2 三种情况。那么有下面一段代码;

#include<stdio.h>
int main()
{
int a=0;
scanf("%d",&a);
switch(a%3)
{
case 0:printf("余数为0");
case 1:printf("余数为1");
default:printf("余数为2");
}
return 0;
}

假如输入的数为3,那么预期输出结果为:余数为0
但实际运行结果却是:

余数为0余数为1余数为2

这是因为当a%3等于0时,与case 0相匹配,执行完case 0后的语句后,没有跳出程序,而是继续往下执行,这时应在每个case语句的最后加上break表示跳出程序

#include<stdio.h>
int main()
{
int a=0;
scanf("%d",&a);
switch(a%3)
{
case 0:printf("余数为0");
breakcase 1:printf("余数为1");
breakdefault:printf("余数为2");
break;
}
return 0;
}

这时再输入3,结果就正确了。这是switch语句中需要注意的一点。
另外还需要注意的是:
(1).case后的常量表达式的值不能相同
(2).case后可以允许多个语句而不用{}括起来
(3).case和default语句的先后顺序不一定,可以相互变动,它们与switch后的表达式为匹配关系
(4).default语句可以省略不用

三.go to语句

C语言中的go to语句是一种无条件分支语句,go to语句可以跳转到函数中任何有标号的语句处。
go to语句由标识符和冒号组成,语法结构如下

go to 语句标号:

功能是将程序转换到指定位置继续执行
示例:

#include<stdio.h>
int main()
{
first:
	printf("hehe\n");
	go to first:
	return 0;
}

此时运行程序就会发现程序陷入死循环,所以说我们不常用go to语句,主要是因为它会破坏程序的结构,容易带来隐患;但也并非一无是处,在多层循环中go to语句可以很方便的跳出循环

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值