嵌入式初学-C语言-十一

news2024/11/14 20:23:46

#接嵌入式初学-C语言-十,以及部分例题#

循环结构

break和continue

break

功能:

        1. 用在switch中,用来跳出switch的case语句;如果case没有break,可能会产生case穿透。

        2. 用在循环中(while、do..while、for..),提前结束循环,也就是跳出整个循环。

说明:

        1. break不能用于循环语句和switch语句之外的任何其它语句之中。

        2. break只能终止并跳出最近一层的结构。 图示:

案例:

/**
* 需求:break案例-同学参与一阶段分段考试,如果考试及格,就跳出循环,否则就一直考
*/

#include <stdio.h>

int main()
{
    printf("一阶段分段考试\n");
    // 声明一个变量,用来存放考试成绩
    int score = 0;
    do
    {
        // int score = 78; // score的作用域只能作用域到{}以内
        printf("开始一阶段分段考试...\n");
        scanf("%d",&score);
        // 开始合格,结束考试
        if(score >= 60){
        break;
        }
    }
    while(1);
    printf("恭喜你考试通过!\n");
    return 0;
}

案例:

/**
* 需求:break案例-输出1~100以内的偶数,只输出前10个
*/

#include <stdio.h>

int main()
{
    for(int i = 1,count = 1;i <= 100;i++)
    {
        if(i % 2 == 0)
        {
            if(count > 10){
                break;
            }
            count++;// 注意位置:只记录偶数
            printf("%d\t",i);
        }
    }
    printf("\n");

    return 0;
}

continue

功能:continue语句不会结束整个循环,而是跳过本次循环尚未执行的语句,进入下一次循环。

说明:

        1. 仅用于循环语句中。

        2. 在嵌套循环的情况下,continue语句只对包含它的最内层的循环体语句起作用。

图示:

案例:

/**
* 需求:continue案例-求1~100之内的偶数和
*/

#include <stdio.h>

// 不使用continue
void fun01()
{
    int sum = 0;
    for(int i = 1; i <= 100; i++)
    {
        // 判断偶数
        if(i % 2 == 0)
        {
        sum += i;
        }
    }
    printf("1~100之内的偶数和是:%d\n",sum);
}

// 使用continue
void fun02()
{
    int sum = 0;
    for(int i = 1; i <= 100; i++)
    {
        // 判断奇数
        if(i % 2 != 0)
        {
            continue;// 跳出所有的奇数
        }
        sum += i;
    }
    printf("1~100之内的偶数和是:%d\n",sum);
}

int main()
{
    fun01();
    fun02();
}

跳出多层循环

  跳出多层循环是不能使用break和continue的,因为他们只能跳出单层循环,跳出多层循环,需要 我们自己定义标志位进行跳出。

案例:

// 定义一个标志位
int isFlag = 1;// 默认循环成立
char fu;
while(isFlag)
{
    printf("第一层循环执行的内容...\n");
    while(isFlag)
    {
        printf("第二层循环执行的内容...\n");
        printf("是否跳出循环?(y/n)");
        scanf("%c",&fu);
        if(fu == 'Y' || fu == 'y')
        {
            isFlag = 0;
        }
    }
}

注意:如果是多层循环,进的时候是从外到内,跳出的时候是从内到外。

习题:

