PAT (Basic Level) Practice | 数字分类

PAT (Basic Level) Practice | 数字分类_第1张图片

PAT (Basic Level) Practice | 数字分类_第2张图片

答案

#include 
int main() {
    static int N, a, b[5], flag = 0, c, flag1 = 0;
    scanf("%d", &N);
    for(int i = 0; i < N; i++) {
        scanf("%d", &a);
        if(a % 5 == 0) {
            if(a % 2 == 0) {
                b[0] += a;
            }
        } else if(a % 5 == 1) {
            if(flag == 0) {
                b[1] += a;
                flag = 1;
            } else {
                b[1] -= a;
                flag = 0;
            }
            flag1 = 1;
        } else if(a % 5 == 2) {
            b[2]++;
        } else if(a % 5 == 3) {
            b[3] += a;
            c++;
        } else if(a % 5 == 4) {
            if(b[4] < a) {
                b[4] = a;
            }
        }
    }
    for(int i = 0; i < 5; i++) {
        if(i == 0) {
            if(b[i] != 0) {
                printf("%d", b[i]);
            } else {
                printf("N");
            }
        } else if(i == 1) {
            if(flag1 == 1) {
                printf(" %d", b[i]);
            } else {
                printf(" N");
            }
        } else {
            if(b[i] != 0) {
                if(i == 3) {
                    printf(" %.1f", 1.0*b[3]/c);
                } else {
                    printf(" %d", b[i]);
                }
            } else {
                printf(" N");
            }
        }
    }
}

感想

我当时由于忽略了A2 = 将被 5 除后余 1 的数字按给出顺序进行交错求和的部分会因为一些原因导致A2 = 0,所以导致不可通过检测点8——至于,这个原因,就是A2自己在运算中把自己变成0。

感谢NoobDream_
的文章

你可能感兴趣的:(#,PTA,算法,c语言,PTA)