10、C语言的三大结构---顺序结构与、选择结构和循环结构

一、顺序结构

顺序结构的程序设计是最简单的,起包含的语句按照书写的顺序执行,且每条语句都将被执行。其他的结构可以包括顺序结构,也可以作为顺序结构的组成部分。

它的执行顺序是自上而下,依次执行。

二、选择结构

1、if(…) {…}

    1. 一般形式:
if (表达式) 
{
    语句;
}

表达式:

      1. 用非 0 值表示真,用 0 表示假;
      2. if(flag) 相当于 if(flag!=0);
      3. 浮点数无法与 0 比较,只能用近似的值比较;例: 1e-6 等于1x10的-6次方可以看成0来使用;
    1. 用于单分支选择结构;
    2. 如含有交叉关系,使用并列的if语句;

请写出 float x 与“零值”比较的 if 语句:

const float EPSINON = 0.00001;

if ((x >= - EPSINON) && (x <= EPSINON)

不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。

EPSINON应该是一个很小的值吧 因为计算机在处理浮点数的时候是有误差的,所以判断两个浮点数是不是相同,是要判断是不是落在同一个区间的,这个区间就是 [-EPSINON,EPSINON] EPSINON一般很小,10的-6次方以下吧,具体的好像不确定的,和机器有关

不可将浮点变量用“==”或“!=”与任何数字比较。

千万要留意,

无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。

假设浮点变量的名字为x,应当将

if (x == 0.0) // 隐含错误的比较

转化为

if ((x>=-EPSINON) && (x<=EPSINON))

其中EPSINON是允许的误差(即精度)。

2、if(…) {…} else {…}

    1. 一般形式:
 if(表达式) 
 {
     语句1; 
 } 
else 
{ 
    语句2;
}
    1. 用于双分支控制的条件语句;
    2. 用于非此即彼的关系时;

3、if(…) {…} else if(…) {…} … else if(…) {…} else {…}

    1. 一般形式:
if(表达式1) 
{ 
    语句1;
}
else if(表达式2) 
{
    语句2;
}
…
else if(表达式n)
{
    语句n;
}
else
{
    语句n+1;
}
    1. 用于多分支的控制的条件语句;

  1. 如果当前语句只有1条,则{}可以忽略,但是从编码规范的角度要求必须书写
  2. 如果是多条语句,则必须加{}
  3. 分支结构的条件注意不要出现重合部分,理应相互互补
  4. 一般情况,执行几率大的条件靠前书写

4、switch() {case …: …; case …: …; … default: …;}

  1. 条件:只能是整型变量或整型表达式(不允许出现浮点类型)
  2. case后面跟的条件只能是常量或者是常量表达式
    1. 一般形式:
switch(表达式)
{
    case 常量1:语句1;
    case 常量2:语句2;
    …
    case 常量n:语句n;
    default: 语句n+1;
}
    1. 用于多路选择的语句;

switch语句相当于多个if-else语句;
(表达式)只能是char型或者int型;
case 后面至少要有一个空格,常量后面是冒号
(表达式)与 常量类型要保持一致;
记得记得记得 在需要跳出的时候,在语句后面加上break;

  1. switch使用bread跳出分支结构
  2. 单纯的if语句不允许使用break
  3. if和switch之间可以相互嵌套

 

循环:for、do...while、while、goto...loop、递归

无限循环:一般会用在系统机制上

有限循环:当前循环具有规定的次数

三、循环结构定义

定义:从 main() 函数开始执行,从上往下,使得某些语句重复执行。

循环结构的程序:在顺序结构中,加入循环控制语句后的程序,比如循环控制语句 while、do … while、for等常用的循环控制语句。

循环三要素:循环变量的初值、循环变量的判断、循环变量的更新。

循环体结束标志:循环判断条件为假时跳出循环;break 语句存在,跳出循环。

循环控制语句:

1、for 循环

for(表达式1;表达式2;表达式3)
{
  语句;
}
  • for( 表达式1 ; 表达式2 ; 表达式3 )。
  • 表达式 1 通常是为循环变量赋初值,只执行一次。可省略。
  • 表达式 2 通常为循环条件,表示是否继续执行循环体,该判断条件若恒真,则会进入死循环。可省略。
  • 表达式 3 通常为更新循环变量的值,可省略。

for循环的执行过程: 1 2 3 2 3 2 3 2......

for(循环变量赋初值;循环条件;循环变量增值)
{
   语句;
}

for 循环常见问题

  • 忘记定义循环变量或对循环变量进行初始化
  • 循环条件的缺少时会造成死循环
  • 循环变量不更新也可能会造成死循环
  • for 循环语句中的分号不可省略

2、while循环;

表达式1;
while(表达式2)
{
  语句;
  表达式3;
}
  • while后面的语句称为循环体;
  • 循环体执行的次数由循环条件表达式(表达式2)来确定;
  • 当循环条件表达式为真值时就执行循环体;
  • while(1)//是一个死循环

注意:

一定要给i赋初值;

如果没有i++那么这个while循环就是个死循环;

3、do...while循环

表达式1;
do
{
  语句;
}
while(表达式2);

先执行一次指定的循环体语句,再判别表达式是否为真,若为真返回重新执行循环体语句。

注意while后的()后是有;的

while与do...while两者的区别:

  • while循环先判断再执行;
  • do...while循环先执行再判断:
  • 只要第一次进入循环的条件就不满足,那么这两种循环的结果可能不同;

break 语句

  • 格式:break ;(跳出)
  • 功能:终止退出。
  • 常用范围:循环体中和switch

作用:可以使流程跳到循环之外(结束整个循环过程),接着执行循环体下面的语句。

注意:break语句只能用于循环语句和switch语句,不能单独使用;

continue 语句

  • 格式:continue ;
  • 功能:结束当前循环,继续进行下一次循环,没有跳出循环体,还在当前循环体中,只是进行了下一次循环中。
  • 范围:循环体中。

作用:并不是终止整个循环,只是提前结束本次循环,继续执行下次循环;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值