程序设计的三种结构-C中实现其的6条语句

news2024/9/27 5:47:13

什么是程序设计结构?

C语言设计出来就是为了解决现实中存在的问题,但是现实中问题大多较为复杂,如何描述问题也成为了一个重要的问题。将这些众多的问题核心找出来,我们发现只需要使用三种基本的结构包括:顺序结构,分支结构,循环结构就可以描述那些简单的问题,至于更为复杂的。通过这三种结构的有机结合就可以描述出来解决方案,
这种编写程序的模板也就是程序设计结构,本文将着重于介绍这三种设计结构,以及实现其的6种语句

一. 顺序结构

在这里插入图片描述

顺序结构是这三种中最为简单的结构,在代码层面,由一算,按顺序排列的语句组成,运行时按语句出现的先后顺序执行,例如从语句一执行到语句二。
这种结构逻辑十分自然,人渴了就喝水,天下雨就打伞,这种结构思路也是如此,因为过程过于简单,并不需要特定的语句去实现,我们日常代码编写就默默的遵循了这个逻辑

二.分支结构

分支结构也被称为选择结构,在代码层面。通过对条件的判断后进行分支,满足条件就执行语句,不满足就不执行。逻辑重点在于选择,人生无处无选择,例如。高中时好好学习那么可能执行的语句就是上大学,否则就是上大专, C语言把这种选择抽象成了满足条件就执行语句。实现分支结构的语句有两种,分别是if()和switch()

第1条- if()语句

在这里插入图片描述

首先我们来介绍一下if()语句, If中文译为如果, If语句书写格式为 if(控制表达式)语句;在计算机中零为假,非零为真。if()语句的执行逻辑是,控制表达式结果为真,条件满足,执行语句;控制表达式结果为假,则不执行

if else语句
在这里插入图片描述
If else语句书写格式为 if(控制表达式)语句一;语句二;if else()语句的执行逻辑是,控制表达式结果为真,条件满足,执行语句一;控制表达式结果为假,则执行语句二
现在我们语句学习了两种if类的语句

我们在日常编程中经常遇到的if else if语句,其中else if并不是标准的语法结构,if语句,顾名思义是一种语句
因此else控制的也是if()语句,有效使用这种结构,可以实现if的嵌套

在这里插入图片描述

ps-在C语言中,表达式是由运算符、操作数和其他表达式组成的计算式。表达式可以是以下类型之一:
常量表达式:由常量组成的表达式,例如2+3或4.52。
变量表达式:由变量组成的表达式,例如a+b或x/y。
运算符表达式:由运算符和操作数组成的表达式,例如x+y或a
b。
函数调表达式:由函数名、参数和括号组成的表达式,例如sin(x)或printf(“Hello”)。
赋值表达式:由赋值运算符和表达式组成的表达式,例如a = 3+4或b += 5。
逻辑表达式:由逻辑运算符(例如&&和||)和操作数组成的表达式,例如(a > b) && (c < d)。
条件表达式:由三目运算符(?:)和操作数组成的表达式,例如(a > b) ? a : b。
指针表达式:由指针变量和解引用运算符组成的表达式,例如*p或&(a[0])。
除此之外,表达式还可以包含括号,用于改变运算的优先级。例如,(a+b)*c将先计算a+b,然后将结果与c相乘。

第2条switch()语句

在这里插入图片描述

第2条语句是switch(),if语句会根据对某个条件的判断结果,将程序流程分为两支,那么我们现在介绍的switch语句,则会将程序分为多支

Switch书写格式为:
switch(控制表达式){语句}

不同于if的是,switch括号中的表达式必须是整数形, Switch(1)是合法的但switch(1.0)不合法

常见结构


switch(a)
{
  case 1 :语句;
  case 2 :语句;
  case 3 :语句;
  
  
}

其中 case 1之类的,这种用语表示程序跳转的标识,称之为标签,标签的值必须为常量。 Switch()语句的执行逻辑是将按括号里的控制表达式和标签进行对比,如果相等则执行对应语句

break

switch(a)
{
  case 1 :语句;breakcase 2 :语句;breakcase 3 :语句;break}

标签决定着switch的入口,但并未规定其出口,例如 如果从case 1进入,那么他将一直执行到case 3,为了给switch加上限制, break语句出现了, break语句在switch()的功能是,当程序执行到break时,则结束switch语句

default

switch(a)
{
  case 1 :语句;breakcase 2 :语句;breakcase 3 :语句;
  default:语句;break}

但有时控制表达式中的值与标签中的值没有一个相等,那么这时该如何是好?
Switch为我们提供了default, default相当于一个保底,除非程序前面的标签case有break限制,不然的话总是在最后执行一次default中的语句

defaultf放在switch中任意位置都可以,case的标签值也可以不按顺序放置,一个是出switch前执行的语句、一个是决定进入入口的标签

三.循环结构

