当前位置: 首页 > article >正文

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

什么是程序设计结构?

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.kler.cn/a/18144.html

相关文章:

  • Spring Boot 集成JWT实现Token验证详解
  • Ubuntu24.04网络异常与应对方案记录
  • dell服务器安装ESXI8
  • Python脚本模拟远程网络探测
  • 智谱AI视频生成模型CogVideoX v1.5开源 支持5/10秒视频生成
  • golang 实现bitcoin core: bitcoin 椭圆曲线的“生成元”设置
  • 数据导向下制造业的生产效率、交易效率提升办法
  • 【ESD专题】案例:TVS管钳位电压能不能通过TLP测试数据表征?
  • 【CMIP6月、日数据】【ERA5-LAND陆面再分析数据】【全球VIPPHEN物候数据】
  • javaScript---设计模式-设计模式概论
  • TypeScript基础
  • Chapter 7:XDC Precedence (ug903)
  • TreeMap源码分析,Collections工具类的使用
  • 相对路径的详细用法
  • 行为型模式-中介者模式
  • 武忠祥老师每日一题||定积分基础训练(十)
  • 9大Python常用技巧 经验之谈
  • 安全访问服务边缘 (SASE) 技术的优缺点及工作原理
  • 基于海鸥算法改进的随机森林回归算法 - 附代码
  • 美句分享~程序员的放松时间~
  • 并发编程01:基础篇
  • Linux常用命令,你需要了解多少呢?
  • Java字符串的用法、原理、性能分析和总结
  • 杜甫经典长诗“三吏”“三别”赏析
  • FAST协议解析2 FIX Fast Tutorial翻译【PMap、copy操作符】
  • 代码随想录算法训练营day30 | 332. 重新安排行程,51. N 皇后,37. 解数独