C语言分支和循环语句

分支语句和循环

1+2; //在c语言中我们以分号作为语句的分隔,隔开的就是一条语句

在C语言中程序是按顺序执行的,即函数中的第一个语句先执行,接着是第二个语句,依此类推。
但在实际运用中往往需要用选择和循环来执行某件事,由此诞生了分支语句和循环。
在这里插入图片描述

分支语句

if

if语句的语法如下,if在英文中就表示如果的意思,在下面语法中如果表达式满足则执行语句if else中表达式为真执行语句1,不满足则执行语句2。多分支同理。

if(表达式)
{
	语句;
}

例1:

#include <stdio.h>

int main()
{
	int a = 0; //初始化
	scanf("%d", &a);  //从键盘输入b的值
	if (a == 1)  //判断a是否等于1
	{
		printf("a等于1");
	}
	return 0;
}

if…else

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

例2:

#include <stdio.h>
int main()
{
	int b = 0;
	scanf("%d", &b); //从键盘输入b的值
	if (b == 1)
	{
		printf("b等于1"); //等于1时打印
	}
	else
	{
		printf("b不等于1"); //不等于1时打印
	}
	return 0;
}

if…else if…else

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

例3

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);  //键盘输入两个整数,中间用空格隔开
	if (a > b)
	{
		printf("%d比%d大\n",a,b);  //a比b大时打印
	}
	else if (a < b)
	{
		printf("%d比%d大\n",b,a);   //b比a大时打印
	}
	else
	{
		printf("%d和%d相等\n",a,b);  //a和b相等时打印
	}
	return 0;
}

如果表达式的结果为真,则语句执行。

0表示假,非0表示真。

一对{ }就是一个代码块

switch

语法如下:

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

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

break 是C语言中的一个关键字,专门用于跳出 switch 语句。所谓“跳出”,是指一旦遇到 break,就不再执行 switch 中的任何语句,包括当前分支中的语句和其他分支中的语句;也就是说,整个 switch 执行结束了,接着会执行整个 switch 后面的代码。

任务描述

五级制成绩表示法可以这样来理解,A代表[90-100]、B代表[80-90)、C代表[70-80)、D代表[60-70)、E代表[0-60)。 给出五级制成绩(一个字符),请输出这个字符所代表的分数范围。

#include <stdio.h>

int main()
{
    char score;
    scanf("%c", &score);
    switch (score) {
    case 'A':
        printf("90分以上\n");
        break;
    case 'B':
        printf("80到90分\n");
        break;
    case 'C':
        printf("70到80分\n");
        break;
    case 'D':
        printf("60到70分\n");
        break;
    case 'E':
        printf("60分以下\n");
        break;
    default:
        printf("输入错误\n");
    }
    return 0;
}

default子句

  • default语句并不只能写到最后,可以写在任何一个case标签可以出现的位置。
  • 如果表达的值与所有的case标签的值都不匹配,此时执行default语句后面的。
  • 每个switch语句中只能出现一条default子句。

编程好习惯:

在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。

循环语句

while

在上面我们已经掌握了,if的用法,当条件满足的情况下,if语句后的语句执行,否则不执行。但是这个语句只会执行一次。
在生活中很多的实际例子是:同一件事我们需要完成很多次。在C语言中我们引入了:while语句,可以实现循环。

语法结构如下:

while(表达式)
	循环语句;

例1:
我们借助在屏幕上打印1-10的数字来熟悉while用法。

#include <stdio.h>
int main()
{
	int i = 0;
	while (i <=10)  //当i小于10时进入循环
	{
		printf("%d ", i);  //执行一次打印一个i
		i ++ ;  //执行一次后i+
	}
	return 0;
}

下面我们再来了解while语句中的break和continue

  • break介绍
int main()
{
	int i = 0;
	while (i <= 10)
	{
		if (i == 6)   //当程序运行到i=6时跳出当前循环
			break;
		printf("%d ", i);  //最后屏幕上打印0 1 2 3 4 5
		i++;
	}
	return 0;
}

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

continue介绍

int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 6)
			continue;
		printf("%d ", i);  //1 2 3 4 5
		i++;
	}
	return 0;
}

continue出现的地方就会跳过一次后续代码。

int main()
{
	int i = 1;
	while (i <= 10)
	{
		i = i + 1;
		if (i == 5)
			continue;
		printf("%d ", i);   // 2 3 4 6 7 8 9 10 11 
	}
	return 0;
}

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

continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会在执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。

for循环

for循环是一种常用的循环结构,具有灵活的语法和强大的功能。
for循环的语法结构如下:

for(表达式1,表达式2,表达式3)
	循环语句
  • 表达式1为初始化部分,用于初始化循环变量的;
  • 表达式2为条件判断部分,用于判断循环的终止;
  • 表达式3为调整部分,用于循环条件的调整,趋向于终止条件;

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

int main()
{
	int i = 1;
	//i=1 初始化,i<=10 判断部分,i++ 调整部分
	for (i = 1; i<=10;i++)
	{
		printf("%d ", i);  //1 2 3 4 5 6 7 8 9 10
	}
	return 0;
}

do while循环

do语句的语法:

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

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

int main()
{
	int i = 10;
	do
	{
		printf("%d\n", i);  //10
	} while (i < 10);
	return 0;
}

do while循环中的break和continue

int main()
{
	int i = 10;
	do
	{
		if (5 == i)
			break;
		printf("%d\n", i);
	} while (i < 10);

	return 0;
}

goto语句

C语言无特殊情况,往往是从main函数开始,一条一条往下执行语句的,但当程序遇到goto时,可以无条件转移到同一函数内的被标记的语句。

goto DestName;
...
...
DestName:statement;

从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或多层循环。

这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。

简单示例:

int  main()
{
    int i = 0;
    for (i = 0; i < 10; i++)
    {
        if (i = 5)  //当i=5时跳到Print后续语句;从而结束循环
        {
            goto Print;
        }
    Print:
        printf("当前的i为%d\n", i);
        return 0;
    }
}

注意: 在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。

  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ESRG技录橙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值