#+title: Curso Básico da Linguagem C
#+subtitle: Exercícios
#+author: Blau Araujo
#+startup: show2levels
#+options: toc:3

* Exercícios da aula 5: Variáveis e ponteiros

- [[../../aulas/05-controle/README.org][Anotações da aula]]
- [[https://youtu.be/9dvDL7FbYKY][Vídeo]]


** 1. Desafio: caracteres alfanuméricos ASCII

Crie um programa que produza a seguinte saída:

#+begin_example
======================================================
DEC OCT HEXA CHR | DEC OCT HEXA CHR | DEC OCT HEXA CHR
-----------------+------------------+-----------------
 48  60 0x30  0  |  65 101 0x41  A  |  97 141 0x61  a
 49  61 0x31  1  |  66 102 0x42  B  |  98 142 0x62  b
 50  62 0x32  2  |  67 103 0x43  C  |  99 143 0x63  c
 51  63 0x33  3  |  68 104 0x44  D  | 100 144 0x64  d
 52  64 0x34  4  |  69 105 0x45  E  | 101 145 0x65  e
 53  65 0x35  5  |  70 106 0x46  F  | 102 146 0x66  f
 54  66 0x36  6  |  71 107 0x47  G  | 103 147 0x67  g
 55  67 0x37  7  |  72 110 0x48  H  | 104 150 0x68  h
 56  70 0x38  8  |  73 111 0x49  I  | 105 151 0x69  i
 57  71 0x39  9  |  74 112 0x4a  J  | 106 152 0x6a  j
                 |  75 113 0x4b  K  | 107 153 0x6b  k
                 |  76 114 0x4c  L  | 108 154 0x6c  l
                 |  77 115 0x4d  M  | 109 155 0x6d  m
                 |  78 116 0x4e  N  | 110 156 0x6e  n
                 |  79 117 0x4f  O  | 111 157 0x6f  o
                 |  80 120 0x50  P  | 112 160 0x70  p
                 |  81 121 0x51  Q  | 113 161 0x71  q
                 |  82 122 0x52  R  | 114 162 0x72  r
                 |  83 123 0x53  S  | 115 163 0x73  s
                 |  84 124 0x54  T  | 116 164 0x74  t
                 |  85 125 0x55  U  | 117 165 0x75  u
                 |  86 126 0x56  V  | 118 166 0x76  v
                 |  87 127 0x57  W  | 119 167 0x77  w
                 |  88 130 0x58  X  | 120 170 0x78  x
                 |  89 131 0x59  Y  | 121 171 0x79  y
                 |  90 132 0x5a  Z  | 122 172 0x7a  z
======================================================
#+end_example

** 2. Desafio: dias da semana

Pesquise e crie um programa que receba um número inteiro entre 1 e 7 como
argumento e imprima o nome do dia correspondente da semana.

*Requisitos:*

- Utilize uma estrutura =switch= para resolver o problema.
- Se o número não estiver no intervalo de 1 a 7, o programa deve imprimir
  =Número inválido=.
- Se não houver argumentos, a mensagem deve ser =Número incorreto de argumentos=.
- Em ambos os casos anteriores, o programa deve terminar com erro.
- Se o argumento recebido for =-h=, o programa deve exibir uma mensagem de uso
  e terminar com sucesso.

*Dicas:*

Para receber argumentos, os parâmetros da função =main= devem ser (nesta ordem):

- =int argc= - Número de argumentos recebidos.
- =char **argv= - Vetor de palavras (/strings/) recebidas como argumentos.

Cada palavra no vetor =argv= pode ser acessada com =argv[N]=, onde =N=
é o índice do argumento acessado.

O primeiro argumento (=argv[0]=) sempre será a invocação do programa.

Todo argumento é recebido como uma string, inclusive os numéricos.

** 3. Desafio: conversão de base 10 para 16 e vice-versa

Crie um programa que receba um inteiro como argumento e imprima...

- Se o número começar com =0x=, o número convertido da base 16 para a base 10.
- Se começar com um inteiro diferente de =0=, o número convertido da base 10 para 16.
- Se começar com =0= ou tiver letras inválidas para um número em hexa, uma mensagem de erro.

  




