判断
Suzhou 287 0
#include <stdio.h>

int main()
{
    printf("计算两个时间差");
    int hour1,minute1;
    int hour2,minute2;
    scanf("%d %d",&hour1,&minute1);
    scanf("%d %d",&hour2,&minute2);
    int t1=hour2 - hour1;
    int t2=minute2 - minute1;
    printf("时间差为%d小时%d分\n",t1,t2);
    return 0;
}
计算两个时间差1 50 2 10
时间差为1小时-40分

使用if判断语句:

#include <stdio.h>

int main()
{
    printf("计算两个时间差");
    int hour1,minute1;
    int hour2,minute2;
    scanf("%d %d",&hour1,&minute1);
    scanf("%d %d",&hour2,&minute2);
    int t1=hour2 - hour1;
    int t2=minute2 - minute1;
    if ( t2 < 0 ){
        t2=60 + t2;
        t1 --;
    }
    printf("时间差为%d小时%d分\n",t1,t2);
    return 0;
}
计算两个时间差1 50 2 10
时间差为0小时20分
Process exited after 8.144 seconds with return value 0

::: tip if (条件成立) { ... } ::: if判断语句表示如果满足if语句的条件,就执行if语句后大括号内的程序。


计算两个值之间的运算叫做关系运算 判断 ::: tip C语言中的“!”一般表示非、否、不是、not的意思。 ::: 关系运算只有两个结果。当两个值的关系符合关系运算符的预期时,关系运算的结果为整数1,否则为整数0。

#include <stdio.h>

int main()
{
    printf("%d\n",5 == 3);
    printf("%d\n",5 >= 5);
    printf("%d\n",5 != 3);
    return 0;
}
0
1
1
Process exited after 0.01066 seconds with return value 0

::: warning 关系运算符的优先级比算术运算的优先级低,但比赋值运算优先级高。 :::

#include <stdio.h>

int main()
{
    printf("%d\n",5 >= 3+1);
    return 0;
}
1
Process exited after 0.01293 seconds with return value 0

输出结果为1证明先计算了3+1,得出结果和5进行比较,5 >= 4,输出1,如果关系运算符优先级高于算术优先级,则先计算5 >= 3,输出1,再和3相加,输出结果2。

判断是否相等的 == 和 != 的优先级比其他的要更低一些,目的是判断两个关系的结果。 5 > 3 == 6 > 4
::: warning 连续的关系运算是从左到右计算的。 :::

6 > 5 > 4             (6 > 5成立,结果为1,1 > 4不成立,结果为0。)
a == b == 6       (先计算a和b是否相等,相等则为1不相等则为0,再与6相比较)

注释 以“//”开头的语句是程序的注释。 注释是插入程序中为读者提供解释信息的。注释对程序的功能没有影响,但可以使得程序更容易被人读懂。 延续数行的注释需要使用多行注释。 多行注释由“/”开始,以“/”结束。以下两种:

/*   注释的内容   */
/*
注释的内容
*/

编写一个找零计算器的程序:

#include <stdio.h>

int main()
{
    //初始化 
    int price;
    int bill;
    //读取价格和金额 
    scanf("%d",&price);
    scanf("%d",&bill);
    //判断
    if (bill >= price) {
        printf("应该找您%d元\n",bill - price);
    } 
    if (bill < price) {
        printf("支付金额不够\n");
    }
    return 0;
}

if语句实例:

#include <stdio.h>

int main()
{
    //最小年龄
    const int Minor = 20;
    int age;
    printf("请输入年龄\n");
    /*输入
    fegklhjrkhrhahrejuje42ere
    4二十页hyuaswy4y
    geshyue645656 
    耶4我也越野语言
    */ 
    scanf("%d",&age);
    printf("今年已经%d岁了\n",age);
    if(age <= Minor) {
        printf("年轻真好,");
    }
    printf("把握青春\n"); 
}
请输入年龄
18
今年已经18岁了
年轻真好,把握青春
请输入年龄
25
今年已经25岁了
把握青春

上面的找零计算器中,可以将两个判断语句简化如下:

#include <stdio.h>

int main()
{
    //初始化 
    int price;
    int bill;
    //读取价格和金额 
    scanf("%d",&price);
    scanf("%d",&bill);
    //判断
    if (bill >= price) {
        printf("应该找您%d元\n",bill - price);
    } else {
        printf("支付金额不够\n");
    }
    return 0;
}

即在if语句结束的大括号后,加上一个else语句。 ::: tip else表示否则的意思。 ::: 简化后的找零计算器的流程图如下: 判断


比较数字大小的三种方案 方案一:

#include <stdio.h>

int main()
{
    int a;
    int b;
    int Max = 0;
    printf("输入a和b的值:");
    scanf("%d %d",&a,&b);
    if (a < b) {
        printf("Max=b",b);
    } 
    if (a > b) {
        printf("Max=a",a);
    } 
    if (a == b) {
        printf("%d",Max);
    } 
    return 0;
}

输出数值更大的数字,如果相等,输出0。 方案2:

#include <stdio.h>

int main()
{
    int a;
    int b;
    int Max = 0;
    printf("输入a和b的值:");
    scanf("%d %d",&a,&b);
    if (a < b) {
        printf("Max=b",b);
    } else {
        printf("Max=a",a);
    }
    return 0;
}

对于a和b相等的情况没有做具体区分。 方案3:

#include <stdio.h>

int main()
{
    int a;
    int b;
    printf("输入a和b的值:");
    scanf("%d %d",&a,&b);
    int Max = a;
    if(a < b) {
        printf("Max=b",Max,b);
    }else {
        printf("Max=a",a);    
    }
    return 0;
}

IF语句总结 一个基本的if语句由关键字if开头,if后跟一个(),()中是表达式,如果表达式计算结果不为0,即表达式成立,则执行()后的{}中的语句;如果()中的表达式不成立,{}中的语句会被跳过。 if语句的表达式后可以没有{},如果没有{},紧跟在if后的语句将被作为if语句条件成立时执行的内容。 ::: tip 如下在if语句的()后没有“;”,而在下一行的赋值语句后有一个表示语句结束的“;”,表示赋值语句是if语句的一部分,if语句控制这条赋值语句是否被执行。

if (total > amount)
     total += amount + 10;

同样else后也可以不用{},“;”放在else执行语句后。 ::: 计算薪水的程序:

#include <stdio.h>

int main()
{
    const double RATE = 8.25;
    const int STANDARD = 40;
    double pay = 0.0;
    int hours;
    printf("请输入工作小时数\n");
    scanf("%d",&hours);
    printf("\n");
    if (hours > STANDARD)
        pay = STANDARD * RATE + (hours - STANDARD)*(RATE * 1.5);
    else 
        pay = hours * RATE;
    printf("应付薪水为%f",pay);
    return 0;
}

判断成绩是否及格:

#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("再见了");     
    return 0;
}
评论区