Raw game programming is going to leave you pretty cold. Working with low-level graphics calls in either C# or C++ is a minor nightmare and you really don't want to rebuild the wheel of rendering 2D sprites let alone 3D models. Since you're on your own and wanting to learn programming, your best bet is to find a framework that can put you forward a bit.
Since you have some familiarity with C-based language, my suggestion would be to give Unity 3D a look. Not only is it experiencing some serious uptake in adoptation from commercial game dev shops, and has some interesting platform options (including PC, android, iPhone and web runtimes), but it also has a free version that's very easy to use and lots of tutorials to show you how to move from concept to implementation. Best of all (IMO) one of the supported scripting languages is C#.