1.计算n以内所有正奇数的和 ? n值通过键盘输入

  1 /*
  2  需求:计算n以内所有正奇数的和 ? n值通过键盘输入
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     int sum = 0;
  9     int a = 0;
 10 
 11     printf("请输入一个正值:");
 12     scanf("%d",&sum);
 13 
 14     for(int i = 1;i <= sum;i++)
 15     {
 16         if(i % 2 != 0)
 17         {
 18             a += i;
 19         }
 20     }
 21 
 22     printf("正奇数和为:%d\n",a);
 23 
 24     return 0;
 25 }

2.计算 1 + 1/(2 * 3) + 1/(3 * 4) + ...+ 1/(n * (n + 1)) = ?直到最后一相值小于0.00001为至。

  1 /*
  2   计算 1+1/(2*3)+1/(3*4)+...+1/(n*(n+1))=?直到最后一相值小于0.00001为至。
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     double sum = 1.0;
  9     double i = 1.0;
 10     do
 11     {
 12 
 13        sum = sum + 1.0 / ((i + 1) * (i + 2));
 14        i++;
 15 
 16     }while(1.0 / ((i + 1) * (i + 2)) >= 0.00001);
 17 
 18 
 19     printf("%lf\n",sum);
 20 
 21     return 0;
 22 }

3.计算1+1/2 - 1/3 + 1/4 - 1/5 ...+1/n= ? n通过键盘输入

  1 /*
  2   需求:计算1+1/2 - 1/3 + 1/4 - 1/5 ...+1/n= ? n通过键盘输入
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     int a;
  9     int b = 2;
 10     double sum = 1;    //找出题目的关系为1加上n分之1,再减n+1分之1,将算是前1直接赋给sum,利于找出关系表达式
 11     printf("请输入一个数字:\n");
 12     scanf("%d",&a);
 13 
 14     do
 15     {
 16         if(b % 2 == 0)  //题目可知被二整除为加号
 17         {
 18             sum += 1.0 / b;
 19         }
 20         else            //不被二整除为减号
 21         {
 22             sum -= 1.0 / b;
 23         }
 24         b++;
 25     }while(b <= a);   //当b大于输入值时跳出循环
 26 
 27         printf("输出的值为:%f\n",sum);
 28 
 29 
 30 
 31     return 0;
 32 }

4.计算n的阶乘 ? n! = 123.....*n n值通过键盘输入

  1 /*
  2  需求:计算n的阶乘 ? n! = 123.....*n n值通过键盘输入
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     int b = 0,sum = 1;   //sum要算乘法所以赋值不能为0
  9     printf("请输入一个整数数值:");
 10     scanf("%d",&b);
 11 
 12     for(int a = 1;a <= b;a++)   //当a循环到大于输入值b时停止循环
 13     {
 14         sum *= a;   //等价于 sum = sum * a
 15     }
 16 
 17     printf("你输入的数值%d的阶乘为%d\n",b,sum);
 18 
 19     return 0;
 20 }

5.输出半径为1~10的圆面积,面积大于100时停止

  1 /*
  2   需求:输出半径为1~10的圆面积,面积大于100时停止
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     double s = 1.0;
  9     int r = 1;
 10     double PI = 3.1415926;
 11     while(1)        //当前循环为死循环,但是是可控制死循环
 12     {
 13         s = PI * r * r;   //圆的面积=pi×r×r
 14         r++;
 15         if(s > 100)
 16         {
 17             break;   //面积大于100,提前跳出,不再输出
 18         }
 19         printf("当前圆的面积为:%.3f\n",s);  //每次输出圆的面积
 20     }
 21 
 22     printf("输出结束!\n");
 23 
 24     return 0;
 25 }

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

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

相关文章

Linux压缩/解压缩工具:tar命令详解

目录 一、概述 二、基本概念 三、tar命令的基本语法 1、基本语法 2、常用选项 3、帮助获取 四、用法和示例 1. 创建归档文件 &#xff08;1&#xff09;用法 &#xff08;2&#xff09;示例 2. 解压缩归档文件 &#xff08;1&#xff09;用法 &#xff08;2&#…

经典非比较排序—计数排序的Java实现方式

目录 1.具体思路&#xff1a; 2.代码实现&#xff1a; 3.代码分析 4.示例测试&#xff1a; 测试源码&#xff1a; 测试结果&#xff1a; 计数排序&#xff0c;又被称为鸽巢原理&#xff0c;属于桶排序的一种&#xff0c;其本质是通过哈希映射思想&#xff0c;设定计数数组输入以…

音视频入门基础:WAV专题(5)——FFmpeg源码中解码WAV Header的实现

音视频入门基础&#xff1a;WAV专题系列文章&#xff1a; 音视频入门基础&#xff1a;WAV专题&#xff08;1&#xff09;——使用FFmpeg命令生成WAV音频文件 音视频入门基础&#xff1a;WAV专题&#xff08;2&#xff09;——WAV格式简介 音视频入门基础&#xff1a;WAV专题…

论文翻译:Large Language Models in Education: Vision and Opportunities

Large Language Models in Education: Vision and Opportunities 文章目录 教育中的大型语言模型&#xff1a;愿景与机遇摘要1 引言2. 教育与LLMsA. 教育背景B. LLMs背景C. 智能教育D. 教育中的LLMs 3. EduLLMs的关键技术4. LLM赋能教育A. LLMs在教育中的应用B. LLMs下教育的特…

免费分享:全国传统村落空间分布数据(附下载方法)

数据简介 本数据是在中国传统村落名录的基础上&#xff0c;通过地理编码&#xff0c;制作成具有空间坐标信息的矢量数据。 数据属性 数据名称&#xff1a;全国传统村落空间分布数据数据时间&#xff1a;2012年至今&#xff0c;更新至第五批空间位置&#xff1a;全国数据格式&…

opencascade AIS_TrihedronOwner源码学习对象的实体所有者用于选择管理

opencascade AIS_TrihedronOwner 前言 AIS_Trihedron对象的实体所有者用于选择管理。 在OpenCascade的AIS&#xff08;交互对象框架&#xff09;中&#xff0c;管理类似AIS_Trihedron的对象的选择涉及理解如何处理实体&#xff08;或所有者&#xff09;以进行选择。 方法 1…

【单片机毕业设计选题24095】-基于手机端的电池电压采集系统

系统功能: 系统上电后&#xff0c;OLED显示三组18650锂电池电压。 第一行显示第一组锂电池电压 第二行显示第二组锂电池电压 第三行显示第三组锂电池电压 第四行显示电压设定阈值 短按B4按键增加电压设定阈值 短按B5按键减小电压设定阈值 如果任意一组电池电压小于电压…

红酒与季节:品味四季的风情

四季轮转&#xff0c;岁月更迭&#xff0c;每个季节都有其不同的韵味与风情。当定制红酒洒派红酒&#xff08;Bold & Generous&#xff09;与四季相遇&#xff0c;它们共同编织出一幅幅美丽的味觉画卷&#xff0c;让我们在品味中感受四季的风情。 一、春之序曲&#xff1a…

【ESP01开发实例】-ESP-01驱动DHT11和DH22传感器

ESP-01驱动DHT11和DH22传感器 文章目录 ESP-01驱动DHT11和DH22传感器1、DHT11/DHT22传感器介绍2、LCD1602介绍3、硬件准备与接线4、代码实现本主题介绍如何使用 DHT11 和 DHT22 相对湿度和温度传感器与 ESP8266 ESP-01 Wi-Fi 模块,将相对湿度和温度的测量值显示在 162 LCD 屏幕…

C++回顾——多态

一、定义 ①从广义上说,多态性是指&#xff1a;一段程序能够处理多种类型对象的能力。在C语言中,这种多态性可以通过包含多态4种形式来实现。强制多态、重载多态、类型参数化多态、包含多态。 ②从实现上来说&#xff0c;多态的分类&#xff1a;静态多态、动态多态。 二、 广…

云原生安全检测工具(容器安全、trivy、veinmind-tools)

目录 trivy 功能 扫描方式&目标 安装 漏洞库下载及更新 漏洞库扫描原理 官方漏洞库生成 使用 扫描镜像 扫描 wazuh-daemonset 所有漏洞 扫描 wazuh-daemonset 高危、严重漏洞(漏洞过滤) 扫描文件系统 Git 存储库漏洞扫描 报告输出格式 veinmind-tools 1.…

Vue的学习(一)

目录 一、Vue的介绍 二、指令 1.v-text 2.v-html 3.v-show 4.v-if 1&#xff09;v-if与v-show的区别 5.v-else 6.v-else-if 7.v-for 1)v-for 与v-if的优先级 8.v-on&#xff1a;click 9.v-bind 10.v-model 三、表单修饰符 1. .lazy 修饰符 2. .number修饰符…

算法通关:014_2:用队列实现栈

文章目录 题目思路问题总结导包有问题&#xff0c;java提供的有关队列的方法不能调用。queue.add()和queue.offer(n)&#xff0c;这两个方法有什么区别什么叫用LinkedList实现队列 代码结果 题目 LeetCode 225. 用队列实现栈 思路 问题总结 导包有问题&#xff0c;java提供的…

银行业数据分析的关键应用场景探索

“ 随着数字经济的蓬勃发展&#xff0c;银行业正经历着前所未有的变革。从传统的存贷款业务到如今的数字化服务&#xff0c;数据分析在银行中扮演着核心角色。本文将探讨银行业数据分析的主要场景&#xff0c;以及选型适配银行业分析需求的数据库技术。” 国内的商业化银行大体…

二维码直达App,Xinstall为你打通运营任督二脉

在移动互联网时代&#xff0c;App的推广和运营显得尤为重要。然而&#xff0c;许多企业在投入大量资源进行App推广和运营时&#xff0c;总会遇到一些棘手的问题&#xff0c;如用户转化率低、数据分析困难等。今天&#xff0c;我们要为大家揭秘一个神奇的助手——Xinstall&#…

RocketMQ5.0 生产者

生产者消息类型&#xff1a; 延迟队列的生产者 package mainimport ("context""fmt""github.com/apache/rocketmq-clients/golang/v5""github.com/apache/rocketmq-clients/golang/v5/credentials"errgroup2 "golang.org/x/sync…

实现函数返回字符的种类

文章目录 一、题目二、思路三、代码实现 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、题目 例如&#xff1a; 分别输入&#xff1a;a B 6分别输出&#xff1a;# * &#xff1f; 二、思路 第一步 获取键盘输入的字符&#xff0c;键盘输入的话…

服务器 Linux 的文件系统初探

好久没更新文章了&#xff0c;最近心血来潮&#xff0c;重新开始知识的累计&#xff0c;做出知识的沉淀~ 万事万物皆文件 文件系统&#xff1a;操作系统如何管理文件&#xff0c;内部定义了一些规则或者定义所以在 Linux 中所有的东西都是以文件的方式进行操作在 Linux 中&am…

Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget

文章目录 一、常见Linux发行版本二、Linux中yum、rpm、apt-get、wget的区别2.1 yum2.2 rpm2.3 apt-get2.4 wget2.5 总结 三、CentOS中yum的作用3.1 yum清空缓存列表3.2 yum显示信息3.3 yum搜索、查看3.4 yum安装3.5 yum删除、卸载程序3.6 yum包的升级、降级 四、Ubuntu中apt-ge…