分支与循环(二)

目录

1.switch语句

1)switch语法形式

2)if语句和switch语句的对比

3) switch语句中的break

4) switch语句中的default

5) switch语句中的case和default的顺序问题

2.while循环

1) if 和 while的对比

2) while语句的执行流程​编辑

3)while循环的实践

4) 练习

3.for循环

1) for语法形式

         2) for循环的执行流程​编辑

3) for循环的实践

4) while循环和for循环的对比

5) for循环练习


1.switch语句
1)switch语法形式

switch 语句是一种特殊形式的 if...else 结构,用于判断条件有多个结果的情况。它把多重
的else if 改成更易用、可读性更好的形式

switch (expression) //根据表达式 expression 不同的值,执行相应的 case 分支
                    //如果找不到对应的值,就执行 default 分支
{
    case value1: statement
    case value2: statement
    default: statement
}

注意:

<1> switch 后的 expression 必须是整型表达式
<2>  case 后的值必须是整形常量表达式

2)if语句和switch语句的对比

if语句:

#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    if(n%3 == 0)
        printf("整除,余数为0\n");
    else if(n%3 == 1)
        printf("余数是1\n");
    else
        printf("余数是2\n");
    return 0;
}

switch语句:

#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    switch(n%3)
    {
        case 0:
            printf("整除,余数为0\n");
            break;
        case 1:
            printf("余数是1\n");
            break;
        case 2:
            printf("余数是2\n");
            break;
    }
return 0;
}

注意:

<1> case 和后边的数字之间必须有空格

<2> 每一个case 语句中的代码执行完成后需要加上break 才能跳出这个switch语句

3) switch语句中的break

如果去掉case语句中的break

#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);// 7
    switch(n%3)
    {
    case 0:
        printf("整除,余数为0\n");
    case 1:
        printf("余数是1\n");
    case 2:
        printf("余数是2\n");//多了一行“余数是2”的打印。
    }
    return 0;
}

只有在switch 语句中使用 break 才能在跳出switch 语句,如果某一个case 语句的后边没有break 语句,代码会继续玩下执行,有可能执行其他case语句中的代码,直到遇到break 语句或者switch 语句结束。就比如上面的代码就执行了case2 中的语句

当然, break 也不是每个case 语句都得有,这就得根据实际情况来看了

#include <stdio.h>
int main()      //1.输入1-5,输出的是“工作日”;
                //2. 输入6-7,输出“休息日”
{
    int day = 0;
    scanf("%d", &day);
    switch(day)
    {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    printf("工作日\n");
    break;
    case 6:
    case 7:
    printf("休息日\n");
    break;
    }
    return 0;
}

4) switch语句中的default

switch 后的表达式中的值无法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加入default 子句

switch (expression) 
{
    case value1: statement
    case value2: statement
    default: statement
}
#include <stdio.h>
int main()
{
    int day = 0;
    scanf("%d", &day);
    switch(day)
    {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    printf("工作日\n");
    break;
    case 6:
    case 7:
    printf("休息日\n");
    break;
    default:
    printf("输入错误\n");
    break;
    }
return 0;
}
5) switch语句中的case和default的顺序问题

在 switch 语句中 case 语句和 default 语句是没有顺序要求,只要你的顺序满足实际需求就可以

2.while循环
1) if 和 while的对比
if(表达式)
    语句;

while(表达式)
    语句;//如果循环体想包含更多的语句,可以加上大括号
//代码1
#include <stdio.h>
int main()
{
    if(1)
    printf("hehe\n"); //if后边条件满足,打印一次 hehe
    return 0;
}
//代码2
#include <stdio.h>
int main()
{
    while(1)
    printf("hehe\n"); //while后边的条件满足,死循环的打印 hehe
    return 0;
}
2) while语句的执行流程

表达式的值为0,循环直接结束;

表达式的值不为0,则执行循环语句,语句执

行完后再继续判断,是否进行下一次判断

3)while循环的实践
#include <stdio.h>
int main()    //在屏幕上打印1~10的值
{
    int i = 1;
    while(i<=10)
    {
        printf("%d ", i);
        i = i+1;
    }
    return 0;
}
4) 练习

输入一个正的整数,逆序打印这个整数的每一位
例如:
输入:1234,输出:4 3 2 1
输入:521,输出:1 2 5

题目解析
1. 要想得到n的最低位,可以使用n%10的运算,得到的余数就是最低位,如:1234%10得到4
2. 要想去掉n的最低位,找出倒数第二位,则使用 n=n/10 操作就可以去掉最低位的,如:n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第二位3。
3. 循环1和2两个步骤,在n变成0之前,就能到所有的位。

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

