Not that I'm that advanced, but the book that helped me really get started in Arduino programming was Making Things Talk by Tom Igoe.
If you're completely new to the world of programming though, I might suggest...
***goes and looks through bookshelves***
Drat, I was going to recommend my Computer Science 1 textbook but I think that was one of the books that got lost our recent move. (We shipped some of our books in a box and when it arrived at our new place it was full of someone else's books. Not that I'm complaining mind you... now I can finally read Plato's Republic! )
Anywho, I would suggest a good introductory Java
book if you really want to focus on Arduinos. That's because Arduino programming is
Java programming. The Arduino / Processing language is based on the Java computer language. The C language is a bit different because it's not quite "object oriented" like Java is... but, bottom line I recommend studying Java first. (It's also a little more forgiving in terms of errors.)
Hope this helps!