slug
csafrq2025
type
Post
status
Published
category
8-AP CSA
date
Feb 25, 2024
summary
tags
past paper
password
icon

Topic: 2025FRQ真题详解

 

Questions:

 
 

Solutions:

1.官方解析

 
apcentral.collegeboard.org
 
 

2.其它解析

 

3.视频讲解

YouTubeYouTube2025 AP CSA FRQ 1a
 
YouTubeYouTube2025 AP CSA FRQ Q1 Part a
 
 
YouTubeYouTube2025 AP Computer Science A FRQ
 
 
 
以下是你上传这份 PDF 的中文翻译:
AP 计算机科学 A 2025 · 自由问答题

第 1 页

1. 本题涉及遛狗员。遛狗员通过一家遛狗公司获得报酬,负责带狗进行一小时的散步。某遛狗公司在一天中每个小时需要遛的狗数量都可能不同。该遛狗公司由以下 DogWalkCompany 类表示。

第 2 页

一名遛狗员与一家遛狗公司相关联,并由 DogWalker 类表示。你将为 DogWalker 类编写两个方法。

第 3 页


第 4 页

A.

编写 walkDogs 方法,该方法会更新并返回这位遛狗员在 hour 指定时间内遛的狗的数量。hour 的取值范围是 0 到 23(含)
DogWalkCompany 类中,已经提供了一个辅助方法 numAvailableDogs
该方法返回某一给定小时可供带出去散步的狗的数量。
遛狗员总是会尽可能多地遛公司中可供遛的狗,前提是可供遛的狗的数量不超过该遛狗员所能处理的最大数量,即 maxDogs 的值。
DogWalkCompany 类中,还提供了另一个辅助方法 updateDogs
为了防止多个遛狗员报名遛同一批狗,walkDogs 方法应使用 updateDogs,用这位遛狗员在给定小时将要遛的狗的数量来更新遛狗公司。
updateDogs 方法的参数表示这位遛狗员在 hour 指定时间内将遛多少只狗。
例如,如果遛狗公司在给定时间有 10 只狗需要被遛,但该遛狗员的最大值是 4,那么应使用 updateDogs 表明这位遛狗员将在该小时遛这 10 只狗中的 4 只。
再例如,如果遛狗公司在给定时间有 3 只狗需要被遛,而该遛狗员的最大值是 4,那么应使用 updateDogs 表明这位遛狗员将在该小时把这 3 只可供遛的狗全部遛完。
walkDogs 方法应返回这位遛狗员在 hour 指定时间内将要遛的狗的数量。
完成 walkDogs 方法。要获得满分,你必须正确使用 numAvailableDogsupdateDogs

第 5 页

B.

编写 dogWalkShift 方法,该方法执行从 startHourendHour(含)的整个遛狗班次,并返回总收入。
例如,从 14 到 16 的一个遛狗班次由三次一小时遛狗组成,分别从 14、15、16 点开始。
对于每一个小时,基础报酬是:每遛一只狗 5 美元;此外,如果以下至少一个条件成立,还可获得 3 美元奖金
  • 遛到了 maxDogs 只狗
  • 遛狗时间发生在高峰时段 9 到 17 点(含)
下表展示了从 7 点到 10 点(含) 遛狗时所得报酬的计算示例。
小时
最大可遛狗数
实际遛狗数
收入(美元)
7
3
3
3 × 5 + 3 = 18
8
3
2
2 × 5 = 10
9
3
2
2 × 5 + 3 = 13
10
3
3
3 × 5 + 3 = 18
总计
59
完成 dogWalkShift 方法。假设 walkDogs 按照题意正常工作,而不考虑你在(a)部分写了什么。要获得满分,你必须正确使用 walkDogs


以下是这份 PDF 的中文翻译:

第 2 题

本题涉及 SignedText 类。该类中的方法用于把一个“签名”作为文本字符串的一部分。你需要编写完整的 SignedText 类,其中包含一个构造方法两个方法
SignedText 的构造方法接收两个 String 参数。第一个参数是名字(first name),第二个参数是姓氏(last name)。第二个参数的长度始终大于等于 1
getSignature 方法不接收任何参数,并根据名字和姓氏按以下规则返回一个格式化后的签名字符串:
  • 如果名字是空字符串,则返回的签名字符串只包含姓氏
  • 如果名字不是空字符串,则返回的签名字符串应依次由以下内容组成:
    • 名字的首字母一个连字符 -姓氏
addSignature 方法返回其 String 参数的一个可能被修改后的副本。该参数中至多包含一次该对象的签名,并且这个签名只可能出现在参数字符串的开头结尾。返回的字符串按照以下规则生成:
  • 如果该对象的签名没有出现在该方法的字符串参数中,则返回值是:原参数字符串 + 签名
  • 如果该对象的签名出现在参数末尾,则返回值就是原参数字符串,不变
  • 如果该对象的签名出现在参数开头,则返回值是:将原参数开头的签名去掉,再把这个签名追加到参数末尾

示例执行过程(第 2 页表格)

下面的表格给出了一个示例代码执行序列以及对应结果。该代码执行序列出现在 SignedText 类以外的另一个类中。表格内容如下:

1

说明:SignedText 对象 st1 的名字为空字符串,姓氏为 "Wong"

2

返回值:

3

说明:SignedText 对象 st2 的名字是 "henri",姓氏是 "dubois"

4

返回值:

5

说明:SignedText 对象 st3 的名字是 "GRACE",姓氏是 "LOPEZ"

6

返回值:

7

说明:SignedText 对象 st4 的名字为空字符串,姓氏为 "FOX"

8

9

返回值:
说明:签名没有出现在 addSignature 的参数中,所以返回字符串是在原参数后面附加签名后的结果。

10

11

返回值:
说明:签名出现在 addSignature 参数的末尾,所以返回值与原参数完全相同

第 3 页表格续

12

13

返回值:
说明:签名出现在 addSignature 参数的开头,因此返回字符串是:将原参数开头的签名去掉,再把签名追加到参数末尾。

14

15

返回值:
说明:签名出现在 addSignature 参数的开头,因此返回字符串是:将原参数开头的签名去掉,再把签名追加到参数末尾。

最后一行要求

编写完整的 SignedText 类。你的实现必须满足所有规格要求,并与表格中的示例一致。
 
 
 
 
 
 
 
Java Quick Reference-2025Cracking CSA: 2024 FRQs
Loading...