2025-03-22 12:05:29 -03:00
|
|
|
#+title: Curso Básico da Linguagem C
|
|
|
|
#+subtitle: Exercícios
|
|
|
|
#+author: Blau Araujo
|
|
|
|
#+startup: show2levels
|
|
|
|
#+options: toc:3
|
|
|
|
|
2025-03-27 08:26:25 -03:00
|
|
|
* Exercícios da aula 5: Variáveis e ponteiros
|
2025-03-22 12:05:29 -03:00
|
|
|
|
2025-03-27 08:26:25 -03:00
|
|
|
- [[../../aulas/05-controle/README.org][Anotações da aula]]
|
2025-03-22 12:05:29 -03:00
|
|
|
- [[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...
|
|
|
|
|
2025-03-22 12:07:58 -03:00
|
|
|
- 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.
|
|
|
|
|
|
|
|
|
2025-03-22 12:05:29 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|