第一次作业题解

第一次作业题解

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

思路

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

第一次作业题解_第1张图片

判断优先级:

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

在这里插入图片描述

判断按题给顺序来

代码

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

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

思路

在这里插入图片描述

数据类型用double

在这里插入图片描述

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

在这里插入图片描述

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

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

第一次作业题解_第2张图片

代码

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

P1422 小玉家的电费

思路

第一次作业题解_第3张图片

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

代码

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

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

P1909 [NOIP2016 普及组] 买铅笔

思路

第一次作业题解_第4张图片

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

代码

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

写在后面

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

晚安

你可能感兴趣的:(c语言)