第一课

本课主题: 关系表达式、逻辑表达式

教学目的: 掌握关系表达式、逻辑表达式的使用

教学重点: 关系运算符、逻辑运算符及其优先关系

教学难点: 关系表达式、逻辑表达式在程序中的运用

授课内容:

一、关系运算符与关系表达式

  (1) C语言中的关系运算符:

    大于    >
    大于等于  >=
    小于    <
    小于等于  <=
    等于    ==
    不等于   !=

  (2) 关系运算符的优先级:

  1) >、>=、<、<=优先级相等,==、!=优先级相等,前者高于后者。
  2) 关系运算符的优先级低于算术运算符。
  3) 关系运算符的优先级高于赋值运算符。

  (3) 关系表达式:

  用关系运算符连接若干个算术表达式,叫关系表达式;算术表达式也是关系表达式。

  (4) 关系表达式的值:

  每个关系表达式有一个值,这个值可以是“真”或“假”,C语言中用“0”表示“假”,用非零表示“真”,(非零是许多数,当机器自动产生这个数时,他会产生 1)。
  例:1<5 的值为真;5<1 的值为假;a=1, b=5 时 a==b 的值为假。

二、逻辑运算符与逻辑表达式

  (1) 逻辑运算符

    AND 逻辑乘  &&
    OR 逻辑加  ||
    NOT 逻辑非  !

  (2) 逻辑运算符优先级

  1) ! 高于 && 高于 ||
  2) &&,|| 低于关系运算符,!高于算术运算符。

  (3) 逻辑表达式

  用逻辑运算符连接起来的关系表达式叫逻辑表达式,单独一个关系表达式也是逻辑表达式.

  提问:a<b<c 与 a<b && b<c 有何区别?

三、if 语句

  (1) if 语句的原型
  if (表达式)
    一个语句;
  else
    一个语句;

  如果表达式的值为真,执行 if 后面的语句;如果表达式的值为假,执行情况 else 后面的语句。 一个语句指必须有一个语句,而且只能有一个语句。

  (2) 简化的 if 语句

  if (表达式)
    一个语句;

  没有 else 部分.

  (3) 复合的 if 语句

  如果在一个语句处,要写多个语句,就要加上{}。

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

  (4) 嵌套的 if 语句

  就是 if 语句套 if 语句
  if (表达式)
    if (表达式)
      语句
  else
    语句

  因为 if 可以简化,所有在嵌套时有时会出现歧义,例如上例中,else 是与第一个 if 配对,还是与第二个 if 配对?这种时候,系统就武断地认为 else 与最近的一个 if 相对应。

  例:ax2+bx+c=0 求根 (a!=0)  main()
  {
  float a,b,c;
  float x1,x2,s;
    printf("Please Input a,b,c:\n");
    scanf("%f,%f,%f",&a,&b,&c);
    s = b*b-4*a*c;
    if (s<0)
        printf("No Real Root");
    else if (s==0)
    {
        x1 = -b/(2*a);
        printf("x1=x2=%f",x1);
    }
    else
    {
        x1 = (-b+sqrt(s))/(2*a);
        x2 = (-b-sqrt(s))/(2*a);
        printf("x1=%f,x2=%f",x1,x2);
    }
  }

四、switch 语句的一般格式

  switch 语句也叫多分支语句。

  switch (表达式)
  {
    case 常量表达式1:
      语句11; ... 语句1n;
    case 常量表达式2:
      语句21; ... 语句2n;
    ...
    case 常量表达式3:
      语句31; ... 语句3n;
    default:
      语句k1; ... 语句kn;
  }

  当表达式的值等于“常量表达式1”时,执行语句11; ... 语句1n;21; ... 语句2n;31; ... 语句3n;语句k1; ... 语句kn;当表达式的值等于“常量表达式2”时,执行语句21; ... 语句2n;31; ... 语句3n;语句k1; ... 语句kn;当表达式的值等于“常量表达式3”时,执行语句31; ... 语句3n;语句k1; ... 语句kn;当表达式的值等于default,执行语句k1; ... 语句kn;

  为了执行完语句11; ... 语句1n;不再向下执行,要在语句1n后加break;

  switch (表达式)
  {
    case 常量表达式1:
      语句11; ... 语句1n;break;
    case 常量表达式2:
      语句21; ... 语句2n;break;
    ...
    case 常量表达式3:
      语句31; ... 语句3n;break;
    default:
      语句k1; ... 语句kn;
  }

五、示例:

 

六、练习

根据一个人的出生年份,输出他的属相。

回目录