Just now I looked at it more carefully, wondering what I had wrong. Was it the harder stuff, like arrays of arrays or pass by reference? No, somehow I failed simple things like the “if-then-else” test! I investigated further and discovered that I had inverted the meanings of the literals “true” and “false” (apparently my test to verify they worked was something like if true or false, which has the same meaning when they’re inverted).
Many of their tests relied on those working. Stuff like the test of break (while (true) { okflag = 1; break; }) was not producing the expected result for reasons other than my (correctly working) break implementation.
And the arrays? They worked fine. 20% of my grade was lost due to the simple inversion of two very important characters.