[C语言]分支语句和循环语句

这篇具有很好参考价值的文章主要介绍了[C语言]分支语句和循环语句。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[C语言]分支语句和循环语句

C语言语句分类

C语言的语句可分为以下五类:

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

其中,控制语句用于控制程序的执行流程,以实现程序的各种结构方式,C语言有九种控制语句。 可分成以下三类:

  1. 条件判断语句也叫分支语句:if语句、switch语句;
  2. 循环执行语句:do while语句、while语句、for语句;
  3. 转向语句:break语句、goto语句、continue语句、return语句。

C语言是结构化的程序设计语言,包含如下结构:

  • 顺序结构 – 按照代码既定顺序执行
  • 选择结构 – 选择一部分代码执行
  • 循环结构 – 重复执行同一段代码

[C语言]分支语句和循环语句,C语言,c语言,算法

C语言通过分支语句来形成选择结构,通过循环语句来形成循环结构。无论是分支语句还是循环语句都属于控制语句

分支语句

if语法结构

if语句有以下三种语法结构:

  1. 单分支
语法结构:
if(表达式)
    语句;
  • 表达式为真,执行语句。
#include <stdio.h>

int main()
{
	int age = 16;
	if (age < 18) //表达式为真,输出未成年
		printf("未成年\n");
	return 0;
}
  1. 双分支
if(表达式)
    语句1;
else
    语句2;
  • 表达式为真,执行语句1。
  • 表达式为假,执行语句2。
#include <stdio.h>

int main()
{
	int age = 20;
	if (age < 18) //表达式为假,输出成年
		printf("未成年\n"); 
	else
		printf("成年\n");
	return 0;
}
  1. 多分支
if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else
    语句3;
  • 表达式1为真,则执行语句1。
  • 表达式2为真,执行语句2。
  • else前的所有表达式都为假,执行语句3。
  • 可以使用多个else if来控制多个分支。
#include <stdio.h>

int main()
{
	int age = 59;
	if (age < 18)
		printf("未成年\n");
	else if (age >= 18 && age < 60) //该表达式为真,输出成年
		printf("成年\n");
	else
		printf("老年\n");
	return 0;
}

补充:

  • C语言中0表示假,1表示真。
  • if语法结构中无论有多少分支,最终只能选择其中一个分支执行。
  • if、else if、else只能控制后续的一条语句,如果要控制多条语句需要用{}将语句变成代码块。

代码块中可以有多条语句,使用代码块的结构如下:

#include <stdio.h>
int main()
{
    if(表达式)
   {
        语句列表1}
    else
   {
        语句列表2}
    return 0;
}

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; //没有输出
}

由于else匹配的是最近的if,else是和if (b == 2)语句匹配的,因此当if (a == 1)中条件不成立时,打印语句就都不会被执行。为了提高代码的可读性,建议修改成如下写法:

#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;
}

以上两段代码的功能是相同的,但是由于书写方式不同,可读性就有所不同。

switch语句

switch语句也是一种分支语句,常常用于多分支的情况。

switch语句的主要语法结构如下:

switch(整型表达式)
{
    case 整形常量表达式:
    语句;
    //...
}
  • switch中必须使用整形表达式作为判断对象。
  • case中必须使用整形常量表达式作为判断条件。
  • switch中的整形表达式和case整形常量表达式进行对比判断,进行选择进入到对应的case情况中。
#include <stdio.h>

int main()
{
	int day = 0;
	scanf("%d", &day); //输入为4
	switch (day)
	{
	case 1:
		printf("星期一\n");
	case 2:
		printf("星期二\n");
	case 3:
		printf("星期三\n");
	case 4:
		printf("星期四\n");
	case 5:
		printf("星期五\n");
	case 6:
		printf("星期六\n");
	case 7:
		printf("星期天\n");
	}
	return 0;//输出为星期四 星期五 星期六 星期天
}

虽然在上面这段代码中day选择了case 4,但是由于该情况中没有控制结束,因此switch语句会顺序执行,将case 5、case 6、case 7也执行。

switch语句中的break

在switch语句中的 break可以把语句列表划分为不同的分支部分。

#include <stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);//输入为4
	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;//输出为星期四
}

在执行完case 4中的语句后,break控制了该情况结束,跳出并且结束switch语句。

switch语句中default

default表示除以上case情况外的所有情况。

#include <stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day); //输入8
	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;
	default:
		printf("输入错误\n");
		break;
	}
	return 0; //输出为输入错误
}

循环语句

while循环

while循环的语法结构:

while(表达式)
	循环语句;
  • 循环判断表达式,表达式为真,执行循环语句。
  • 表达式为假,结束循环。
  • 循环语句为多条语句时,需要使用{}将其变成代码块。
#include <stdio.h>

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

while循环中的break和continue

while中的break是用于永久终止循环的。在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。

#include <stdio.h>

