CCF CSP认证考试第一题(17道全)


​ 前天报名了CCF CSP认证考试,用了两天时间,好不容易把官网提供的历次考试真题做完了。CSP认证考试一共5道题目,难度依次递增,考试时长4小时。做完了最简单的第1题之后发现,确实比计算机二级考试水准要高得多。总结如下:

在这里插入图片描述

CCF CSP简介

以下关于CCF的介绍来自官网CCF计算机职业资格认证

CCF计算机软件能力认证 Certified Software Professional)是中国计算机学会(CCF)联合华为、360、滴滴等十余家知名IT企业以及清华、北航、国防科大等15所著名高校于2014年推出CCF CSP(计算机软件能力)认证标准,用于评价业界人士的计算机软件能力。目前,CCF已成功举办17次CSP认证,来自全国400余所单位的109819人参加了认证。

试题编号:201312-1_出现次数最多的数

时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
  给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。
输入格式
  输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。
  输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。
输出格式
  输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。
样例输入
6
10 1 10 20 30 20
样例输出
10

import java.util.Scanner;

public class 出现次数最多的数 {
   
public static void main(String[] args) {
   
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int ans = 0;
int temp = 0;
int count[] = new int[n];
int arr[] = new int[10001]; // arr是统计各个数个数的数组,x出现一次,则arr[x]++
for (int i = 0; i < n; i++) {
   
    count[i] = sc.nextInt();
    arr[count[i]]++;
}
for (int i = 1; i <= 10000; i++) {
   
    if (arr[i] > temp) {
   
	ans = i; //如果arr[i]>temp,则将次数最多的数为i;遍历整个数组,i变化的同时,不断刷新temp和ans的值
	temp = arr[i];
    }
}
System.out.println(ans);
}
}

试题编号:201403-1_相反数

时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
  有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。
输入格式
  第一行包含一个正整数 N。(1 ≤ N ≤ 500)。
  第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。
输出格式
  只输出一个整数,即这 N 个数中包含多少对相反数。
样例输入
5
1 2 3 -1 -2
样例输出
2

import java.util.Scanner;

public class 相反数 {
   
public static void main(String[] args) {
   
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int count[] = new int[n];
int flag = 0;
for (int i = 0; i < n; i++) {
   
    count[i] = sc.nextInt();
}
for (int i = 0; i < n; i++) {
   
    for (int j = i + 1; j < n; j++) {
   
	if (count[i] + count[j] == 0)
	    flag++;
/*和冒泡排序法一样,用count中的每一个元素和其余n-1个元素去求和,如果和为0,说明是一对相反数,flag加1*/
    }
}
System.out.println(flag);
}
}

试题编号:201409-1_相邻数对

时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
  给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。
输入格式
  输入的第一行包含一个整数n,表示给定整数的个数。
  第二行包含所给定的n个整数。
输出格式
  输出一个整数,表示值正好相差1的数对的个数。
样例输入
6
10 2 6 3 7 8
样例输出
3
样例说明
  值正好相差1的数对包括(2, 3), (6, 7), (7, 8)。
评测用例规模与约定
  1<=n<=1000,给定的整数为不超过10000的非负整数。

import java.util.Scanner;

public class 相邻数对 {
   
public static void main(String[] args) {
   
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int flag = 0;
int count[] = new int[n];
for (int i = 0; i < n; i++) {
   
    count[i] = sc.nextInt();
}
for (int i = 0; i < n; i++) {
   
    for (int j = i + 1; j < n; j++) {
   
	if (Math.abs(count[i] - count[j]) == 1)
	    flag++;
   /*和冒泡排序法一样,用count中的每一个元素和其余n-1个元素去做差,如果差的绝对值为1,说明是一个相邻数对,flag加1*/
    }
}
System.out.println(flag);
}
}

试题编号:201412-1_门禁系统

时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
  涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。
输入格式
  输入的第一行包含一个整数n,表示涛涛的记录条数。
  第二行包含n个整数,依次表示涛涛的记录中每位读者的编号。
输出格式
  输出一行,包含n个整数,由空格分隔,依次表示每条记录中的读者编号是第几次出现。
样例输入
5
1 2 1 1 3
样例输出
1 1 2 3 1
评测用例规模与约定
  1≤n≤1,000,读者的编号为不超过n的正整数。

import java.util.Scanner;

public class 门禁系统 {
   
public static void main(String[] args) {
   
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int count[] = new int[n];
int times[] = new int[n];
for (int i = 0; i < n; i++) {
   
    count[i] = sc.nextInt();
    times[count[i]]++;
    System.out.print(times[count[i]] + " ");
/*输入一个数,另一个数组相应位置加1,然后输出这个位置的数,也就是输入数据出现的次数*/
}
}
}

试题编号:201503-1_图像旋转

时间限制: 5.0s
内存限制: 256.0MB
问题描述:
问题描述
  旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。
  计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。
输入格式
  输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数。
  接下来n行每行包含m个整数,表示输入的图像。
输出格式
  输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵。
样例输入
2 3
1 5 3
3 2 4
样例输出
3 4
5 2
1 3
评测用例规模与约定
  1 ≤ n, m ≤ 1,000,矩阵中的数都是不超过1000的非负整数。

import java.util.Scanner;

public class 图像旋转 {
   
public static void main(String[] args) {
   
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int arr[][] = new int[n][m];

for (int i = 0; i < n; i++) {
   
    for (int j = 0; j < m; j++) {
   
	arr[i][j] = sc.nextInt();
    }
}
for (int i = m - 1; i >= 0; i--) {
   
    for (int j = 0; j < n; j++) {
   
	System.out
  • 1
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值