TypechoJoeTheme

日志随记

统计
登录
用户名
密码

扫码登录
/
注册
用户名

此用户名将作为登录时所用的账号

邮箱

XG.孤梦

随风而动,随遇而安......

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

XG.孤梦博 主大佬
2022-01-28
/
0 评论
/
805 阅读
/
1199 个字
/
百度已收录
01/28
本文最后更新于 2022年08月13日,已超过 620天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

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

关系运算符

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

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

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

关系表达式

  • 左结合性
  • 定义:用关系运算符将两个表达式连接起来的式子。
  • 一般形式: 表达式 关系运算符 表达式

关系表达式的值是一个逻辑值,即“真”或“假”。1代表真,0代表假一个非零的数值认作为“真”


逻辑运算符和逻辑表达式

  • 3种逻辑运算符:

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

  • 说明:

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

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

优先级比较

逻辑表达式

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

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

例子

计算下列的结果

#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);
}

判断用year表示的某一年是否是闰年。

#include <stdio.h>

void main() {

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

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


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);
}


例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");

}


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);
}

输入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);        
}


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);        
}

条件运算符

条件运算符: ? :

  • 格式: 表达式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);
}


学习笔记C语言
朗读
赞(0)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

日志随记

本文链接:

https://www.xggm.top/archives/242.html(转载时请注明本文出处及文章链接)

评论 (0)
 
XG.孤梦博 主大佬

随风而动,随遇而安......


访问 110958 ℃
51 文章数
115 评论量

标签云

登录
X
用户名
密码