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

news2025/1/15 13:06:45

目录

一、什么是语句

二、分支语句

        2.1 if语句

        2.2 switch语句

三、循环语句

        3.1 while循环

        3.2 for循环

        3.3 do...while循环


一、什么是语句

        C语言语句有五类:表达式语句、函数调用语句、控制语句、复合语句、空语句

        控制语句用于控制程序的执行流程,来实现程序的各种结构方式。C语言有三种结构:顺序结构、选择结构、循环结构,有九种控制语句,可以分为三类:条件判断语句(分支语句):if语句和switch语句;循环语句:do while语句、while语句和for语句;转向语句:break语句、goto语句、continue语句和return语句

二、分支语句

        2.1 if语句

        if语句的语法结构

        if(表达式)        //表达式为真,则执行语句,C语言中,0为假,非0为真

        {

                语句;

        }

        if(表达式)

        {

                语句;

        }

        else        //else和它离的最近的if匹配

        {

                语句;

        }

        //多分支

        if(表达式)

        {

                语句;

        }

        else if(表达式)

        {

                语句;

        }

        else

        {

                语句;

        }

        示例

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

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

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

        2.2 switch语句

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

        比如出入一个数字,输出对应的星期

        switch语句

switch(表达式)

{

        语句项;

}

        语句项

case 整形常量表达式:
                语句;

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

