review question: 2.18 2.22 2.23 2.24 2.25 programming exercise: 2.8 2.18 2.20