zoukankan      html  css  js  c++  java
  • C程序设计导引(2)

    3

    3.0 C语言三类控制结构

    顺序结构

    选择结构(分支结构,条件语句,Selection Structure)

    重复结构(循环结构,循环语句,Loop Structure)

    3.1 关系运算符和逻辑运算符

    关系运算符

    <<=>>=  左端小于、小于等于、大于、大于等于右端时返回值为1,否则为0。C语言中无布尔类型所以在判断的时候,0为假,非零都为真。

    ==!=        左端等于、不等于右端时返回值为1,否则为0

    运算符亦具有优先级,第一行中的运算符优先级大于第二行。同一行中的运算符具有相同的优先级。

    逻辑运算符

    && 与,|| 或,!非

    1) 与运算(&&)
    同真则真,否则为假。例如:
    7>0 && 2>1
    二者的结果都为真(1),相与的结果也为真。

    2) 或运算(||)
    参与运算的两个量只要有一个为真,结果就为真。 两个量都为假时,结果为假。例如:
    5>4 || 5>8
    由于5>4为真,相或的结果也就为真。

    上面两种运算都是有两个参数的双目运算符。同时,有些情况下只要第一个参数的结果算出,表达式的结果也就知道了(如与运算第一个表达式值为假,或运算第一个值为真),这时候就不会再算右边的表达式。这种规则称为“短路求值”。


    3) 非运算(!)
    表达式结果为真时,结果为假;表达式结果为假时,结果为真。例如:
        !(5>0)

    结果为假(0)。

     

    3.2 运算符的优先级

    四则运算符>关系运算符>逻辑运算符

    逻辑运算符中,优先级为“非”>“与”>“异或”>“或”

    值得注意的是双目运算符如与,异或等都是“短路求值”。也就是说如果计算左边就知道答案的话,运算符右边的表达式就不会运行了。

     

    3.3 条件语句

    1)条件语句有两种,第一种是if语句,第二种是if else语句。

    句法格式如下:

    if  (<表达式>)  <语句>

    在这个语句中,表达式描述后面的语句可以执行的条件。括号内表达式非0时,条件为真,否则为假。如果为真则执行语句,否则不执行。

    一个例子:

    if (a%2==0)
    
      printf(“%d是偶数
    ”,a);
    
    if  (<表达式>)  <语句1>  else  <语句2>
    
    if (a%2==0)
    
      printf(“%d是偶数
    ”,a);
    
    else
    
      printf(“%d是奇数
    ”,a);

     

    2)如果一个语句不满足我们的需要,我们就要使用复合语句。

    下面是一个例子:

    {
    
      double a,b;
    
      a=x+y; b=x-y;
    
      z=a*a+b*b;
    
    }

     

    之前例子中的<语句><语句1><语句2>都可以使单条语句,也可以是复合语句。

    不仅如此,我们还可以对条件语句进行嵌套(不再举例)和级联,编译器总是把else与它之前最近的if联系起来

    if (表达式1) 语句1
    
    else if (表达式2) 语句2
    
    …
    
    else 语句n+1

    这里需要注意的是,若进行比较的是浮点数,通常不能直接使用“==”和“!=”,而应该在写成fabs(x-a)<EPS。EPS是最大允许的误差,而fabs是对浮点数取绝对值的标准库函数。 

     

    (3)还有一类运算符叫做条件运算符,即形如?:”的三元运算符。由条件运算符及其运算对象构成的表达式被称为条件表达式。语法格式如下:

    <表达式1><表达式二>:<表达式3>

    当表达式1为真时计算表达式2的值作为条件表达式的值,否则计算表达式3的值作为条件表达式的值。

     

    3.5  switch语句

    switch语句是一种多路选择的分支结构,语法格式如下:

    switch(<控制表达式>){
    
    case <常量表达式1>:语句序列1
    
    case <常量表达式2>:语句序列2
    
    ...
    
    case <常量表达式n>:语句序列n
    
    default:<语句序列n+1>
    
    }

    default及其所对应的语句序列是可选项,任何一个case所对应的语句序列也可以为空,每个常量表达式的类型必须是整形且各不相同。default后面的语句会在控制表达式的值未在任何一个case中出现时执行。

    case后面接多条语句时不需要放在{}中;若连续的case之间没有语句,则他们执行同样的语句。

  • 相关阅读:
    POJ数据结构专辑(含部分题解)
    第K小数 uva 10041 Vito's Family poj 2388 Who's in the Middle
    POJ 1195 Mobile phones (二维树状树组)
    python 学习体会
    ACM竞赛常用STL(二)之STLalgorithm
    计算机科学中的树
    ctf古典密码从0到
    漏洞挖掘的艺术面向源码的静态漏洞挖掘
    漏洞挖掘的艺术面向二进制的静态漏洞挖掘
    实战演示 H5 性能分析
  • 原文地址:https://www.cnblogs.com/Shymuel/p/8439230.html
Copyright © 2011-2022 走看看