/**************************************************************************** * beer-3.c * * David J. Malan * malan@harvard.edu * * Sings "99 Bottles of Beer on the Wall." * * Demonstrates hierarchical decomposition and parameter passing. ***************************************************************************/ #include #include // function prototype void chorus(int b); int main(void) { // ask user for number printf("How many bottles will there be? "); int n = GetInt(); // exit upon invalid input if (n < 1) { printf("Sorry, that makes no sense.\n"); return 1; } // sing the annoying song printf("\n"); for (int i = n; i > 0; i--) { chorus(i); } } /** * Sings about specified number of bottles. */ void chorus(int b) { // use proper grammar string s = (b == 1) ? "bottle" : "bottles"; string t = (b == 2) ? "bottle" : "bottles"; // sing verses printf("%i %s of beer on the wall,\n", b, s); printf("%i %s of beer,\n", b, s); printf("Take one down, pass it around,\n"); printf("%i %s of beer on the wall.\n\n", b - 1, t); }