AP CSA 1.6 FRQ Practice: Register Receipt

Unit 1: Using Objects and Methods · Lesson 1.6 · FRQ Practice

Register Receipt

A free response question in the shape the exam uses: a stated contract, four rubric parts, and no main method handed to you. Worth 4 points.

Why this question is worth four points

Compound assignment is not shorthand for the exam; it is where the exam plants truncation. total *= 108 / 100 is not an 8 percent increase, because 108 / 100 is 1. This question is a receipt computed entirely in cents so that every rounding decision is one you make on purpose.

What you are given

Five variables are declared and assigned for you: int a, b, c and d are item prices in cents, and int paidCents is what the customer handed over.

The question

  1. (a) Print the subtotal in cents.
  2. (b) Print the average item price in cents as a double.
  3. (c) Print 8 percent tax on the subtotal, in cents, truncated.
  4. (d) Print the whole dollars of change, then on the next line the leftover cents. Change is what is left after BOTH the subtotal and the tax.

What the reader is looking for

  1. Write a code segment that prints five lines: subtotal, average, tax, dollars of change, leftover cents.
  2. Part (c) is 8 percent truncated, so multiply before you divide. subtotal * 8 / 100 truncates once at the end; subtotal * (8 / 100) is always zero.
  3. Change is paidCents minus the subtotal minus the tax. Forgetting the tax is the mistake this part is looking for. Dollars is integer division by 100 and leftover cents is the remainder.

Worked examples

These show what a correct answer prints. There are more cases you cannot see, and they use different values, so an answer built around just these numbers will fail.

Example 1 is given
int a = 125;
int b = 250;
int c = 75;
int d = 150;
int paidCents = 1000;
Example 1 output
600
150.0
48
3
52
Example 2 is given
int a = 99;
int b = 100;
int c = 101;
int d = 102;
int paidCents = 500;
Example 2 output
402
100.5
32
0
66

Your answer

Main.java

Input for the Run button

How this is scored: your answer runs against every test case, and the fraction it passes becomes your score out of 4. That is not how a human AP reader marks a rubric, so treat the score as a check on whether your code works, and the rubric above as the thing you are actually practising.


  

  

Stuck?

Hint 1

Multiply before dividing whenever the divisor is bigger than the numerator. subtotal * 8 / 100 keeps the precision until the last step; anything that computes 8 / 100 first gets 0.

Hint 2

Part (b) needs a cast before the division or the average of 99, 100, 101 and 102 prints as 100 instead of 100.5.

Hint 3

Dollars and cents come from the same value: change / 100 and change % 100. Computing them from two different expressions is how they stop agreeing.

Hint 4

The customer pays the tax too. Change is paidCents - subtotal - tax, and a receipt that hands back the tax as change is the bug this part exists to catch.

Before you submit

3 mistake(s) that lose points on this question

Each of these is a real error the grader catches. Check your answer against them before you submit, not instead of trying.

  • part (c) computes the percentage before multiplying, so the tax is always zero
  • part (d) hands back the tax as change
  • part (b) averages with integer division

Where to go next

Get in Touch

Whether you're a student, parent, or teacher — I'd love to hear from you.

Just want free AP CS resources?

Enter your email below and check the subscribe box — no message needed. Students get daily practice questions and study tips. Teachers get curriculum resources and teaching strategies.

Typically responds within 24 hours

Message Sent!

Thanks for reaching out. I'll get back to you within 24 hours.

🏫 Welcome, fellow educator!

I offer curriculum resources, practice materials, and study guides designed for AP CS teachers. Let me know what you're looking for — whether it's classroom materials, a guest speaker, or Teachers Pay Teachers resources.

Email

[email protected]

📚

Courses

AP CSA, CSP, & Cybersecurity

Response Time

Within 24 hours

Prefer email? Reach me directly at [email protected]