分支语句和循环语句

分支语句有

  • if
  • switch

循环语句有

  • while
  • for
  • do while

在了解分支循环语句之前先说什么是语句,语句就是一段可执行的代码

c语言将语句分为了

  1. 表达式语句
  2. 函数调用语句
  3. 控制语句
  4. 复合语句
  5. 空语句

分支和循环语句属于其中的控制语句,控制语句用于控制程序的执行流程


先是分支语句,分支语句就是选择,如果符合条件,则执行相应语句。

典型的代表就是if语句,下面是if语句的语法结构

if(表达式)
    语句;

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

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

    

在第一个if语句中如果表达式为真,则执行相应的语句,都不为真则执行else中的语句(在c语言中0为假,非0则为真)

如果条件成立时要执行多条语句则要使用代码块,即多条语句用大括号括起

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

其中的else会和离他最近的语句匹配,如下面这串代码所示

int a = 0;
int b = 2;
if(a == 1)
    if(b == 2)
        printf("语句1\n");
else
    printf("语句2\n");

按照我们的思路来,a并不等于1,执行else中的语句打印语句2,但是运行代码后并没有任何东西,是因为这串代码的缩进有歧义,修改成以后代码更好理解

int a = 0;
int b = 2;
if(a == 1)
{
    if(b == 2)
        printf("语句1\n");
}
else
    printf("语句2\n");

从这个示例中我们也能认识到规范书写代码的必要性

用if语句我们可以判断一个数是否是偶数,如果它能被2整除则是偶数

if(x % 2 == 0)
    printf("x是偶数");

switch也是一种分支语句,一般用于多分支

例如:输入1,输出星期一,输入2,输出星期二,以此类推

在这种情况下使用if...else if...else来实现过于复杂,就可以使用switch来实现

下面时switch语句的语法结构

switch(整型表达式)
{
    case 整型常量表达式:
        语句;
    case 整型常量表达式:
        语句;
    case 整型常量表达式:
        语句;
    default:
        语句;
}

要注意的是switch语句并不能直接实现分支,需要搭配break来实现,例如下面这串代码

int day = 3;
switch (day)
{
	case 1:
		printf("星期一");
	case 2:
		printf("星期二");
	case 3:
		printf("星期三");
	case 4:
		printf("星期四");
	case 5:
		printf("星期五");
	case 6:
		printf("星期六");
	case 7:
		printf("星期天");
}

当我们运行代码是会输出星期四 星期五 星期六 星期天

我们需要用到break来让程序跳出switch语句,如下

int day = 3;
switch (day)
{
	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;
}

程序会像我们想要的那样输出星期三

若是我们想在输入1-5时输出工作日,输入6-7时输出周末呢,我们修改代码如下

int day = 3;
switch (day)
{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("weekday\n");
		break;
	case 6:
	case 7:
		printf("weekend\n");
		break;
    default:
        printf("输入错误");
}

break语句就是将switch划分成不同的分支,代码判断switch后的整型表达式来决定分支的入口,再以break来作为分支的出口,而default语句则是在所有case语句都不满足时执行default后面的语句,它可以出现在switch语句的任何地方,但是只能出现一次。


在讲完分支语句后再来看看循环语句,在分支语句中如果我们满足if的条件则语句执行,反之则不执行,条件判断会进行一次,语句执行也只有一次,但是实际上我们有些事情需要反复做,这个时候就需要用到循环语句,下面时它的语法结构

while(表达式)
{
    循环语句;
}

while首先判断表达式是否为真,为真则执行循环语句,再回头去判断,执行,直到表达式为假跳出循环,如下代码打印一到十

int i = 1;
while(i<=10)
{
    printf("%d ", i);
    i = i+1;
}

在while循环外对循环变量进行初始了,然后判断,执行,在最后对循环变量进行调整,让他朝着跳出循环的方向进行改变

那既然如此,我们能不能把变量的初始,判断和调整放在一起呢,那就是我们的for循环

for(表达式1;表达式2;表达式3)
{
    循环语句;
}

for循环在表达式1中对变量进行初始化,在表达式2中判断变量,为真则执行循环语句,然后在表达式3中对变量进行调整

for循环的表达式1,2,3均可以省略,如果判断省略则恒为真,循环一直进行

我们用for循环来实现打印一到十

for (int i = 1; i <= 10; i=i+1)
{
    printf("%d ", i);
}

要注意的是最好不要在循环体内修改循环变量,有可能会形成死循环

接下来是do...while循环,从字面意思上就是先执行do中的内容,然后再判断表达式是否为真,循环语句至少被执行一次。

do
{
    循环语句;
}
while(表达式);

因为do...while循环的使用场景有限,这里不多赘述


我们在switch语句中提到过break,它在循环中同样适用,循环语句在遇到break时跳出循环,举个例子

int i = 0;
while (i < 10)
{
	if (i > 5)
		break;
	printf("%d ", i);
	i++;
}

for (i = 0; i < 10; i++)
{
	if (i > 5)
		break;
	printf("%d ", i);
}

这两个循环都会打印0-5,他们在i>5时执行了break跳出了循环

而continue语句则会跳出循环,执行下一次循环,本次循环continue之后的代码不会被执行,我们对上述代码稍作调整具体看看它的作用

int i = 0;
while (i < 10)
{
	printf("%d ", i);
	i++;
	if (i == 5)
		continue;
	
}

for (i = 0; i < 10; i++)
{
	if (i == 5)
		continue;
	printf("%d ", i);
}

他们都会打印0-9除了5的数字,在while循环中我调换了if和i++的位置,如果把continue放在i++的前面i会在之后的每一次循环中都等于5,陷入死循环


到此简单分支与循环已经说完,如有错误请指正

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值