CSP/CCF计算机职业资格认证题目:[201903-1 小中大]【已解决】

本文介绍了一个使用Java实现的程序,该程序接收用户输入的一系列整数,然后计算并输出这些整数的最大值、最小值及中位数。文章通过具体的代码示例展示了如何进行数组的初始化、数据读取、最值计算及中位数的求解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述


import java.util.Scanner;

public class Main {
    public static void main(String []args)
    {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int arr[] =new int [n];
		//输入数据
        for (int i=0;i<arr.length;i++)
        {
            arr[i]=in.nextInt();
        }
		//从大到小输出
        System.out.println(max(arr)+" "+Middle(arr)+" "+min(arr));
    }
	//求最大值
    public static int max(int arr[])
    {
        int max = arr[0];
        for(int i=0;i<arr.length;i++)
        {
            if(max<arr[i])
            {
                max = arr[i];
            }
        }
        return max;
    }
   //求最小值
    public static int min(int arr[])
    {
        int min = arr[0];
        for(int i=0;i<arr.length;i++)
        {
            if(min>arr[i])
            {
                min = arr[i];
            }
        }
        return min;
    }
	//求中位数
    public static String Middle(int arr[])
    {
        double mid = 0;

        int len = arr.length;

        if(len % 2 ==0)
        {
            mid = (arr[(len/2)-1]+arr[(len/2)])/2.0;
        }else
         {
            mid = arr[(len/2)];
         }

        String new_mid = String.valueOf(mid);
        String [] str =new_mid.split("\\.");


        if(str[1].equals("0"))
            return str[0];
        else
            return new_mid;
    }

}

### 关于CCF CSP考试中的C++大中小知识点解析 #### 1. **字符串处理** 在CCF CSP考试中,字符串是一个重要的考点。考生需要掌握常见的字符串操作方法并能迅速实现编码。例如,在实际题目中可能会遇到类似“067-0-821162-4”的输入情况,此时需要注意如何正确识别和跳过特定字符(如`'-'`)。尽管某些情况下系统的判定可能忽略细节上的差异[^2],但在编写程序时仍需注意潜在的风险点。 对于此类问题,可以考虑使用标准模板库(STL)中的string类来进行更安全的操作,而不是依赖传统的C风格字符串。这样不仅可以减少内存管理错误的可能性,还能利用丰富的成员函数简化逻辑复杂度较高的部分。 #### 2. **STL容器——Vector** 另一个高频考察领域就是向量(vector),它属于动态数组的一种形式。了解其基本用法至关重要: - 初始化方式; - 插入删除元素的方法; - 访问指定位置数据的能力等等。 具体而言,当涉及到多维结构存储的时候,则要熟悉如何通过嵌套vectors模拟二维甚至更高维度的表格布局[^3]。下面给出一段简单的演示代码展示vector的基础运用场景: ```cpp #include <iostream> #include <vector> int main(){ std::vector<int> v; // 添加元素到末尾 v.push_back(1); v.emplace_back(2); // 输出第一个元素 if(!v.empty()) { std::cout << "First element: " << v.front() << "\n"; } return 0; } ``` 此外还需留意迭代器失效等问题以及性能方面的考量因素。 #### 3. **哈希表——Unordered_Set** 为了提高查找效率,无序集合(unordered_set)也是经常被提及的内容之一。主要学习要点如下所示: - 创建实例对象及其参数配置选项; - 掌握常用API接口的功能特性比如insert(), find(), erase(); - 明确返回值类型为iterator而非bool型结果; 这里附上一小段示例帮助理解unordered_set的实际应用价值所在: ```cpp #include <iostream> #include <unordered_set> int main(){ std::unordered_set<std::string> uset {"apple", "banana"}; auto search = uset.find("orange"); if(search != uset.end()){ std::cout << *search << " found!\n"; }else{ std::cout << "Not Found\n"; } return 0; } ``` 上述片段展示了如何查询某个键是否存在其中,并依据实际情况作出相应反馈动作. 综上所述,针对ccf csp竞赛准备期间围绕着c++语言展开复习计划应当覆盖但不限于以下几个方面:高效便捷的数据结构选取原则;精准可靠的算法设计思路;严谨细致的边界条件检验习惯. ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值