Q:

How to use multiple statements inside cond? 

For example I have the following code, I define a variable v1 then check the value of v1.  If v1 == 1, I want to (print-list q2) and read another input and store to v2, something like this: (define v2 (read)).  
(define v1 (read))
(cond
  [(null?  v1) (printf "No input..\n")]
  [(= v1 1) (print-list q2)]

How do I achieve my solution above? 

A:

You can write more than one expression after a cond's condition:
(define v1 (read))

(cond
  [(null?  v1) (printf "No input..\n")]
  [(= v1 1)
   (define v2 (read))
   (print-list q2)]
  [else (error "Unexpected value")])

Of course, the above will only work if print-list and q2 were previously defined, but it illustrates the general idea of what you want to do.  Just remember that although all expressions after the condition will be executed sequentially, only the value of the last expression will be returned, which in this example is (print-list q2).