It all depends on what you mean by "call C programs." If you mean start standalone .EXE programs written in C: absolutely. Look at the Process class on how to start processes. If it means calling C functions in a .DLL, that works as well, but is more work. You'll need to read up on InterOp and how to declare the C functions in such a way that you can call them from .NET.
This was first published in March 2004