##C#, 274 bytes

Direct copy from my answer on another [question][1] (it was popularity, but I just treated it as golf). Never did get around to golfing it further.

    class 
    P{static 
    void Main(){
    for(int i=99;i>0;
    )System.Console.Write
    (i+"{1}{2}{3}, {0}{1}{2} of beer.\n"+(i>1?
    "Take one down and pass it around, {4}{1}{5}{3}.\n\n":
    "Go to the store and buy some more, 99{1}s{3}."
    ),i--," bottle",i>0?"s":"",
    " of beer on the wall"
    ,i,i>1?"s":""
    );}}


  [1]: https://codegolf.stackexchange.com/questions/2/99-bottles-of-beer