Custom form register
Look at Conditional Fields:


  Conditional Fields allows you to manage sets of dependencies between
  fields. When a field is “dependent”, it will only be available for
  editing and displayed if the state of the “dependee” field matches the
  right condition. When editing a node (or any other entity type that
  supports fields, like users and categories), the dependent fields are
  dynamically modified with the States API. You can, for example, define
  a custom “Article teaser" field that is shown only if a "Has teaser"
  checkbox is checked.


EDIT

To learn how to use the Field UI and create these form items for Users please see:


https://www.drupal.org/documentation/modules/field-ui
https://www.drupal.org/documentation/modules/options