3、程序结构和控制语句

1、程序结构

  从程序流程角度来看,C语言中的语句可以分为三种基本结构:顺序结构、分支结构和循环结构。

   1.1、顺序结构

  顺序结构即程序按顺序执行,不发生跳转。顺序结构的执行过程如下:

  1.2、分之结构(选择结构)

  选择结构即依据条件是否满足,有选择的执行相应功能。分支结构的执行过程如下:

  1.3、循环结构

  循环结构即依据条件是否满足,循环多次执行某段代码。循环结构的执行过程如下:

2、C语言控制语句

  2.1、条件判断语句

  (1)、if语句的形式

  A、单行if语句

if(表达式)
{
    语句;
}

  B、多行if语句

if(表达式)
{
    语句1;
}
else
{
    语句2;
}

  C、多条件if语句

if(表达式1) 
{
    语句1;
}
else if(表达式2)
{
    语句2;
}
else if(表达式3)
{
    语句3;
}
…………….
else if(表达式n-1)
{
    语句n-1;
}
else
{
    语句n;
} 

  D、嵌套if语句

{
    if()语句1
    else  语句2
}
else
{
    if()语句3
    else  语句4
}

if()
{
    if()语句1
}
else
{
    if()语句2
    else  语句3
}

  注意:if语句里面还可以嵌套if语句。在嵌套if语句中,else总是与它上面最近的if配对。

  (2)、三目运算符

  语法:<表达式1> ? <表达式2>:<表达式3>;

  如果表达式1的值为真,执行表达式2,并返回表达式2的结果;如果表达式1的值为假,执行表达式3,并返回表达式3的结果;

  <M> ? <a++>:<a-->; //M为0执行a--并返回值,非0执行a++并返回值,M等价于M!=0

  C++中的三目运算符返回的是变量,可以继续赋值,如下:

(a>b?a:b)=100;//执行完给a赋值100

  (3)、switch语句

  A、从匹配项开始执行到最后

switch(表达式)
{
    case 常量表达式1:语句1;
    case 常量表达式2:语句2;
    case 常量表达式3:语句3;
    case 常量表达式4:语句4;
    ………..
    case 常量表达式n:语句n;
    default:语句n+1;
}

  B、只执行匹配的一项,执行完该项后立即跳出循环

switch(表达式)
{
    case 常量表达式1:语句1;breakcase 常量表达式2:语句2;breakcase 常量表达式3:语句3;breakcase 常量表达式4:语句4;break;
    ………..
    case 常量表达式n:语句n;breakdefault:语句n+1break;
}

  2.2、循环语句

  (1)for循环语句

for(起始表达式;条件表达式;末尾循环体)
{
    循环体语句;
}
执行顺序:起始表达式、条件表达式、循环体语句、末尾循环体、条件表达式、循环体语句、末尾循环体……….其中起始表达式只执行一次。
for(;;)
{
    循环体语句;
}

  (2)、while循环

  A、先判断循环条件,循环条件成立时才执行循环体语句

whiel(循环条件)
{
    循环体语句;
}

  B、先执行一次循环体语句,再判断循环条件,循环条件成立时执行循环体语句

do
{
    循环体语句;
} whiel(循环条件);

  (3)、 goto语句构成循环

    goto语句也称为无条件转移语句,其一般格式如下:

    goto语句标号;

    其中语句标号是按标识符规定书写的符号,放在某一语句行的前面,标号后面加上冒号(:)。语句标号起标识语句的作用,与goto语句配合使用。

    C语言不限制程序中使用标号的次数,但各标号不得重名。Goto语句的语意是改变程序流向,转去执行语句标号所标识的语句。可以与条件判断语句配合使用,来构成循环。

  2.3、转向语句

  (1)、break语句

    break语句只能用在switch语句或循环语句中,其作用是跳出选择结构或跳出循环结构,转去执行后面的语句,break只能跳出一层循环。

    在switch条件语句中,作用是终止case并跳出switch。

    出现在循环语句中,作用是跳出当前循环语句。

    出现在嵌套循环中,跳出最近的内层循环语句。

  (2)、continue语句

    其功能是结束本次循环,但是并不跳出循环,即不再执行continue语句之后的语句,而是转入下一次循环。

  (3)、goto语句

    Goto语句除了可以用来构造循环外,还可以实现无条件跳转、条件转移、跳出循环体等功能。

  语法:

goto 标记;

  如果标记的名称存在,程序执行到goto语句时,会跳转到标记的位置。

/*举例*/
goto
loop; //跳转到loop loop:   程序;

 3、运算符

  (1)关系运算符

  关系运算符在使用时,它的的两边都会有一个表达式,比如变量、数值、加减乘除运算等,关系运算符的作用就是判明这两个表达式的大小关系。注意,是判明大小关系,不是其他关系。

  C语言提供了以下关系运算符:

关系运算符含  义数学中的表示
< 小于 <
<= 小于或等于
> 大于 >
>= 大于或等于
== 等于 =
!= 不等于


  关系运算符都是双目运算符,其结合性均为左结合。关系运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中,<、<=、>、>=的优先级相同,高于==和!=,==和!=的优先级相同。

  在C语言中,有的运算符有两个操作数,例如 10+20,10和20都是操作数,+ 是运算符。我们将这样的运算符称为双目运算符。同理,将有一个操作数的运算符称为单目运算符,将有三个操作数的运算符称为三目运算符。

  常见的双目运算符有 +、-、*、/ 等,单目运算符有 ++、-- 等,三目运算符只有一个,就是 ? :。

  (2)逻辑运算符

  在高中数学中,我们就学过逻辑运算,例如p为真命题,q为假命题,那么“p且q”为假,“p或q”为真,“非q”为真。在C语言中,也有类似的逻辑运算:

运算符说明结合性举例
&& 与运算,双目,对应数学中的“且” 左结合 1&&0、(9>3)&&(b>a)
|| 或运算,双目,对应数学中的“或” 左结合 1||0、(9>3)||(b>a)
! 非运算,单目,对应数学中的“非” 右结合 !a、!(2<5)

  在编程中,我们一般将零值称为“假”,将非零值称为“真”。逻辑运算的结果也只有“真”和“假”,“真”对应的值为 1,“假”对应的值为 0。

  1) 与运算(&&)

  参与运算的两个表达式都为真时,结果才为真,否则为假。例如:

5&&0  //5为真,0为假,相与的结果为假,也就是 0

 

(5>0) && (4>2)   //5>0 的结果是1,为真,4>2结果是1,也为真,所以相与的结果为真,也就是1

  2) 或运算(||)

  参与运算的两个表达式只要有一个为真,结果就为真;两个表达式都为假时结果才为假。例如:

10 || 0   //10为真,0为假,相或的结果为真,也就是 1

 

(5>0) || (5>8)   //5>0 的结果是1,为真,5>8 的结果是0,为假,所以相或的结果为真,也就是1

  3) 非运算(!)

  参与运算的表达式为真时,结果为假;参与运算的表达式为假时,结果为真。例如:

!0    //0 为假,非运算的结果为真,也就是 1

 

!(5>0)    //5>0 的结果是1,为真,非运算的结果为假,也就是 0

   (3)位运算符

image

 

posted @ 2020-02-18 15:37  孤情剑客  阅读(363)  评论(0)    收藏  举报