问题点:

A1的条件判断,如果将能被5整除和是偶数分开判断,那么就没问题;

但是如果把它们合并在一起,用逻辑与判断,就会有问题。

两次代码如下:

#include <cstdio>
int main()
{
    int n, temp;
    scanf("%d", &n);
    int arrange[5] = {0};
    int counts[5] = {0};
    //int flag = 0 ;
    for (int i = 0; i < n; i++){
        scanf("%d", &temp);
        if (temp % 5 == 0 && temp % 2 == 0){
            arrange[0] += temp;
            counts[0]++;
        }else if (temp % 5 == 1){
            //counts[1]++;
            if (counts[1] % 2 == 0){
                arrange[1] += temp;
            }
            else{
                arrange[1] -= temp;
            }
            counts[1]++;
        }else if (temp % 5 == 2){
            arrange[2]++;
            counts[2]++;
        }else if (temp % 5 == 3){
            arrange[3] += temp;
            counts[3]++;
        }else{
            if (temp > arrange[4]){
                arrange[4] = temp;
            }
            counts[4]++;
        }
    }

    if ( counts[0] == 0) printf("N ");
    else printf("%d ", arrange[0]);
    if ( counts[1] == 0) printf("N ");
    else printf("%d ", arrange[1]);
    if ( counts[2] == 0) printf("N ");
    else printf("%d ", arrange[2]);
    if ( counts[3] == 0) printf("N ");
    else printf("%.1f ", (double)arrange[3] / counts[3]);
    if ( counts[4] == 0) printf("N");
    else printf("%d", arrange[4]);

    return 0;
}

这种小问题只在PTA的测试点中会出现。 

#include <cstdio>
int main()
{
    int n, temp;
    int arrange[5] = {0};
    int counts[5] = {0};
    //int flag = 0 ;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &temp);
        if (temp % 5 == 0) {
            if (temp % 2 == 0) {
            arrange[0] += temp;
            counts[0]++;
            }
        } else if (temp % 5 == 1) {
            //counts[1]++;
            if (counts[1] % 2 == 0) {
                arrange[1] += temp;
            }
            else{
                arrange[1] -= temp;
            }
            counts[1]++;
        } else if (temp % 5 == 2) {
            arrange[2]++;
            counts[2]++;
        } else if (temp % 5 == 3) {
            arrange[3] += temp;
            counts[3]++;
        } else {
            if (temp > arrange[4]) {
                arrange[4] = temp;
            }
            counts[4]++;
        }
    }

    if ( counts[0] == 0) printf("N ");
    else printf("%d ", arrange[0]);
    if ( counts[1] == 0) printf("N ");
    else printf("%d ", arrange[1]);
    if ( counts[2] == 0) printf("N ");
    else printf("%d ", arrange[2]);
    if ( counts[3] == 0) printf("N ");
    else printf("%.1f ", (double)arrange[3] / counts[3]);
    if ( counts[4] == 0) printf("N");
    else printf("%d", arrange[4]);

    return 0;
}