Allow user to input shortcode into wordpress widget

Very rough and partly cribbed from the Codex, but it should get you started:

class My_SC_Widget extends WP_Widget {

  private $shortcodes = array(
    'sc1' => '[sc1]',
    'sc2' => '[sc2]',
    'sc3' => '[sc3]',
  );

  function __construct() {
    // Instantiate the parent object
    parent::__construct( false, 'My SC Widget' );
  }

  function widget( $args, $instance ) {
    if (isset($instance['my_shortcode_widgets']) && array_key_exists($instance['my_shortcode_widgets'],$this->shortcodes)) {
      echo do_shortcode($this->shortcodes[$instance['my_shortcode_widgets']]);
    }
  }

  function update( $new_instance, $instance ) {
    // Save widget options
    if (isset($new_instance['my_shortcode_widgets']) && array_key_exists($new_instance['my_shortcode_widgets'],$this->shortcodes)) {
      $instance['my_shortcode_widgets'] = $new_instance['my_shortcode_widgets'];
    }

    return $instance;
  }

  function form( $instance ) {
    echo '<select name="'.$this->get_field_name('my_shortcode_widgets').'">';
      foreach ($this->shortcodes as $k => $v) {
        echo '<option value="'.$k.'" '.selected( $instance['my_shortcode_widgets'], $k ).'>'.$k.'</option>'; 
      }
    echo '</select>';
  }
}

function myplugin_register_widgets() {
  register_widget( 'My_SC_Widget' );
}

add_action( 'widgets_init', 'myplugin_register_widgets' );