А обсуждение тихо съехало с С на С++...
Даже если не принимать в расчет разницу в поколениях языков, я бы начал с самого начала - у этих языков явно выражена заточка под определенные операционные системы.
Если говорить о С - то это изначально Unix. Именно этот тандем - С и Unix - и дали столь мощный толчок развитию и языка, и ОС, причем сами и Керниган, и Ричи об этом так и писали. Кстати, я намеренно не говорю о С++ - вопрос стоял о С, а это принципиально разные языки.
C# же изначально предназначался не как реализация идеи о домохозяйках и программах, а как майкрософтовский "ответ Чемберлену" на Sun-овскую Java и технологию J2EE. Вообще, среда .NET разрабатывалась как среда для enterprise applications - что с успехом и используется во многих местах.
Я не буду утверждать, что для чего больше подходит, но в моей 8-летней практике участия в разработке очень больших систем я видел очень мало серьезных бизнес-приложений, в которых бы C# использовался для сложной бизнес-логики, или когда производительность приложения являлась критическим фактором. Кстати, точно так же для этих целей не используется Java или какой-либо другой язык 4-го поколения.
Я бы сказал так - это два разных, абсолютно разных языка, у которых, можно сказать, случайно, схожий синтаксис. Это единственное, на мой взгляд, что их обобщает. В остальном же - никакого сходства, ну, кроме тех логических постулатов, которые являются принципиально общими для всех языков программирования

.