循环结构,从代码层面看。通过对条件判断,条件为真重复执行循环体语句,条件为假时跳出循环。生活中很多问题都不是一次能解决的,需要一次一次的循环的去处理,例如我们编程学习也不是一蹴而就的,需要每天每天的重复练习, C语言针对这种需要重复才能解决的问题设计了循环结构,循环结构包括while(),for(),do while()和go to
有两特殊的语句要提一下,分别是break和continue语句

break在循环中的作用是,跳出离它最近的循环语句,该循环结束
Continue在循环中的作用是,跳过循环体后面的语句,重新进行判断,该循环并没有结束

第3条-while()语句

在这里插入图片描述
while()语句的书写格式为
while(判断表达式){语句若干;}
当判断表达式,非零时循环执行,为零时循环结束

要实现循环,一般需要有4个要素,即初始化判断部分循环体,以及调整部分
以代码为例

int main()
{
  int a=10;/1初始化部分
  while(a)/2判断部分
  {
    printf("haha\n");
    a--/3调整部分
  }/4循环体部分
  return 0;
}

第4条-for()语句

在这里插入图片描述

for的书写结构为for(1:初始化部分;2:判断部分;3调整部分){4:循环体部分;}
在第一次循环时运行逻辑为1->2->4->3,之后将不会进行初始化运行逻辑为2->4->3
另外,对于循环体中的continue语句,for()会让程序跳过循环体的剩下的语句,但第三部分调整部分不会跳过

While和for的功能完全相同 ,相互也可替代,但相对于while, For更好控制并且修改更简单,不同于while将循环的各部分分散于程序的地方,for将其集成在一个括号内

第5条-do whlie()语句

do while()书写结构如下

int a=10/初始化部分
do 
{
   printf("haha/n")循环体
    a--            调整部分
}while(a)  判断部分

do while语句主要针对于那些必须要执行一次的循环,其本质和while循环区别不大

第6条-go to语句

Goto语句书写格式为
goto 标记和标记 :
具体为

