Racket, because it's a language simple enough to explain in a dozen of minutes, is abstracted enough that the learner can focus on understanding algorithms and abstractions which is the core of programming (instead of getting bogged down in the minutiae of x86 architecture and C ABI) and has best introductory materials* - How to Design Program (http://www.ccs.neu.edu/home/matthias/HtDP2e/) or, if the beginner in question is school age, the Bootstrap Curriculum (http://www.bootstrapworld.org) and Realm of Racket.
And then after learning algorithms with Racket learn systems programming with C, because if you don't care about low-level details you'll always be a mediocre programmer at best.
Why not C before Racket? Because I think having to learn low-level imperative minutiae AND high-level stuff like algorithms, abstractions and architecture at the same time is a sure way to make programming appear far harder than it in fact is.
As for C books - to my surprise "Headfirst C" is quite a good introduction to C, even though it's from a series for dumbfucks. There's also trusty K&R or C Programming: A Modern Approach, but they don't explain base concepts like stack, heap, pointers as thoroughly for a beginner.
And then just try learning what strikes your fancy? Maybe check out how dynamic object-oriented languages look with Ruby (or Smalltalk) or how powerful type systems can help you writing more correct code with Haskell (or SML). If you're into games try to learn C++ and weep for it's complexity. Or if you want to waste your life as blue collar programmer learn Java or C# : V
Whatever you try next, just avoid PHP like hell. It's cancer.
* - next to SICP, but it's very engineering-oriented and a bit outmoded in parts, so while it's worth reading later on, I don't think is as good a first book as HtDP.