C语言分支与循环

一、分支

1、if语句

        if语句是C语言中最简单的分支语句,下面是一个简单的if语句。

#include <stdio.h>

int main()
{
    if(1)
        printf("is ture");
}

if下面语句执行的条件为表达式中的成立(即为真),不成立(为假)则跳过语句。在C语言中,0代表假,非0为真,其中包括非零数、数组、字符等等……

即使是空数组,C语言也判定为真。

(1)else

在这里,我们引入if语句中另一个重要组成部分——else。else语句用于if后面表示式不成立时的操作,如下

if后面表达式为假,故if后语句不执行,则执行else后的语句。

(2)else if

在if语句中还有一个重要组成部分else if,常见例子如下:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int grade;
	scanf("%d", &grade);
    if(0<=grade && grade<50)
        printf("D");
	else if (grade<= 60)
		printf("C");
	else if (grade <= 80)
		printf("B");
	else if (grade < 100)
		printf("A");
	else if (grade == 100)
		printf("GREAT!");
	else
		printf("请输入正确的成绩");
}

运行过程中的流程图如上。

if与else if的联用,构成了嵌套if语句。

(3)常见错误

下面我们在刚开始接触if语句时,很容易遇到的两个问题:

1、

常见情况为

原因是if语句后面有多条语句且没有使用“{}”,正确处理方式为将if语句后的语句用“{}”括起来。

2、悬空else

问题情况如下:

代码运行结果为空,这是因为else总是与其最近的id语句匹配

2、switch语句

如下为一个简单的例子:


#include <stdio.h>
int main()
{
	int a = 1;
	switch (a)
	{
	case(1):
		printf("a=1\n");
		break;
	case(2):
		printf("a=2\n");
		break;
	case(3):
		printf("a=3\n");
		break;
	case(4):
		printf("a=4\n");
		break;
	}
}

运行结果为“a=1”

若删掉所有break,则程序会从入口出开始向下挨个执行语句。

同理

程序会在满足条件时进入语句,并向下执行,直到遇到break。

二、循环

1、while循环

常见代码如下:

#include <stdio.h>
int main()
{
	int a = 4;
	while (a > 0)
	{
		printf("hello world\n");
		a--;
	}
}

while语句在运行的过程中,会先判断表达式的真或假,若为真,则运行大括号中的语句,为假则跳过。

(1)死循环

会造成栈溢出

1、while语句内部未对可执行变量进行操作,如:

2、在while语句中重新给变量赋值,且所赋值可满足代码运行,如:

从代码中我们可以看到,在经过a>0的判断后,进入到while语句中,此时变量a被赋值3,后经语句“a--;”后,a的值变为2,仍满足a>0,故循环继续,进入循环,a又被赋值3,以此下去,代码会进入死循环。

2、for循环

与whil循环不同的是,for循环是在语句执行完后对变量进行操作,操作完成后再开始新一轮的判断……

for循环中变量可有多种赋值形式:

1、

2、

3、

3、do while 循环

对于do while循环,不论变量是否符合判断语句,都会先执行一次程序后在进行判断。

4、for、while、do while适用性

for循环适用于已知循环次数的循环;

while循环适用于未知循环次数的循环;

do while循环适用于至少运行一次的循环;

三、break和continue

1、break

break语句可用于终止当前循环,使程序向后运行

#include<stdio.h>
int main()
{
    int a=3;
    for(a;a>0;a--)
    {
        printf("a\n");
        break;
    }
}

但值得注意的是,在面对嵌套循环语句时,break仅用于跳出当前循环

2、continue

continue语句用于跳出本轮循环

与break语句相似,continue也在面对嵌套循环时也仅可从当前循环跳到下一轮循环

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值