C语言(二)— 分支结构

C语言(二)— 分支结构

回顾:

环境配置

没有c语言编译器请移步至Devc++汉化 – Hi 北桥 (beiqiao.run)安装Devc++

变量类型

类型转换:低类型可以向高类型转换,高类型向低类型转换会有精度损失

常用数据类型高低关系

image-20220923200936345

表达式及自增自减

img

  • 加,减, 乘与我们正常生活中使用无区别

  • !!!除法 :两个整数相除如果无法整除将会有精度损失

  • %:就是两个整数无法整除的余数(ps:负数的余数可能是负数,所以在负数中不要使用此操作)

  • (++i)先加后赋值 (i++)先赋值再加

输入一个整数,表示时间,单位是秒。输出一个字符串,用”时:分:秒”的形式表示这个时间。

#include <stdio.h>

int main()
{
    int t;
    scanf("%d", &t);
    
    int hours = t / 3600;
    int minutes = t % 3600 / 60;
    int seconds = t % 60;

    printf("%d:%d:%d\n", hours, minutes, seconds);

    return 0;
}

printf输出语句

int、float、double、char等类型的输出格式:

  • int: %d

  • float:%f 默认保留6位小数

  • double:%lf 默认保留6位小数

  • char:%c 回车也是一个字符,用’\n’表示

#include <stdio.h>

int main()
{
    int a = 3;
    float b = 3.12345678;
    double c = 3.12345678;
    char d = 'a';

    printf("int a = %d, float b = %f\ndouble c = %lf, char d = %c\n", a, b, c, d);

    return 0;
}

保留若干位小数

#include <stdio.h>

int main()
{
    float b = 3.12345678;
    double c = 3.12345678;

    printf("%.4f\n", b);
    printf("%.3lf\n", c);

    return 0;
}

最小宽度

#include <stdio.h>

int main()
{
    int h, m;
    scanf("%d%d",&h, &m);
    
    printf("%02d:%02d", h, m);
    return 0;
}

if条件语句

简单案例

#include <stdio.h>

int main()
{
    int a;
    scanf("%d", &a);
    
    if(a > 0) printf("这个数是自然数");
    return 0;
}

常用运算符

> 大于

>= 大于等于

<小于

<=小于等于

==等于

!=不等于

#include <stdio.h>

int main()
{
    int a, b;
    scanf("%d%d", &a, &b);

    if (a > b) printf("%d > %d\n", a, b);
    if (a >= b) printf("%d >= %d\n", a, b);
    if (a < b) printf("%d < %d\n", a, b);
    if (a <= b) printf("%d <= %d\n", a, b);
    if (a == b) printf("%d == %d\n", a, b);
    if (a != b) printf("%d != %d\n", a, b);

    return 0;
}

else语句

#include <stdio.h>

int main()
{
    int a;
    scanf("%d", &a);
    
    if(a > 0) printf("这个数是自然数");
    else printf("这个数不是自然数"); 
    return 0;
}

if-else连写

输入一个0到100之间的分数, 如果大于等于85,输出A; 如果大于等于70并且小于85,输出B; 如果大于等于60并且小于70,输出C; 如果小于60,输出 D;

#include <stdio.h>

int main()
{
    int s;
    scanf("%d", &s);

    if (s >= 85)
    {
        printf("A");
    }
    else if (s >= 70)
    {
        printf("B");
    }
    else if (s >= 60)
    {
        printf("C");
    }
    else
    {
        printf("D");
    }

    return 0;
}

条件嵌套

输出三个数里面最大的那个

#include <stdio.h>

int main()
{
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);

    if (a > b)
    {
        if (a > c) printf("%d", a);
        else printf("%d", c);
    }
    else
    {
        if (b > c) printf("%d", b);
        else printf("%d", c);
    }

    return 0;
}

整合样例

判断闰年。闰年有两种情况: (1) 能被100整除时,必须能被400整除; (2) 不能被100整除时,被4整除即可。 输入一个年份,如果是闰年输出yes,否则输出no

#include <stdio.h>

int main()
{
    int year;
    scanf("%d", &year);
    if(year % 100 == 0)
    {
        if(year % 400 == 0) printf("yes");
        else printf("no");
    }
    else 
    {
        if(year % 4 == 0) printf("yes");
        else printf("no");
    }
    
    return 0;
}

问题:冗余太多(写了太多次yes,no

如何优化?

条件表达式

  • &&

  • ||

  • !

#include <stdio.h>

int main()
{
    int a = 3, b = 5;
    if(a >= 4 && b >= 0) printf("两个条件都成立\n");
    if(a >= 4 || b >= 5) printf("一个以上条件成立\n");
    return 0;
}

重写闰年

#include <stdio.h>

int main()
{
    int year;

    scanf("%d", &year);

    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
        printf("yes");
    else
        printf("no");

    return 0;
}

switch-case 语句

#include <stdio.h>

int main()
{
    int x;  
    scanf("%d", &x);
    switch (x)
    {
        case 1:
            printf("输入的是1!\n");
            break;
        case 2:
            printf("输入的是2!\n");
            break;
        case 3:
            printf("输入的是3!\n");
            break;
        default:
            printf("输入的大于等于3\n");
    }
    return 0;
}

康熙专治 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
上一篇
下一篇