int main()
{
	int i = 0;
	while (i < 5)
	{
		if (i == 3)
			break;
		printf("%d ", i);
		i++;
	}
	return 0; //输出为 0 1 2
}

当i=3时,while表达式判断为真执行循环语句,if表达式判断为真,执行break语句终止了while循环。

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

#include <stdio.h>

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

当i=3时,while表达式判断为真执行循环语句,if表达式判断为真,执行continue语句终止了本次循环,进入了下一次循环。

while循环的大致流程图:

[C语言]分支语句和循环语句,C语言,c语言,算法

for循环

for循环的语法结构:

for(表达式1; 表达式2; 表达式3)
 循环语句;
  • 表达式1为初始化部分,用于初始化循环变量的。
  • 表达式2为条件判断部分,用于判断循环时候终止。
  • 表达式3为调整部分,用于循环条件的调整。
  • 循环语句为多条语句时,需要使用{}将其变成代码块。
#include <stdio.h>

int main()
{
	int i = 0;
	for (i = 1; i < 10; i++)
	{
		printf("%d ", i);
	}
	return 0; //输出为 1 2 3 4 5 6 7 8 9
}

for循环中的break和continue

在for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。

#include <stdio.h>

int main()
{
	int i = 0;
	for (i = 1; i < 5; i++)
	{
		if (i == 3)
			break;
		printf("%d ", i);
	}
	return 0; //输出为 1 2
}

当i=3时,for表达式判断为真执行循环语句,if表达式判断为真,执行break语句终止了for循环。

#include <stdio.h>

int main()
{
	int i = 0;
	for (i = 1; i < 5; i++)
	{
		if (i == 3)
			continue;
		printf("%d ", i);
	}
	return 0; //输出为 1 2 4
}

当i=3时,for表达式判断为真执行循环语句,if表达式判断为真,执行continue语句终止了本次循环,进入了下一次循环。

for循环的大致流程图:

[C语言]分支语句和循环语句,C语言,c语言,算法

for循环的变种

#include <stdio.h>

int main()
{
	for (;;)
	{
		printf("hehe\n");
	}
	return 0; //死循环输出 hehe
}

for循环中的初始化部分,判断部分,调整部分都是可以省略的,全部都省略相当于循环条件永远为真。

#include <stdio.h>

int main()
{
    int i = 0;
    int j = 0;
    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 10; j++)
        {
            printf("hehe\n");
        }
    }
    return 0; //输出为100个hehe
}

for循环进行了嵌套,外层循环循环10次,外层循环每次都执行一次内层循环,一次内层循环执行10次,因此一共是100次。

#include <stdio.h>

int main()
{
    int i = 0;
    int j = 0;
    for (; i < 10; i++)
    {
        for (; j < 10; j++)
        {
            printf("hehe\n");
        }
    }
    return 0; //输出为10个hehe
}

for循环进行了嵌套,外层循环循环10次,外层循环每次都执行一次内层循环,第一次内层循环执行10次后,j为10,下一层内层循环没有初始化,j依旧为10,内层循环无法再执行,因此一共是10次。

#include <stdio.h>

int main()
{
    int x, y;
    for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
    {
        printf("hehe\n");
    }
    return 0; //输出为2个hehe
}

循环的判断条件是x < 2 && y < 5,循环两次后x<2不再满足,因此只能执行两次。

#include <stdio.h>

int main()
{
    int i = 0;
    int k = 0;
    for (i = 0, k = 0; k = 0; i++, k++)
        k++;
    return 0;
}

判断条件是k=0,是一个赋值语句,赋值语句的结果为所赋的值,因此该语句的结果为0,循环一次都不执行。

do while循环

do while循环的语法结构:

do
 循环语句;
while(表达式);
  • 先执行一次循环语句在判断表达式,因此循环至少执行一次。
  • 循环语句为多条语句时,需要使用{}将其变成代码块。
#include <stdio.h>

int main()
{
	int i = 1;
	do
	{
		printf("%d ", i);
		i++;
	} while (i <= 5);
	return 0; //输出 1 2 3 4 5
}

do while循环中的break和continue

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

i=3时,if表达式判断为真,执行break语句终止了循环。

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

i=3时,if表达式判断为真,结束本次循环进行下一次循环。

do while循环的大致流程图:

[C语言]分支语句和循环语句,C语言,c语言,算法

总结:

  • 无论何种循环语句,break的作用都是结束循环。
  • 无论何种循环语句,continue的作用都是不执行continue后的代码,跳转到循环判断。(for循环会在跳转到循环判断前进行循环条件的调整)

goto语句

C语言中goto语句可以向标志位置进行程序跳转。

#include <stdio.h>

int main()
{
	printf("hello world\n");
	goto flag;
	printf("hello goto\n");
flag:
	printf("hello blog\n");
	return 0; //输出为 hello world hello blog
}

