Merry Christmas from Joe!


#include <stdlib.h>
#include <stdio.h>

static void giftlist(int daynum)
{
#ifdef ubergeek
    // alternate gifts by Stan Shebs
    static char *gifts[] = {" C file in a source tree", "Two BSPs", "Three flag bits",
                            "Four system traps", "Five echoed pings",
                            "Six GNUs a-GRUBing", "Seven stacks unwinding",
                            "Eight makes a-making", "Nine users ranting",
                            "Ten libs a-linking", "Eleven Pythons piping",
                            "Twelve flashers flashing"};
#else
    static char *gifts[] = {" partridge in a pear tree", "Two turtle doves", "Three French hens",
                            "Four calling birds", "Five golden rings", "Six geese a-laying",
                            "Seven swans a-swimming", "Eight maids a-milking",
                            "Nine ladies dancing", "Ten lords a-leaping", "Eleven pipers piping",
                            "Twelve drummers drumming",
    };
#endif
    
    printf("%s", gifts[daynum]);

    if (daynum > 0) {
        printf(",\n");

        if (daynum == 1) printf("And a");

        giftlist(daynum-1);
    }
}

int main()
{
#ifdef ubergeek
    static char source[] = "team lead";
#else
    static char source[] = "true love";
#endif
    static char *ordinals[] = {"first", "second", "third", "fourth", "fifth", "sixth", "seventh",
                               "eighth", "ninth", "tenth", "eleventh", "twelfth"
    };
    
    int daynum;

    for (daynum = 0; daynum < sizeof(ordinals)/sizeof(char *); daynum++) {
        printf("On the %s day of Christmas,\n", ordinals[daynum]);
        printf("My %s gave to me,\n", source);

        if (daynum == 0) putchar('A');

        giftlist(daynum);

        if (daynum < sizeof(ordinals)/sizeof(char *)-1) printf(".\n\n");
        else printf("!\n");
    }

    return(EXIT_SUCCESS);
}

Email: pfeiffer@cs.nmsu.edu
Last modified: Fri Dec 26 14:35:09 MST 2008