• 第一次作业题解


    第一次作业题解

    P5717 【深基3.习8】三角形分类

    思路

    在这里插入图片描述
    考的是if()的使用,还要给三条边判断大小

    在这里插入图片描述

    判断优先级:

    • 三角形?
    • 直角、钝角、锐角
    • 等腰
    • 等边

    在这里插入图片描述

    判断按题给顺序来

    代码

    #include 
    int main()
    {
        int a = 0, b = 0, c = 0, x = 0, y = 0, z = 0;
        scanf("%d %d %d", &a, &b, &c);
        x = (a < b ? a : b) < c ? (a < b ? a : b) : c; 
        z = (a > b ? a : b) > c ? (a > b ? a : b) : c;
        y = a + b + c - x - z;
    
        if (x + y <= z) 
        {
            printf("Not triangle\n");
        }
        else 
        {
            if (x * x + y * y == z * z) printf("Right triangle\n");
            else if (x * x + y * y > z * z) printf("Acute triangle\n");
            else if (x * x + y * y < z * z) printf("Obtuse triangle\n");
    
            if(x == y || y == z || x == z)  printf("Isosceles triangle\n");
    
            if(x == y && y == z)  printf("Equilateral triangle\n");
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    P5714 【深基3.例7】肥胖问题

    思路

    在这里插入图片描述

    数据类型double

    在这里插入图片描述

    先计算,后判断,超重要多输出个BMI

    在这里插入图片描述

    看着麻烦,刚开始把我也唬住了

    在这里插入图片描述

    其实用%g就好了,涨知识了(参考群里《C Primer Plus》表4.3)

    在这里插入图片描述

    代码

    #include 
    int main()
    {
        double m = 0, h = 0, bmi = 0;
        scanf("%lf %lf", &m, &h);
        bmi = m / (h * h);
    
        if (bmi < 18.5) printf("Underweight\n");
        else if (bmi >= 24) printf("%.6g\nOverweight\n", bmi);
        else printf("Normal\n");
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    P1422 小玉家的电费

    思路

    在这里插入图片描述

    对用电量判断,最后保留一位小数

    代码

    #include 
    int main()
    {
        double a = 0, ans = 0;
        scanf("%lf", &a);
    
        if (a <= 150) ans = a * 0.4463;
        else if (a >= 151 && a <= 400) ans =  150 * 0.4463 + (a - 150) * 0.4663;
        else ans =  150 * 0.4463 + 250 * 0.4663 + (a - 400) * 0.5663;
    
        printf("%.1lf", ans);
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    P4414 [COCI2006-2007#2] ABC

    思路

    在这里插入图片描述

    先比大小,得出ABC

    在这里插入图片描述

    ABC、ACB、BAC、BCA、CAB、CBA六种情况,不用字符串也可以,就麻烦一点

    代码

    #include 
    int main()
    {
        int a = 0, b = 0, c = 0, A = 0, B = 0, C = 0;
        char x = 0, y = 0, z = 0;
        scanf("%d %d %d", &a, &b, &c);
        scanf("\n%c%c%c", &x, &y, &z);
    
        A = (a < b ? a : b) < c ? (a < b ? a : b) : c; 
        C = (a > b ? a : b) > c ? (a > b ? a : b) : c;
        B = a + b + c - A - C;
    
        if (x == 'A' && y == 'B' && z =='C') printf("%d %d %d", A, B, C);
        else if (x == 'A' && y == 'C' && z =='B') printf("%d %d %d", A, C, B);
        else if (x == 'B' && y == 'A' && z =='C') printf("%d %d %d", B, A, C);
        else if (x == 'B' && y == 'C' && z =='A') printf("%d %d %d", B, C, A);
        else if (x == 'C' && y == 'B' && z =='A') printf("%d %d %d", C, B, A);
        else if (x == 'C' && y == 'A' && z =='B') printf("%d %d %d", C, A, B);
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    P1909 [NOIP2016 普及组] 买铅笔

    思路

    在这里插入图片描述

    • 每种的情况要买几包
    • 每种情况的价钱
    • 找出最优解

    代码

    #include 
    int main()
    {
        int n = 0, n1 = 0, v1 = 0, n2 = 0, v2 = 0, n3 = 0, v3 = 0;
        int x = 0, y = 0, z = 0, ans = 0;
        scanf("%d %d %d %d %d %d %d", &n, &n1, &v1, &n2, &v2, &n3, &v3);
    
        if (n % n1 == 0) x = (n / n1) * v1;
        else x = (n / n1 + 1) * v1; 
    
        if (n % n2 == 0) y = (n / n2) * v2;
        else y = (n / n2 + 1) * v2; 
    
        if (n % n3 == 0) z = (n / n3) * v3;
        else z = (n / n3 + 1) * v3; 
    
        ans = (x < y ? x : y) < z ? (x < y ? x : y) : z;
    
        printf("%d", ans);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    写在后面

    洛谷题确实有点难度,不过再难也是基础题。加油吧,少年!
    也可以试试C语言网的题集,更基础一点

    在这里插入图片描述

    晚安

  • 相关阅读:
    初看一脸问号,看懂直接跪下!
    【问题解决】日志服务Logtail采集容器标准输出过滤某个容器
    企业过二级等保采购哪家堡垒机好?
    【图论】有向图的强连通分量
    为什么蘑菇街会选择上云?是被动选择还是主动出击?
    通过监控Nginx日志来实时屏蔽高频恶意访问的IP
    集成学习算法
    比特币上的 zk-SNARKs
    戴尔bios设置
    【排序算法】快速排序
  • 原文地址:https://blog.csdn.net/young_Klara/article/details/133365377