# More multiplication practice sheets

Update 10/15/09
I’ve made this page to list all the math practice sheets I’ve made. And I’ll update it if and when I make more.

Earlier this evening I was looking over the fourth-grader’s homework, and I saw he was having a little trouble multiplying two-digit numbers. So we talked about strategies for doing the multiplication, and he redid a couple of the problems. Afterward, I went back to the addition/subtraction practice sheet and the single-digit multiplication/division practice sheet, made a few changes, and created a new multiplication practice sheet for two-digit numbers.

Like the previous practice sheets, this is an HTML file that I keep on my local hard disk. Opening it in a browser (any browser on any operating system should work as long as JavaScript is enabled) generates a set of 25 problems ready to be printed on a single sheet of paper. Reloading the page creates a new problem set, so by repeatedly reloading and printing I can quickly make a week’s worth of practice sheets, which should be enough to get him comfortable with problems like this. Environmental guilt compels me to print them on the backs of sheets that were destined for the recycling bin, but that’s not an essential part of the process.

The HTML, JavaScript, and CSS are all in this one file:

 1:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2:    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3:  <html>
5:    <title>Math Practice</title>
6:    <style type="text/css">
7:    h1 {
8:      text-align: center;
9:      font-family: Sans-Serif;
10:      font-weight: bold;
11:      font-size: 36px;
12:      margin: 20px 0 0 0;
14:    }
15:    #whole {
16:      margin-left: auto;
17:      margin-right: auto;
18:    }
19:    table.problem {
20:      font-family: Sans-Serif;
21:      font-size: 24px;
22:      text-align: right;
23:      border-bottom: solid;
24:      margin: 40px;
25:    }
26:    </style>
27:    <script>
28:    function single_problem() {
29:      var operator = "&times;";  //&#215;
30:      var top = Math.floor(Math.random()*90 + 10);
31:      var bottom = Math.floor(Math.random()*8 + 2);
32:      return '<table class="problem">' +
33:                     '<tr><td></td><td>' + top + '</td></tr>' +
34:                     '<tr><td>' + operator + '</td><td>&nbsp;' + bottom + '</td></tr>' +
35:                     '</table>';
36:    }
37:    </script>
39:  <body>
40:    <h1>Math Practice</h1>
41:    <table id="whole">
42:      <script>
43:      for (i=0; i<5; i++){
44:        document.write("<tr>");
45:        for (j=0; j<5; j++) {
46:          document.write('<td>' + single_problem() + '</td>');
47:        }
48:        document.write('</tr>');
49:      }
50:      </script>
51:    </table>
52:
53:  </body>
54:  </html>


The only real programming is in the single_problem function defined in Lines 28–36 and the nested loops that call that function in Lines 43–49; the rest is formatting. The top number of each problem is always a two-digit number (Line 30), and the bottom number is always a one-digit number greater than 1 (Line 31). When my son has mastered these problems, I’ll change Line 31 to make the bottom number two digits as well.

If you want to use this to make your own sheets, just copy the code (without the line numbers), paste it into a plain text document, and save the document with an .html or .htm extension. Or just go here and use your browser to save the page to your local hard disk.

The earlier practice sheets were a big help, and I expect these will be too. The fourth-grader gets a set of truly random problems, and I get to spend my time checking his work and helping him correct his mistakes rather than making up new problems.