#include <stdio.h>
int main()
{
        int day = 0;
        switch(day)
        {
                case 1:
                        printf("星期一\n");
                        break;                //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;
}

        如果要求输入数字1-5,输出weekday,输入数字6-7,输出weekend。则有以下代码

#include <stdio.h>
int main()
{
        int day = 0;
        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;
}

        如果表达的值与所有的case标签的值都不匹配,可以使用default标签,当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行,每个switch语句中只能出现一条default子句。

        示例

#include <stdio.h>
int main()
{
        int day = 0;
        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;
}

三、循环语句

        当一个操作要多次重复执行时,就使用循环。

        3.1 while循环

while(表达式)

{
        循环语句;

}

        示例:打印1-10的数字

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

        

        while中的break

#include <stdio.h>
int main()
{
        int i = 1;
        while(i<=10)
        {
                if(i == 5)
                break;        //在循环中遇到break,直接终止循环

                printf("%d ", i);
                i = i+1;
        }
        return 0;
}

         

        while中的continue

#include <stdio.h>
int main()
{
        int i = 1;
        while(i<=10)
        {
                if(i == 5)

               {

                      i = i+1;

                     //continue终止本次循环,直接跳转到while的判断部分,进行下一次循环的判断
                    continue;

                }
                printf("%d ", i);
                i = i+1;
        }
        return 0;
}

        

        3.2 for循环

for(表达式1; 表达式2; 表达式3)
{

        循环语句;

}

        表达式1初始化循环变量,表达式2条件判断,判断何时循环终止,表达式3调整循环条件。

        示例 打印1-10的数字

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

        执行流程图

        

         break和continue在for循环和在while循环中的作用相同。

        3.3 do...while循环

        do
        {

                循环语句;

        }
        while(表达式);

        执行流程图

        

         特点:循环至少执行一次,使用场景有限,不经常使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/914985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在vue3+ts+vite中使用svg图片

目录 前言 步骤 1.安装svg-sprite-loader,这里使用的是6.0.11版本 2.项目的svg图片存放在src/icons下&#xff0c;我们在这里创建两个文件index.ts和index.vue&#xff08;在哪创建和文件名字并没有任何要求&#xff09; 3.在index.ts中加入下列代码(如果报错找不到fs模块请…

Redis的基本操作

文章目录 1.Redis简介2.Redis的常用数据类型3.Redis的常用命令1.字符串操作命令2.哈希操作命令3.列表操作命令4.集合操作命令5.有序集合操作命令6.通用操作命令 4.Springboot配置Redis1.导入SpringDataRedis的Maven坐标2.配置Redis的数据源3.编写配置类&#xff0c;创还能Redis…

ubuntu修改默认文件权限umask

最近在使用ubuntu的过程中发现一个问题&#xff1a; 环境是AWS EC2&#xff0c;登录用户ubuntu&#xff0c;系统默认的umask是027&#xff0c;修改/etc/profile文件中umask 027为022后&#xff0c;发现从ubuntu用户sudo su过去root用户登录查询到的umask还是027&#xff0c;而…

2023-8-22 单调栈

题目链接&#xff1a;单调栈 #include <iostream>using namespace std;const int N 100010;int n; int stk[N], tt;int main() {cin >> n;for(int i 0; i < n; i ){int x;cin >> x;while(tt && stk[tt] > x) tt--;if(tt) cout << st…

第十章,搜索模块

10.1添加搜索框 <template><div class="navbar-form navbar-left hidden-sm"><div class="form-group"><inputv-model.trim="value"type="text"class="form-control search-input mac-style"placeho…

数据传输过程

2 数据传输过程 了解网络中常用的分层模型后&#xff0c;现在来学习一下数据在各层之间是如何传输的。 2.1数据封装与解封装过程(一) 下面我们将以TCP/IP五层结构为基础来学习数据在网络中传输的“真相”。由于这个过程比较 抽象&#xff0c;我们可以类比给远在美国的朋友邮寄…

人工智能深度估计技术

人工智障&#xff08;能&#xff09;走起&#xff01;&#xff01;&#xff01; 下面是基本操作&#xff1a; 在Hugging Face网页中找到Depth Estimation的model&#xff0c;如下图&#xff1a; Hugging Face – The AI community building the future. &#xff08;上Huggin…

从自动驾驶到智能助理:AI和ML技术的革命性应用与前景

人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;的快速发展正在改变我们的世界。它们以惊人的速度渗透到各个领域&#xff0c;从自动驾驶汽车到智能助理、语音识别和自然语言处理等。AI和ML技术的应用范围和影响力越来越广泛&#xff0c;为我们的日常…

SpringMVC拦截器学习笔记

SpringMVC拦截器 拦截器知识 拦截器(Interceptor)用于对URL请求进行前置/后置过滤 Interceptor与Filter用途相似但实现方式不同 Interceptor底层就是基于Spring AOP面向切面编程实现 拦截器开发流程 Maven添加依赖包servlet-api <dependency><groupId>javax.se…

【Rust】Rust学习 第十八章模式用来匹配值的结构

模式是 Rust 中特殊的语法&#xff0c;它用来匹配类型中的结构&#xff0c;无论类型是简单还是复杂。结合使用模式和 match 表达式以及其他结构可以提供更多对程序控制流的支配权。模式由如下一些内容组合而成&#xff1a; 字面值解构的数组、枚举、结构体或者元组变量通配符占…

CSS笔记

介绍 CSS导入方式 三种方法都将文字设置成了红色 CSS选择器 元素选择器 id选择器 图中div将颜色控制为红色&#xff0c;#name将颜色控制为蓝色&#xff0c;谁控制的范围最小&#xff0c;谁就生效&#xff0c;所以第二个div是蓝色的。id属性值要唯一&#xff0c;否则报错。 clas…

【STM32RT-Thread零基础入门】 6. 线程创建应用(线程挂起与恢复)

硬件&#xff1a;STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线 文章目录 前言一、RT-Thread相关接口函数1. 挂起线程2. 恢复线程 二、程序设计1. car_led.c2.car_led.h3. main.c 三、程序测试总结 前言 在上一个任务中&a…

Mysql group by使用示例

文章目录 1. groupby时不能查询*2. 查询出的列必须在group by的条件列中3. group by多个字段&#xff0c;这些字段都有索引也会索引失效&#xff0c;只有group by单个字段索引才能起作用4. having条件必须跟group by相关联5. 用group by做去重6. 使用聚合函数做数量统计7. havi…

ShardingSphere02-MySQL主从同步配置

1、MySQL主从同步原理 基本原理&#xff1a; slave会从master读取binlog来进行数据同步 具体步骤&#xff1a; step1&#xff1a;master将数据改变记录到二进制日志&#xff08;binary log&#xff09;中。step2&#xff1a; 当slave上执行 start slave 命令之后&#xff0c…

mysql------做主从复制,读写分离

1.为什么要做主从复制&#xff08;主从复制的作用&#xff09; 做数据的热备&#xff0c;作为后备数据库&#xff0c;主数据库服务器故障后&#xff0c;可切换到从数据库继续工作&#xff0c;避免数据丢失。 架构的扩展。业务量越来越大,I/O访问频率过高&#xff0c;单机无法满…

matlab面向对象

一、面向对象编程 1.1 面向过程与面向对象 区别&#xff1a; 面向过程的核心是一系列函数&#xff0c;执行过程是依次使用每个函数面向对象的核心是对象&#xff08;类&#xff09;及其属性、方法&#xff0c;每个对象根据需求执行自己的方法以解决问题 对象&#xff1a;单个…

JAVA 读取jar包中excel模板

1、在resources路径下&#xff0c;新建report文件夹&#xff0c;放入excel模板 2、配置文件中的目录&#xff0c;分隔符使用 / template: /report/报告模板V1.0.xlsx3、使用getResourceAsStream()读取 XSSFWorkbook wb;try {//需要以/开始InputStream resourceAsStream this.g…

中国芯,寻找新赛道迫在眉睫

北京华兴万邦管理咨询有限公司 商瑞 陈皓 近期国内半导体行业的热点可以用两个“有点多”来描述&#xff0c;一个是中国芯群体中上市公司股价闪崩的有点多&#xff0c;另一个是行业和企业的活动有点多。前者说明了许多国内芯片设计企业&#xff08;fabless商业模式&#xff09;…

怎么去选消息队列? Kafka vs. RabbitMQ

在上周&#xff0c;我们讨论了使用消息队列的好处。然后我们回顾了消息队列产品的发展历史。如今&#xff0c;在项目中需要使用消息队列时&#xff0c;Apache Kafka似乎是首选产品。然而&#xff0c;考虑到特定需求时&#xff0c;它并不总是最佳选择。 基于数据库的队列 让我们…

【由于无法验证发布者,所以 windozs 已经阳止此软件。】

由于无法验证发布者&#xff0c;所以 windozs 已经阳止此软件。 由于无法验证发布者&#xff0c;所以 windozs 已经阳止此软件。IE点击【Internet选项】在打开Internet选项的对话框中&#xff0c;点击“安全”选项卡在打开的新窗口中点击“受信任的站点”图标&#xff0c;然后点…