什么是程序设计结构?
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或ab。
函数调表达式:由函数名、参数和括号组成的表达式,例如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 :语句;break;
case 2 :语句;break;
case 3 :语句;break;
}
标签决定着switch的入口,但并未规定其出口,例如 如果从case 1进入,那么他将一直执行到case 3,为了给switch加上限制, break语句出现了, break语句在switch()的功能是,当程序执行到break时,则结束switch语句
default
switch(a)
{
case 1 :语句;break;
case 2 :语句;break;
case 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做不到如此出色的效果
总结不易,如果有帮助,那就点个免费的赞吧,谢谢