int main()
{
  again:
  printf("haha/n"goto again
  return 0;
}

代码中"Goto again “为goto标记”;again :"为标记:代码的运行逻辑是,当程序运行到go语句时程序执行将跳到标记处

C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。
例如:一次跳出两层或多层循环。
多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。
goto语言真正适合的场景如下:

for(...)
  for(...)
 {
    for(...)
   {
      if(disaster)
        goto error;
   }
 }
  …
error:
return 0;

如果if(disaster)为真,则进入go语句,接着程序一次跳出了三个循环,并且直接结束程序,普通的break做不到如此出色的效果


总结不易,如果有帮助,那就点个免费的赞吧,谢谢

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

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

相关文章

FS4068四节锂电池充电管理控制芯片

FS4068 是一款工作于 2.7V 到 6.5V 的 PFM 升压型四节锂电池充电控制集成电路。 FS4068采用恒流和恒压模式对电池进行充电管理&#xff0c;内部集成有基准电压源&#xff0c; 电感电流检测单元&#xff0c;电池电压检测电路和外置场效应晶体管驱动电路等&#xff0c; 具有外部元…

面向开发者的 ChatGPT 提示工程

LLM 正在逐步改变人们的生活&#xff0c;而对于开发者&#xff0c;如何基于 LLM 提供的 API 接口快速、便捷地开发一些具备更强能力、集成 LLM 的应用&#xff0c;来便捷地实现一些更新颖、更实用的能力&#xff0c;是一个急需学习的重要能力。由巨佬吴恩达老师与 OpenAI 合作推…

Golang每日一练(leetDay0060) 多数元素、两数之和III

目录 169. 多数元素 Majority Element &#x1f31f; 170. 两数之和 III Two-sum-iii-data-structure-design &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏…

Zynq实现SDI视频解码PCIE传输 提供工程源码和QT上位机源码加技术支持

目录 1、前言2、我已有的SDI编解码方案3、我已有的PCIE方案4、基于zynq架构的PCIE5、总体设计思路和方案SDI摄像头Gv8601a单端转差GTX解串SDI解码VGA时序恢复YUV转RGB图像缓存PCIE发送通路SDI同步输出通路 6、vivado工程详解7、驱动安装8、QT上位机软件9、上板调试验证SDI同步H…

VMware虚拟机克隆、复制虚拟机

文章目录 为什么要克隆一、环境检查二、开始克隆三、网卡静态配置 为什么要克隆 首先VMware 上创建的虚拟机是可以重复使用的&#xff0c;安装好的虚拟机可以直接复制或者剪切到其它任意电脑上&#xff0c;然后使用 VMware 打开使用&#xff0c;两者的虚拟机设置以及登录密码都…

MySQL笔记(二) 数据库操纵语言DML 、数据库查询语言DQL、数据库控制语言DCL、计算字段、子查询、函数

MySQL笔记&#xff08;二&#xff09; 数据库操纵语言 DML插入数据 INSERT修改数据 UPDATE删除数据 DELETE 数据库查询语言DQL单表查询常用查询条件排序查询分组和分页查询限制结果 分页查询多表查询自身连接查询外连接查询嵌套查询 计算字段字段 field拼接 concatenateTrim()…

10个免费的ChatGPT镜像网站

文章目录 前言说明网站 前言 ChatGPT是一种基于OpenAI GPT&#xff08;Generative Pretrained Transformer&#xff09;模型的聊天机器人&#xff0c;它可以对用户提出的问题做出回答&#xff0c;同时还能够进行精准的语言理解和回复&#xff0c;较好地满足了人们与机器人之间…

MySQL数据库基础表格——增删改查(下)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有收获&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️树高千尺&#xff0c;落叶归根人生不易&…

媒体邀约服务

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体邀约是什么&#xff1f;专业的媒体邀约服务包含哪些内容&#xff1f;怎么选择合适的媒体邀约服务机构&#xff1f; 今天胡老师就跟大家分享下这方面你的经验。 一&#xff0c;媒体邀…

【C++STL】AVL树

前言 二叉搜索树是具有特殊存储结构的树&#xff0c;任意根节点的左子树的所有节点值都比根节点的值小&#xff0c;右子树的所有节点值都比根节点大。 这种特殊的存储结构使得查找的效率大大提升&#xff0c;为logN。但是还有缺陷。 因为二叉搜索树的构建是一个节点一个节点的…

django 过往后端搭建笔记整理 (2)--rest_framework视图使用

rest_framework视图使用 CreateAPIView---单独执行post上传逻辑views.pyuser_serializers.py CreateAPIView—单独执行post上传逻辑 基本逻辑&#xff1a; ① 准备视图函数类 ② 准备序列化器类 &#xff08;其中可以自定义如何序列化数据、序列化哪些数据&#xff0c;以及如何…

苹果最近删除的照片删除怎么恢复?专业人士都这样恢复照片!

案例&#xff1a;苹果照片删除了怎么恢复&#xff1f; 【友友们&#xff0c;最近不小心清空了手机照片&#xff0c;在最近删除没有看到&#xff0c;有什么方法可以找回来吗&#xff1f;】 随着现代科技的不断发展&#xff0c;手机已经成为人们生活中必不可少的物品&#xff0c…

设计模式 -- 享元模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…

以CSDN为例,用Charles抓浏览器接口

0 描述 很多网站&#xff0c;都禁止F12&#xff0c;这就给抓包设置了门槛&#xff0c;虽然解决的方法有很多&#xff0c;今天尝试使用工具试一试&#xff0c;以CSDN热榜为例&#xff0c;直接转python代码 1 工具下载 工欲善其事&#xff0c;必先利其器 这个我就不多说&#x…

MySql -- 为什么使用B+树做索引

再有人问你为什么MySQL用B树做索引&#xff0c;就把这篇文章发给她 本文是参考上述文章进行总结和补充,大家感兴趣也可以阅读原文. 目录 1. 索引 2. 二叉搜索树 3. 平衡二叉树 4. B树 5. B树 6.扩展 -- 聚集索引 VS 非聚集索引 1. 索引 概念:索引是一种特殊的文件&#xff…

工业4.0,无代码改变软件开发格局,数字化转型不再寸步难行

从工业1.0时代到工业4.0时代&#xff0c;我们已经看到了&#xff0c;中国在不断发展的过程中&#xff0c;面临着很多的挑战&#xff0c;企业也面临着很多的困难。在这样的大背景下&#xff0c;传统的开发方式已经不再适用了。很多企业开始寻求一种新的方式来开发软件&#xff0…

【场景削减】基于DBSCAN密度聚类风电-负荷确定性场景缩减方法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

1688阿里巴巴中国站图片识别商品API接口、搜图链接、收藏加购接口

API&#xff08;Application Programming Interface&#xff09; 是现代移动应用程序开发和互联网服务有机结合的产物。API的应用使得应用程序之间的通信变得更加轻松、快捷&#xff0c;尤其对于业务复杂而庞大的企业系统&#xff0c;API让开发者能够从中提取必要的功能进行二次…

图表控件Stimulsoft 2023.2 带来极致深色主题, 一起来看看还有哪些亮点?

Stimulsoft Reports 是一款报告编写器&#xff0c;主要用于在桌面和Web上从头开始创建任何复杂的报告。可以在大多数平台上轻松实现部署&#xff0c;如ASP.NET, WinForms, .NET Core, JavaScript, WPF, Angular, Blazor, PHP, Java等&#xff0c;在你的应用程序中嵌入报告设计器…

IS215UCVEH2AB有助于在更远距离传输电力的同时实现更好的转换效率。

​ IS215UCVEH2AB有助于在更远距离传输电力的同时实现更好的转换效率。 根据法拉第电磁感应定律&#xff0c;当交变磁场作用于具有磁性的材料时&#xff0c;材料中会感应出电动势。 由于导电材料的磁性&#xff0c;EMF 的电流围绕磁性材料主体旋转。这种旋转电流称为涡流。当导…