3.for循环
1) for语法形式

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

        语句;//如果2 循环体想包含更多的语句,可以加上大括号

 

        表达式1 用于循环变量的初始化
        表达式2 用于循环结束条件的判断
        表达式3 用于循环变量的调整

2) for循环的执行流程

首先执行 表达式 1 初始化循环变量,接下来就是执行 表达式2 的判断部分, 表达式2 的结果如果
==0,则循环结束; 表达式2 的结果如果 !=0则执行循环语句,循环语句执行完后再去执行表达式3 调整循环变量,然后再去表达式2 的地方执行判断, 表达式2 的结果是否为 0 决定循环是否继续


整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循
环。

3) for循环的实践
#include <stdio.h>
int main()//在屏幕上打印1~10的值
{
    int i = 0;
    for(i=1; i<=10; i++)
    {
    printf("%d ", i);
    }
    return 0;
}
4) while循环和for循环的对比

for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是for 循环的三个部分非常集中,便于代码的维护,而如果代码较多的时候 while 循环的三个部分就比较分散,所以从形式上 for 循环要更优一些

5) for循环练习

计算1~100之间3的倍数的数字之和

#include <stdio.h>
int main()
{
    int i = 0;
    int sum = 0;
    for(i=1; i<=100; i++)
    {
    if(i % 3 == 0)
    sum += i;
    }
    printf("%d\n", sum);
    return 0;
}

//小小的优化
//如果能直接产生3的倍数的数字就省去了多余的循环和判断
#include <stdio.h>
int main()
{
    int i = 0;
    int sum = 0;
    for(i=3; i<=100; i+=3)
    {
    sum += i;
    }
    printf("%d\n", sum);
    return 0;
}

谢谢观看

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

76 4G模组 境外拨号入网注意

1 引言 最近朋友把国内的设备拿到新加坡了&#xff0c;然后发现原本国内可以使用的设备无法在异国他乡联网&#xff0c;所以就叫我来看看&#xff0c;发现是附网返回状态、入网APN发生了改变导致的。另外&#xff0c;如果在境外使用国产4G模组拨号入网&#xff0c;也需要关注4G…

大语言模型与知识图谱结合发展方向

引言 在人工智能的发展历程中&#xff0c;大语言模型&#xff08;LLM&#xff09;的出现标志着一个重要的转折点。随着深度学习技术的突破和计算能力的提升&#xff0c;LLM以其前所未有的规模和复杂性&#xff0c;开启了迈向人工通用智能&#xff08;AGI&#xff09;的新浪潮。…

FastAPI+vue3+Primeflex教学20240706,渲染阶乘案例

子绝父相 相对定位是相对于自己原本的位置定位。 绝对定位&#xff0c;如果父元素设置了相对定位&#xff0c;则相对于父元素进行绝对定位&#xff0c;否则相对于最近的设置了相对定位的元素进行绝对定位&#xff0c;或者相对于根元素进行绝对定位。 定位有四个方向&#xff0…

Coze:如何开发你的第一个聊天机器人?

你好&#xff0c;我是三桥君。 我们要学习如何创建第一个聊天机器人&#xff1f;让AI工具成为我们的得力助手&#xff0c;帮助我们的工作。 如何创建Bot&#xff1f; 首先&#xff0c;点击首页里面的“创建Bot”按钮。 ​ “工作空间”我们选择个人空间。接下来是“Bot名称”…

【C++:内联】

内联 关键字&#xff1a;inline 用inline修饰的函数叫做内联函数。 优点&#xff1a;内联不会开辟函数栈帧缺点&#xff1a;内联不适合代码量多且频繁调用的函数 代码量比较大且频繁调用的函数使用内联会导致代码膨胀&#xff08;举个例子&#xff1a;本来是五行代码&#xff…

泛微开发修炼之旅--32ecology对接海康威视综合安防管理系统,人脸识别机器数据同步代码方案及源码

文章链接&#xff1a;32ecology对接海康威视综合安防管理系统&#xff0c;人脸识别机器数据同步代码方案及源码

Latex--制作幻灯片

目录 1.基本介绍 &#xff08;1&#xff09;案例引入 &#xff08;2&#xff09;相关说明 &#xff08;3&#xff09;控制顺序 &#xff08;4&#xff09;帧环境的创建 &#xff08;5&#xff09;内置主题 &#xff08;6&#xff09;生成标题页面 1.基本介绍 &#xff0…

