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

ops/2024/10/18 22:24:56/

#接嵌入式初学-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     do11     {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     do15     {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要算乘法所以赋值不能为09     printf("请输入一个整数数值:");10     scanf("%d",&b);11 12     for(int a = 1;a <= b;a++)   //当a循环到大于输入值b时停止循环13     {14         sum *= a;   //等价于 sum = sum * a15     }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×r14         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.ppmy.cn/ops/88976.html

相关文章

ESP8266 完结日志 2024/8/2 23:50

呼!经历这么长 的时间终于完工了, 从零开始一步一步走过来,还是有一丢丢成就感的 功能: 上传文件 控制引脚 获取信息 重启设备 清空flash 期间接触:web开发 uni-app开发 c开发 python 开发 MQTT AI很棒,棒到我任何问题都想问AI, 甚至一丢丢逻辑下的操作都期盼AI解决. 抖音也…

案例分享—国外优秀ui设计作品赏析

国外UI设计创意迭出&#xff0c;融合多元文化元素&#xff0c;以极简风搭配动态交互&#xff0c;打造沉浸式体验&#xff0c;色彩运用大胆前卫&#xff0c;引领界面设计新风尚 同时注重用户体验的深度挖掘&#xff0c;通过个性化定制与智能算法结合&#xff0c;让界面不仅美观且…

VBA字典与数组第十七讲:工作表数组大小的扩展及意义

《VBA数组与字典方案》教程&#xff08;10144533&#xff09;是我推出的第三套教程&#xff0c;目前已经是第二版修订了。这套教程定位于中级&#xff0c;字典是VBA的精华&#xff0c;我要求学员必学。7.1.3.9教程和手册掌握后&#xff0c;可以解决大多数工作中遇到的实际问题。…

MySQL:基础增删查改

MySQL&#xff1a;基础增删查改 插入插入冲突 查询distinctwhereorder bylimit 删除deletetruncate 更新 插入 基本插入语法&#xff1a; insert [into] 表名 (列1, 列2 ...) values (值1, 值2 ...);into可以省略(列1, 列2 ...)与后面的(值1, 值2)一一对应如果插入时数据完全…

公布一批脸书爬虫(facebook)IP地址,真实采集数据

一、数据来源&#xff1a; 1、这批脸书爬虫&#xff08;facebook&#xff09;IP来源于尚贤达猎头公司网站采集数据&#xff1b; ​ 2、数据采集时间段&#xff1a;2023年10月-2024年7月&#xff1b; 3、判断标准&#xff1a;主要根据用户代理是否包含“facebook”和IP核实。…

详解Xilinx FPGA高速串行收发器GTX/GTP(1)--SerDes和GTX的关系

目录 1、SerDes和GTX的关系 2、传输总线的变化 2.1、从串行到并行 2.2、从并行又回到串行 《FPGA接口与协议》专栏的说明与导航 1、SerDes和GTX的关系 Hold On,这个系列文章不是讲GTX收发器的吗?怎么一开始就扯到SerDes上了?GTX和SerDes之间有啥关系?简而言之,…

JavaScript前端面试题——fetch

什么是fetch&#xff1f; fetch&#xff1a;fetch是浏览器内置的api&#xff0c;用于发送网络请求 ajax&axios&fetch的关系 ajax&#xff1a;ajax 是一种基于原生 JavaScript 的异步请求技术。它使用 XMLHttpRequest 对象来发送请求和接收响应。 axios&#xff1a;…

Nginx解析漏洞

一、nginx_parsing 这个解析漏洞其实是PHP CGI的漏洞&#xff0c;在PHP的配置文件中有一个关键的选项cgi.fix_pathinfo默认是开启的&#xff0c;当URL中有不存在的文件&#xff0c;PHP就会向前递归解析。在一个文件/xx.jpg后面加上/php会将/xx.jpg/xx.php解析为php文件。 1、…