The differences are few and many. The reality is they are completey different languages.
C is a relatively small language (in terms of keywords etc) and is no object oriented whereby both C++ and C# are OO.
The biggest differences are between C# and the other two, in my opinion, as although C++ and C are totally 'unrelated' they share some traits and each can be written inline with one another, compiling succesfully (however bad this is, it remains fact), they are in the same league at least.
C++ builds on alot of what C doesnt not allow, and rather than an abstration it's more of an ehancement, though not dependant of C.
Both C and C++ can be executed in cross-platform environemtns however the coder must take heed of what is needed in order for that to be possible, ie using OS specific calls in your code will break when executed on a different platform.
C# on the other hand is a totally different ball game but syntactually carries forward alot of what programmers are used to if from a C/C++ background. C# requires the .NET Framework in order to execute, although applications can be further translated into a native image using ngen.exe.
The Mono project is in development for .NET and this allows for .NET compilations to be executed accross platforms too (Windows and Linux), though not everything is implemented.
Basically they are all different, what exactly do you want to know?
Also I see people are using Java as a reference to the likeness of C#, this is 100% crap. Syntactually all four are similar, that is where the similarity ends between Java and anything else.
Grant