作业01

Qquun / 2024-12-19 / 原文

A

#include<stdio.h>
int main() {
    int a;
    scanf("%d",&a);
    int x,y,z;
    x = a/100;
    y = a%100/10;
    z = a%100%10;
    if ((x == y && y != z) || (x == z && y != z) || (y == z && x != z)){
        puts("Yes");
    } else {
        puts("No");
    }
    return 0;
}

B

#include<stdio.h>
#include<math.h>
int main() {
    double a,b,c;// 题目没有说边长一定是整数,我试了一下定义成int会出错
    scanf("%lf%lf%lf",&a,&b,&c);
    // 两边之和大于第三边
    if ( (a+b>c) && (a+c)>b && (b+c)>a ) {
        double d = (a+b+c)/2.0;
        printf("%.2f",sqrt(d*(d-a)*(d-b)*(d-c)));
    } else {
        printf("Not a triangle.");
    }
    return 0;
}

C

#include<stdio.h>
#include<math.h>
int main() {
    int x;
    scanf("%d",&x);
    // 题目的大意就是分段函数求值,照着写就好了
    // cos就是照着题意来,然后有个求^2和求^4的,不用写多个乘法,麻烦,直接用math.h里的 pow(x,y)就可以了,这个函数返回的是x^y,返回的值是浮点数类型(double/float)
    if (x >= 0 && x < 10) {
        printf("%.5lf",cos(x + 3.0));
    } else if (x >= 10 && x < 20) {
        printf("%.5lf", pow(cos(x + 7.5), 2) );
    } else if (x >= 20 && x < 30) {
        printf("%.5lf", pow(cos(x + 4.0), 4) );
    } else {
        printf("Not define");
    }
    return 0;
}

D

#include<stdio.h>
#include<math.h>
// 这里手写了最大值和最小值的函数,回顾一下函数的知识点吧~ 
int min(int x,int y) {
    if (x > y) {
        return y;
    } else {
        return x;
    }
}


int max(int x,int y) {
    if (x > y) {
        return x;
    } else {
        return y;
    }
}

int main() {
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    // 这道题就是看你怎么写更方便,写if判断来判断去太麻烦了。、
    // C++的<algorithm>里有min(a,b)和max(a,b)的函数,这两个函数会返回两数之间的最大值和最小值
    // C语言的这两个函数我不知道在哪里了(并不在math.h)里 。。我就先自己手写了两个函数,我们就当作是复习函数了吧
    // 先求最大数
    int mx = -1e9;// 先假设一个无穷小的数当最大值
    mx = max(mx, a); // 然后不断拿其他数来更新这个假设的最大值
    mx = max(mx, b);
    mx = max(mx, c);
    
    // 求最小数
    int mi = 1e9;// 同理,先假设一个无穷大的数来当最小值
    mi = min(mi, a);// 不断更新
    mi = min(mi, b);
    mi = min(mi, c);
    
    printf("%d %d",mx, mi);
    return 0;
}

E

#include<stdio.h>
#include<math.h>

int main() {
    int t;
    int cnt = 0;
    scanf("%d",&t);
    while(t--){// 建议思考一下这里为什么t--是对的,大脑里面模拟一下过程
        int a,b;
        cnt += 1;// 记一下当前是第几个case
        scanf("%d%d",&a,&b);
        printf("Case %d: %d\n",cnt,a+b);
    }
    return 0;
}

F

#include<stdio.h>
#include<math.h>

int main() {
    int a,b;
    int cnt = 0;
    while(scanf("%d%d",&a,&b)){
        if (a == 0 && b == 0) break; // 符合停止条件,跳出while循环
        cnt += 1;// 记一下当前是第几个case
        printf("Case %d: %d\n",cnt,a+b);
    }
    return 0;
}

G

#include<stdio.h>
#include<math.h>

int main() {
    int a,b;
    int cnt = 0;
    while(scanf("%d%d",&a,&b)!=EOF){// 如果没有输入了,再次输入到了scanf时,scanf就会返回EOF,然后就会退出循环
        cnt += 1;// 记一下当前是第几个case
        printf("Case %d: %d\n",cnt,a+b);
    }
    return 0;
}

H

#include<stdio.h>
#include<math.h>

int main() {
    double a,b;
    int t;
    scanf("%d",&t);
    while(t--){// 记得思考一下t--为啥是对的
        scanf("%lf%lf",&a,&b);
        printf("%.1lf\n",(a*b)/2.0);
    }
    return 0;
}