C语言表达式与if语句-学习七
C语言表达式与if语句-学习七
2022-01-28 / 0评论 / 251阅读 / 0点赞
-- XG.孤梦

C语言表达式与if语句-学习七

XG.孤梦
2022-01-28 / 0 评论 / 251 阅读 / 正在检测是否收录...

1、关系运算符和关系表达式

关系运算符

运算符描述实例 (A=10, B=20)
\==检查两个操作数的值是否相等,如果相等则条件为真。(A \== B) 为假。
\!=检查两个操作数的值是否相等,如果不相等则条件为真。(A \!= B) 为真。
\>检查左操作数的值是否大于右操作数的值,如果是则条件为真。(A \> B) 为假。
\<检查左操作数的值是否小于右操作数的值,如果是则条件为真。(A \< B) 为真。
\>=检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。(A \>= B) 为假。
\<=检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。(A \<= B) 为真。
  • 表达式:

    • 算术表达式
    • 关系表达式
    • 逻辑表达式
    • 赋值表达式
    • 字符表达式

算术运算符、关系运算符、赋值运算符优先级比较

1.png

关系表达式

  • 左结合性
  • 定义:用关系运算符将两个表达式连接起来的式子。
  • 一般形式: 表达式 关系运算符 表达式
关系表达式的值是一个逻辑值,即“真”或“假”。1代表真,0代表假一个非零的数值认作为“真”

逻辑运算符和逻辑表达式

  • 3种逻辑运算符:

    • && 逻辑与
    • || 逻辑或
    • ! 逻辑非

31114-smnq8twvx8.png

  • 说明:

    • &&||是双元/目运算符,它要求有两个运算
    • ! 是一元/单目运算符,它要求有一个运算量。
  • 例如:

    • (a>b) || (x>y)
    • !(a>b)

优先级比较

11.png

逻辑表达式

  • 一般形式: 表达式 逻辑运算符 表达式
  • 运算规则:

    • 只有在必须执行下一个表达式才能求解时,才求解该表达式(即并不是所有的表达式都被求解)。
    • 对于逻辑运算,如果第一个操作数被判定为“”,系统不再判定或求解第二操作数
    • 对于逻辑运算,如果第一个操作数被判定为“”,系统不再判定或求解第二操作数

例子

计算下列的结果
#include <stdio.h>

void main() {
    char c = 'k'; 
    int i = 1, j = 2, k = 3;
    float x = 3e+5, y = 0.85;
    printf("%d,%d\n", !x * !y, !!!x);
    printf("%d,%d\n", x ||j && j - 3, i < j && x < y);
    printf("%d,%d\n",i==5 && c &&(j=8),x+y||i+j+k);
}

2.png

判断用year表示的某一年是否是闰年。
#include <stdio.h>

void main() {

    int year;
    scanf_s("%d", &year);

    printf("%d\n", year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
}

3.png


if语句

  • if语句的作用:用来判定所给定的条件是否满足,并根据判定的结果(真或假)决定执行给出的两种操作之一。
  • if语句有三种基本形式。

    • if
    • if else
    • if else if
前二种形式的if语句一般都用于两个分支的情况。
有多个分支选择时,可采用if-else-if语句。

例子

输入两个数a,b,判断并输出其中较大的数。
  • if
#include <stdio.h>

void main() {
    int a, b, max;
    scanf_s("%d %d", &a, &b);
        max = a;
    if (max < b) max = b;

    printf("max=%d\n", max);
}
  • if else

    #include <stdio.h>
    
    void main() {
      int a, b, max;
      scanf_s("%d %d", &a, &b);
    
      if (a > b)
          max = a;
      else
          max = b;
    
      printf("max=%d\n", max);
    }
    

4.png


例5:已知百分制成绩mark,显示对应的五级制成绩。
90—100优秀
80—89良好
70—79中等
60—69及格
<60不及格
  • if else if
#include <stdio.h>

void main() {
        double score;
        printf("请输入分数:\n");
        scanf_s("%lf", &score);
        if (score < 60) 
            printf("(不及格)\n"); 
        else if (score < 70) 
            printf("(及格)\n"); 
        else if (score < 80) 
            printf("(中等)\n"); 
        else if (score < 90)
            printf("(良好)\n");
        else if(score<=100) 
            printf("(优秀)\n");
        else printf("(输入错误\n");

}

5.png


if语句中应注意的问题

  • 该表达式通常是逻辑表达式或关系表达式, if(x>b)
  • 但也可以是其它表达式,如赋值表达式等,甚至也可以是—个变量。
  • 例如:

    • if(a=5)
    • if(b) 语句;只要表达式的值为非0,即为“真”。
if(a=b)   //把 b 的值赋给 a,如果非0则输出该值

    printf ("%d",a);
else
    printf("a=0");
  • 在if语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号if (a>b) max=a;
  • 在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。但要注意的是在}之后不能再加分号
  • 例如:
if (a>b) 
    {a++; b++;}
else 
    {a--; b--;}

例子

输入两个实数,按代数值由小到大的顺序输出这两个数。

解题思路:

  • 只需要做一次比较,然后进行一次交换即可
  • 用if语句实现条件判断
  • 关键是怎样实现两个变量值的互换
#include <stdio.h>

void main() {
    float a, b,c;
    scanf_s("%f %f", &a, &b);

    if (a < b)
    {
        c = a;
        a = b;
        b = c;
        printf("%.2f %.2f\n", a, b);
    }
    else
        printf("%.2f %.2f\n", a, b);
}

6.png

输入3个数a,b,c,要求按由小到大的顺序输出。

解题思路:

  • if a>b, a和b对换 (a是a、b中的小者)
  • if a>c,a和c对换 (a是三者中最小者)
  • if b>c,b和c对换 (b是三者中次小者)
#include <stdio.h>

void main() {
    float a, b, c, d;
    scanf_s("%f %f %f", &a, &b, &c);

    if (a > b) 
        {
        d = a; a = b; b = d;
    }
    if (a > c)
    {
        d = a; a = c; c = d;
    }
    if ( b> c)
    {
        d = b; b = c; c = d;
    }
    printf("%.2f %.2f %.2f\n", a, b, c);        
}

7.png


if语句的嵌套

  • 在if语句中又包含一个或多个if语句,称为if语句的嵌套。
  • else总是与它前面最近没有配对的if配对

例子

比较两个数的大小关系
#include <stdio.h>

void main() {
    float a, b;
    scanf_s("%f %f", &a, &b);

    if (a != b)
        if (a > b)
            printf("%.2f > %.2f\n", a, b);
        else
            printf("%.2f < %.2f\n", a, b);
    else 
    printf("%.2f = %.2f\n", a, b);        
}

8.png

条件运算符

条件运算符: ? :

  • 格式: 表达式1 ? 表达式2 : 表达式3 (如果表达式1为“真”,返回表达式2,否则返回表达式3)。
  • 使用场合:若在if语句中,当被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且向同一个变量赋值时,可以用一个条件运算符来处理。
  • 例如:
if(a>b)
    max=a;
else
    max=b; 
// 相当于
max = (a>b)? a : b;

例子

输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到结果。
#include <stdio.h>

void main() {
    char x,y;
    scanf_s("%c",&x);

    y = (x >= 'A'&& x <= 'Z') ? (x + 32) : x;

    printf("%c\n", y);
}

10.png


0

评论

博主关闭了所有页面的评论