支持Llama3、Baichuan2、Qwen1.5等模型私有化部署,英智让生成式AI开箱即用

AI大模型的崛起&#xff0c;无疑是技术革新的一次伟大飞跃。从最初的概念构想到逐步落地应用&#xff0c;如今已经广泛应用在各行各业&#xff0c;尽管通用大模型的功能非常全面&#xff0c;但在具体的企业场景中仍然存在局限。 对于服务行业来说&#xff0c;客户对于企业提供…

C语言 do while 循环语句练习 中

练习&#xff1a; 4.编写代码&#xff0c;演示多个字符从两端移动&#xff0c;向中间汇聚 // 编写代码&#xff0c;演示多个字符从两端移动&#xff0c;向中间汇聚 //welcome to china!!! //w ! //we !! //wel !!! //.... //welco…

AI老照片生成视频

地址&#xff1a;AI老照片 让你的图片动起来, 老照片修复与动态化

TSINGSEE智能分析网关V4人员区域徘徊AI检测:算法原理介绍及技术应用场景

一、引言 在现代社会&#xff0c;随着科技的不断发展&#xff0c;视频监控系统已广泛应用于各个领域&#xff0c;如公共安全、商业管理、交通监控等。其中&#xff0c;区域徘徊检测算法作为一种重要的视频分析技术&#xff0c;能够有效地识别出特定区域内人员的徘徊行为&#…

在arm架构CPU鲲鹏920安装ubuntu!制作U盘镜像!更换国内源!

目录 1.镜像下载 2.制作U盘镜像 3.U盘安装系统 4.arm版ubuntu更换国内源 1.镜像下载 地址&#xff0c;选择自己需要的版本&#xff1a;比如arm版ubuntu22.04下载地址&#xff1a;Ubuntu 22.04.4 LTS (Jammy Jellyfish) Daily Buildhttps://cdimage.ubuntu.com/jammy/dail…

MySQL之备份与恢复(八)

备份与恢复 还原逻辑备份 如果还原的是逻辑备份而不是物理备份&#xff0c;则与使用操作系统简单地复制文件到适当位置的方式不同&#xff0c;需要使用MySQL服务器本身来加载数据到表中。在加载导出文件之前&#xff0c;应该先花一点时间考虑文件有多大&#xff0c;需要多久加…

python 中的生成器

目录 生成器示例基本生成器示例无限序列生成器使用生成器表达式实用示例&#xff1a;按行读取大文件生成器的 send、throw 和 close 方法 生成器和迭代器迭代器&#xff08;Iterator&#xff09;定义创建使用示例 生成器&#xff08;Generator&#xff09;定义创建使用示例 主要…

政策公告与提醒

自 2024 年 4 月 3 日起,您将至少有 30 天的时间来更新应用,使其符合下方所述的政策变更。 我们将推出“儿童安全标准”政策,规定社交应用和约会交友应用必须遵循特定标准,并在 Play 管理中心内以自行认证的形式证明合规后才能发布。 为了提高健康相关应用在 Google Play…

grpc-go服务端接口添加

【1】新建一个目录whgserviceproto&#xff0c;目录下新建一个proto包&#xff1a;whgserviceproto.proto &#xff08;注意目录和包名称保持一致&#xff09; //协议为proto3 syntax "proto3"; // 指定生成的Go代码在你项目中的导入路径 option go_package"…

taoCMS v3.0.2 任意文件读取漏洞(CVE-2022-23316)

前言 CVE-2022-23316 是一个影响 taoCMS v3.0.2 的漏洞。这个漏洞允许攻击者通过 admin.php?actionfile&ctrldownload&path../../1.txt 的路径读取任意文件。攻击者可以利用该漏洞读取服务器上的任何文件&#xff0c;只要他们知道文件的路径​ (OpenCVE)​​ (Tenabl…

2024年最新运维面试题(附答案)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 一&#xff0e;选择题 1.HTTP协议默认使用哪个端口…

【Linux】什么是进程间通信?方式有哪些?本质理解?

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

【web前端HTML+CSS+JS】--- HTML学习笔记01

学习链接&#xff1a;黑马程序员pink老师前端入门教程&#xff0c;零基础必看的h5(html5)css3移动端前端视频教程_哔哩哔哩_bilibili 学习文档&#xff1a; Web 开发技术 | MDN (mozilla.org) 一、前后端工作流程 WEB模型&#xff1a;前端用于采集和展示信息&#xff0c;中…