分支语句和循环语句

目录

一、什么是语句?

二、分支语句(选择结构)

2.1  if 语句

2.2  switch语句

 2.2.1 在switch语句中的 break

2.2.2  default子句

三、循环语句

3.1 while循环

3.1.1 while语句中的break和continue

3.2 for循环

3.2.2 在for循环中的break和continue

3.3 do...while()循环

3.3.1 do while循环中的break和continue

四、goto语句


分支语句    循环语句 goto语句
if  while        do while
switch   for  

一、什么是语句?

可分为以下五类:

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

控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,

C语言有九种控制语句。

 可分成以下三类:

1. 条件判断语句也叫分支语句:if 语句、switch 语句;

2. 循环执行语句:do while 语句、while 语句、for 语句;

3. 转向语句:break 语句、goto 语句、continue 语句、return 语句。

二、分支语句(选择结构)

2.1  if 语句

语法结构:

if(表达式)
语句;

#include <stdio.h>
int main()
{
    int age = 0;
    scanf("%d", &age);
    if(age<18)
    {
        printf("未成年\n");
    }
    return 0;
}

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

#include <stdio.h>
int main()
{
    int age = 0;
    scanf("%d", &age);
    if(age<18)
    {
        printf("未成年\n");
    }
    else
    {
        printf("成年\n");
    }
    return 0;
}

 //多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;

#include <stdio.h>
int main()
{
    int age = 0;
    scanf("%d", &age);
    if(age<18)
    {
        printf("少年\n");
    }
    else if(age>=18 && age<30)
    {
        printf("青年\n");
    }
    else if(age>=30 && age<50)
    {
        printf("中年\n");
    }
    else if(age>=50 && age<80)
    {
        printf("老年\n");
    }
    else
    {
        printf("老寿星\n");
    }
    return 0;
}

当你写了这样一段代码:

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hehe\n");
    else
        printf("haha\n");
    return 0;
}

如果按照对齐方式来判断输出的结果,结果为打印haha,但真实运行结果是这样吗?

实际是什么也没有输出。

  注意!else的匹配:else是和它离的最近的if匹配的。

改正后:

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
    {
        if(b == 2)
        {
            printf("hehe\n");
        }
    }
    else
    {
        printf("haha\n");
    }
    return 0;
}

         适当的使用{ }缩进可以使代码的逻辑更加清楚。

2.2  switch语句

语法结构:

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

什么是语句项?

case 整形常量表达式:   //注意case与整形常量表达式之间要添加空格
语句;

 2.2.1 在switch语句中的 break

 在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。

#include <stdio.h>
int main()
{
    int day = 0;
    scanf("%d", &day);
    switch(day)
    {
        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;
    }
    return 0;
}

另一种形式:

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

break语句的实际效果是把语句列表划分为不同的分支部分。

2.2.2  default子句

 当 switch 表达式的值并不匹配所有case 标签的值时,这个default 子句后面的语句就会执行。

default:
    printf("请输入正确的数字\n");

每个switch语句中只能出现一条default子句。

但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。

三、循环语句

while        for        do while

3.1 while循环

while(表达式)
循环语句;

使用while循环,在屏幕上打印1-100的数字

#include <stdio.h>
int main()
{
    int i = 1;
    while(i<=10)
    {
        printf("%d ", i);
        i = i+1;
    }
    return 0;
}

3.1.1 while语句中的break和continue

break:

#include <stdio.h>
int main()
{
    int i = 1;
    while(i<=10)
    {
        if(i == 5)
        break;
        printf("%d ", i);
        i = i+1;
    }
    return 0;
}

//输出的结果是1234

break在while循环中的作用:

      其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。

      while中的break是用于永久终止循环的。

continue:

#include <stdio.h>
int main()
{
    int i = 1;
    while(i<=10)
    {
        if(i == 5)
        continue;
        printf("%d ", i);
        i = i+1;
    }
    return 0;
}

//输出1234后死循环
#include <stdio.h>
int main()
{
    int i = 0;
    while(i<10)
    {
        i = i+1;
        if(i == 5)
        continue;
        printf("%d ", i);
    }
    return 0;
}

//打印1 2 3 4 6 7 8 9 10,跳过了5

continue在while循环中的作用就是:

continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,

而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。

3.2 for循环

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

表达式1

表达式1为初始化部分,用于初始化循环变量的。

表达式2

表达式2为条件判断部分,用于判断循环时候终止。

表达式3

表达式3为调整部分,用于循环条件的调整。

使用for循环 在屏幕上打印1-10的数字

#include <stdio.h>
int main()
{
    int i = 0;
//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
    for(i=1; i<=10; i++)
    {
        printf("%d ", i);
    }
    return 0;
}

for循环与while循环的比较

int i = 0;
//实现相同的功能,使用while
i=1;//初始化部分
while(i<=10)//判断部分
{
printf("hehe\n");
i = i+1;//调整部分
}

//实现相同的功能,使用for
for(i=1; i<=10; i++)
{
printf("hehe\n");
}

 相较之下,for循环的风格可以更好地查找修改,for循环使用的频率也最高。

3.2.2 在for循环中的break和continue

#include <stdio.h>
int main()
{
    int i = 0;
    for(i=1; i<=10; i++)
    {
        if(i == 5)
        break;
        printf("%d ",i);
    }
    return 0;
}

//打印1 2 3 4
#include <stdio.h>
int main()
    {
    int i = 0;
    for(i=1; i<=10; i++)
    {
        if(i == 5)
        continue;
        printf("%d ",i);
    }
    return 0;
}

//打印1 2 3 4 6 7 8 9 10

3.3 do...while()循环

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

特点:

循环至少执行一次,使用的场景有限,所以不是经常使用。

#include <stdio.h>
int main()
{
    int i = 10;
    do
    {
        printf("%d\n", i);
    }while(i<10);
    return 0;
}

//打印10

3.3.1 do while循环中的break和continue

#include <stdio.h>
int main()
{
	int i = 10;
	do
	{
		if (5 == i)
			break;
		printf("%d\n", i);
	} while (i<10);
	return 0;
}
#include <stdio.h>
int main()
{
	int i = 10;
	do
	{
		if (5 == i)
			continue;
		printf("%d\n", i);
	} while (i<10);
	return 0;
}

四、goto语句

C 语言中的 goto 语句允许把控制无条件转移到同一函数内的被标记的语句。(实际上就是跳转语

句)

从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。

但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理

过程。例如:一次跳出两层或多层循环。

for (...)
	for (...)
	{
		for (...)
		{
			if (disaster)
				goto error;
		}
	}
…
error :
if (disaster)
// 处理错误情况

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值