C语言笔记 4

if做判断


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 = minut2 - minute1;
    if ( im <0) {
        im = 60 + im;
        ih --;
    }
    printf("时间差是%d小时%d分。\n", ih, im);
    return 0;
}

 格式

if(成立条件){

}

 条件

计算两个值间的关系,叫做关系运算 

运算符意义
==相等
!=不相等
>大于
>=大于或等于
<小于
<=小于或等于

关系运算的结果

当两个值的关系符合关系运算符的预期时,关系运算的结果是1,反之是0

eg. 

#include<stdio.h>

int main()
{
    printf("%d\n", 5==3);
    printf("%d\n", 5>3);
    printf("%d\n", 5<=3);
    
    return 0;
}

优先级

  • 所有的关系运算符的优先级比算术运算符低,但比赋值运算高
  • ==和!=的优先级比其他低,而连续的关系运算是从左到右进行的

找零计算器


  • 用户操作:输入购买的金额,输入支付的票面
  • 计算器动作:计算并打印找零,或告知用户余额不足
  • 计算机程序角度:需要读用户的两个输入,然后进行一些计算和判断,随后输出结果

0b35f2028bce480d883a9550d6342b4c.png

 注释(comment)用来向读者提供解释信息,对于程序的功能没有任何影响

判断票面够不够

运用if和else语句

5256789596dd4385a479ccf22ae792a8.png

ps.也可以写两个if语句 

比大小

方案一

int a,b;

printf("请输入两个整数:");

scanf("%d %d", &a, &b);

int max = 0;

if ( a > b ) {

        max = a;

}

if ( a < b ) { 

        max = b;

}

printf("大的那个是%d\n", max);

问题

  1. a=b的情况未讨论
  2. 本意是只有两种可能:a大于b或a不大于b

方案二

int a,b;

printf("请输入两个整数:");

scanf("%d %d", &a, &b);

int max = 0;

if ( a > b ) {

        max = a;

} else {

        max = b;

}

printf("大的那个是%d\n", max);

方案三

int a,b;

printf("请输入两个整数:" );

scanf("%d %d", &a, &b);

int max = b;

if ( a > b ) {

        max = a;

}

printf("大的那个是%d\n", max);

compare 二vs三

方案二更容易让别人读懂。

代码也要看重能不能让足够多的人看懂你的代码。

if语句


  • 一个基本的if语句有一个关键字if开头
  • { }是之间的若干条件语句
  • 如果表示条件的逻辑表达式的结果不是0,执行大括号的内容;反之跳过
  • if语句有时没有";",而后面的赋值语句写在if的下一行,并且缩进了

if ( total > amount )

        total += amount + 10;

这表示这条赋值语句是 if语句的一部分,if语句拥有和控制这条赋值语句,决定是否被执行

eg.1

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

 eg.2

#include <stdio.h>

int main()
{
    const int PASS=60;
    int score;

    printf("请输入成绩:");
    scanf("%d", &score);

    printf("你输入的成绩是%d。\n", score);
    if ( score < PASS )
        printf("很遗憾,成绩不及格。");
    else
        printf("祝贺你,成绩及格。");
    printf("再见\n");

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值