Проблема не в том, чтобы выучить C. Проблема в том, чтобы заставить его работать в Visual C++ и получить вменяемый результат. После C приходится изучать массу классов, их связь с выводом информации, её приведение к "пользовательскому" виду. Я читал книгу по Visual C; я знаю, о чем говорю.
По поводу алгоритмов. Прежде чем переходить к алгоритмам, нужно изучить структуры данных. У меня есть тоненькая книжка по алгоритмам, довольно сложная книга и требует знания и применения ООП.
именно по этому я и назвал 2 и 10. Есть там еще парочка, без привязки к конкретному языку. Их основной смысл научить мыслить как программист, а язык второстепенен, т.к. это общие принципы уместные в любом языке.
особенно под номером 2 и 10. Это можно сказать библия программистов )