第三章 判断

判断

计算时间差(if语句实现)

#include <stdio.h>

int main()
{
    int hour1, minute1;
    int hour2, minute2;

    scanf("%d %d", &hour1, &minute1);
    scanf("%d %d", &hour2, &minute2);

    int ih = hour2 - hour1;
    int im = minute2 - minute1;

    if(im < 0){
        im = 60 + im;
        ih--;
    }

    printf("时间差是%d小时%d分。\n", ih, im);

    return 0;
}

运行结果code1

    if(im < 0){
        im = 60 + im;
        ih--;
    }

如果if(condition){}condition不满足,则{}里面的内容不用执行,直接跳过这个if语句。

if语句

if(条件成立){
    ...
}

做比较

计算机的智能是建筑在规则的基础上的,在遇到情况的时候,根据事先制定的规则做出判断,是计算机最基本的能力。
能做判断的基础,是能对数据做比较,比较就是关于两个数据是否相等、谁大谁小的结论,这需要用到关系运算:对两个数据之间的关系的计算。
计算两个值之间的关系叫做关系运算
C语言提供了六个关系运算符:
● == 相等
● != 不相等
● > 大于
● >= 大于或等于
● < 小于
● <= 小于或等于

注意其中有两个字符的运算符:==、>=和<=的两个字符必须紧紧连在一起,中间不能插入空格。

关系运算的结果是一个逻辑值,逻辑值只有两种可能的值:true(真,表示成立)或false(假,表示不成立)。当两个值的关系符合关系运算符的预期时,关系运算的结果为true,否则为false。
来自: 程序设计入门——C语言_中国大学MOOC(慕课)
printf("%d\n", 5==3);
printf("%d\n", 5>3);
printf("%d\n", 5<=3);
这三个式子中,5==3是一个关系运算,它的结果是一个逻辑值。

优先级

  • 所有的关系运算符的优先级比算术运算的低,但是比赋值运算的高
  • 7 >= 3 + 4
  • int r = a>0;
  • 而在所有的关系运算符中它们的优先级也是不一样的
  • 判断是否相等的==和!=的优先级比其他的低,而连续的关系运算是从左到右进行的
  • 5 > 3 == 6 > 4
  • 6 > 5 > 4
  • a == b == 6
  • a == b > 0
    不论程序多么复杂,它们执行的流程都是一样的
  • 输入->计算->返回输出结果

注释(comment)方式

  • 以//开始、以换行符结束的单行注释(line comment)
  • 以/*开始、以*/结束的块注释(block comment)
  • 预处理器会把每个注释都替换成一个空格

判断年龄

age

#include <stdio.h>

int main()
{
    const int MINOR = 35;
    int age = 0;

    printf("请输入你的年龄:");
    scanf("%d", &age);

    printf("你的年龄是%d岁.\n", age);

    if(age < MINOR){
        printf("年龄是美好的.");
    }

    printf("年龄决定了你的精神世界, 好好珍惜吧.\n");

    return 0;
}

运行结果,ageJudge

否则的话

else = 否则的话

找零

// 初始化
int price = 0;
int bill = 0;
// 读入金额和票面
printf("请输入金额:");
scanf("%d", &price);
printf("请输入票面:");
scanf("%d", &bill);
// 计算找零
if(bill >= price){
    printf("应该找您:%d\n", bill - price);
}else{
    printf("你的钱不够\n");
}

运行结果changeElse

if语句再探

  • if语句可以没有大括号
    说明1
    说明2
#include <stdio.h>

int main()
{
    const double RATE = 8.25;
    const int STANDARD = 40;
    double pay = 0.0;
    int hours;

    printf("请输入工作的小时数:");
    scanf("%d", &hours);
    printf("\n");
    if(hours > STANDARD)
        pay = STANDARD * RATE + (hours - STANDARD) * (RATE * 1.5);
    else
        pay = hours * RATE;
    printf("应付工资:%f\n", pay);

    return 0;
}

讨论区

为什么强调if和else后面要用{}

能够明确地标识出这些语句属于if和else语句的范围,避免了可能的歧义,增加了代码的可读性和可维护性。 如果没有使用花括号,if和else语句只能控制其后的单个语句。 如果在单个语句后紧接着编写另一条语句,那么这条语句将始终会被执行,而不管if或else语句的条件是否为真或假。 因此,强调在 if 和 else 语句后使用花括号是为了确保代码的正确性和可读性
/* */会被替换为什么?
会变成空格进行替换

小测验

题目1

  • 1<=n<=10这个表达式的值为1,就变成了if(1);
  • if(1);这个if括号后面有分号,表示的是如果1成立,则不执行任何语句,而是空语句,分号前面没有任何语句
posted @ 2024-02-16 10:57  ChangJianhui  阅读(27)  评论(0)    收藏  举报