其中flag:作为标志位供goto语句进行跳转,由于goto语句跳转到了标志位置,会导致中间的代码不被执行。文章来源地址https://www.toymoban.com/news/detail-662410.html

  • 标志名任意,只需要使用标志名:标志位置即可使用goto语句跳转。
  • goto语句由于会导致代码的可读性和可维护性降低等原因,因此不常被使用。
  • goto语句适用于从多层循环的内部向外跳转。

到了这里,关于[C语言]分支语句和循环语句的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 初阶C语言-分支和循环语句(下)

    “花会沿途盛开,以后的路也是。” 今天我们一起来继续学完分支语句和循环语句。 3.4.1 do语句的用法 在前面,我们学过了用 while循环 和 for循环 在屏幕上打印1~10的数字,那么在 do...while()循环 中,如何实现这步操作呢? 接下来,让我们用一张图了解一下 do...while()循环 的

    2024年02月15日
    浏览(42)
  • 【C语言】深入了解分支和循环语句

    💓 博客主页:江池俊的博客 ⏩ 收录专栏:C语言初阶之路 🎉如果觉得博主的文章还不错的话,请点赞👍收藏🌟 三连支持一下博主💞 💫“每一天都是一个全新的机会,用积极的心态去迎接挑战吧!” 前言  一、什么是语句? 二、分支语句(选择结构) 2.1.if语句 2.1.1 悬

    2024年02月17日
    浏览(40)
  • C语言_分支和循环语句(2)

    C语言:结构化的程序设计语言 顺序结构、选择结构、循环结构 导引 过于分散 使用for循环打印1~10 循环体默认只能控制一条语句 想控制多条语句的话,要加大括号 示例 建议: 1.不可在 for 循环体内修改循环变量,防止 for 循环失去控制。 2.建议 for 语句的循环控制变量的取值

    2024年02月10日
    浏览(30)
  • C语言学习笔记---C语言分支与循环语句

    前言: 什么是语句? C语言可分为以下五类: 表达式语句 函数调用语句 控制语句 复合语句 空语句 语句 :C语言中,由分号隔开的句子就是一条语句 如: C语言中用 非零 表示 真 ,用 零 表示 假 ,即: 逻辑真,逻辑假 三大语法结构 :顺序结构、分支(选择)结构、循环结构

    2024年02月16日
    浏览(38)
  • 【C语言+代码风格】认识分支与循环语句及代码风格

    🚩 纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:C语言 ⚡注:此篇文章的 代码风格部分 将根据 《高质量 C++/C 编程指南》 —— 林锐 进行说明。 该部分将用紫色表示 此篇文章将详细说明 分支与循环语句 以及它们的 代码风格 c语言是 结构化 的程序设计

    2024年02月05日
    浏览(100)
  • C语言初学者:原来分支和循环语句可以这样简单!

    目录 1.分支语句 1.if 语句 2.else语句 3.嵌套if  4.悬空else的问题 5.Switch语句 2.循环语句  1.while循环 2.for循环 3do-while循环 3.break和continue语句 1.break语句 2.continue语句 4.goto语句  5.小结 6.为你们点赞呢~ 7.完结散花                            不是每个人都能做自己想做的事,成

    2024年04月12日
    浏览(36)
  • 【初始C语言】分支语句和循环语句和转向语句的用法,文章末尾还有精品小礼物噢。

     夜里醒来,听雨滴 打在窗台雨搭上,更细密的一阵雨 落在窗外小树林里 雨落在更远的地方,落在另一场雨中 绵密的一片雨声 从芭蕉的昏暗 词林升起。一场夜雨紧邻古代 在巴山秋池,无需梦 无需修剪火焰,听雨 是一个人靠近古人的地方 而今晚是另一个夜晚 时间稀落,听

    2024年02月05日
    浏览(45)
  • 【初始C语言2】详细认识分支语句和循环语句以及他们的易错点,应用(猜大小游戏)

    系列文章目录  第一章 “C“浒传——初识C语言(更适合初学者体质哦!)  第二章  【初始C语言2】详细认识分支语句和循环语句以及他们的易错点,应用(猜大小游戏) 目录 系列文章目录 前言:        一、什么是语句? 1.1 表达式语句 1.2 函数调用语句 1.3 控制语句

    2024年02月10日
    浏览(31)
  • 分支语句和循环语句

    分支语句 if switch 循环语句 while for do while goto语句 本章后面介绍的是控制语句。 控制语句 用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。 如果你好好学

    2023年04月09日
    浏览(45)
  • 分支语句与循环语句(2)

    3.3 do...while()循环 3.3.1 do语句的语法: do 循环语句; while(表达式); 3.3.2执行流程图:   3.3.3 do语句的特点 循环至少执行一次,使用的场景有限,所以不是经常使用。 打印1-10的整数: 3.3.4 do while循环中的break和continue do while循环中break和continue和在while循环中一模一样 break都是用

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包