bitter_engineer: the statement that Scheme lacks "programming loops" is incorrect: it has do which is a looping construct.

In my experience, recursive procedures in Scheme are not that common, unless you would have used recursion in other languages too. Many things you would use loops for in C are done with map and for-each, together with some utility-procedures for creating lists of integers and the like.

core10k: Your second example certainly does not belong in the real world of real code: it is syntactically invalid, it does not work even when the parenthesis are moved to the right places, and it is strange in other ways too (nested conds?). You are probably looking for something like

(define (print-list l)
  (do ((i 0 (+ i 1))
       (l l (cdr l)))
      ((null? l))
    (format #t "~a: ~a~%" i (car l))))

(format is not in R5RS, but neither is print.) Of course, often you might not need to print the index in front of every list member, and then you can simply use the builtin functions write or display to print lists.