额,CCF-CSP认证网站更新之后,不能像原来那样复制题目了,只有一张图片。 

【CCF】小中大_ci

解题思路:

今年3月份考CSP认证的时候,我的代码只有80分,因为我没看清题目,题目说可能出现的分数要保留1位小数,而我是直接把中位数强制ceil向上取整转换成int型进行输出,扣了20分遗憾。。。。我是傻比。下次一定看清题目。

100分代码:80分代码:

#include <bits/stdc++.h>
using namespace std;
#define Up(i,a,b) for(int i = a; i <= b; i++)

int main()
{
    ios::sync_with_stdio(false);
    int n;
    cin >> n;
    int maxans = -1e9, minans = 1e9;
    int a[n+1];
    Up(i,1,n)
    {
        cin >> a[i];
        maxans = max(maxans,a[i]);
        minans = min(minans,a[i]);
    }
    int middle = n&1 ? a[(n+1)/2] : ceil((a[n/2]+a[n/2+1])/2.0);   //n&1相当于n%2,用来判断奇偶性
    printf("%d %d %d\n", maxans, middle, minans);
    return 0;
}

100分代码:

#include <bits/stdc++.h>
using namespace std;
#define Up(i,a,b) for(int i = a; i <= b; i++)

int main()
{
    ios::sync_with_stdio(false);
    int n;
    cin >> n;
    int maxans = -1e9, minans = 1e9;
    int a[n+1];
    Up(i,1,n)
    {
        cin >> a[i];
        maxans = max(maxans,a[i]);
        minans = min(minans,a[i]);
    }
    double middle = n&1 ? a[(n+1)/2] : (a[n/2]+a[n/2+1])/2.0;   //n&1相当于n%2,用来判断奇偶性
    if(middle-(int)middle == 0)    //判断中位数是不是整数
    {
        printf("%d %d %d\n", maxans, (int)middle, minans);   //中位数强制转换成int再进行输出
    }
    else
    {
        printf("%d %.1f %d\n", maxans, middle, minans);
    }
    return 0;
}