Exercício 1. Defina uma estrutura com três campos: um string de 80 caracteres, um inteiro, e um número ponto flutuante. Crie uma função para inicializar os campos de uma variável desta estrutura (assuma que a variável foi criada fora da sua função inicializadora). Sua função deve ter tipo de retorno void. Dica: a função scanf inicializa variáveis que foram declaradas fora dela (não é para usar scanf, só olhar como ela funciona).
Exercício 2. Defina uma estrutura com três campos: um string de 80 caracteres, um ponteiro para inteiro, e um número de ponto flutuante. Crie uma função para alocar e inicializar os campos de uma variável desta estrutura. Sua função deve retornar um ponteiro para a estrutura alocada e inicializada.
Exercício 3. Faça uma função para calcular o volume de um cilindro, seguindo a formula: V = π * raio2 * altura.
Exercício 4. O valor de e (número de Euler) pode ser aproximado pelo somatório 1 + 1/1! + 1/2! + 1/3! + 1/4! + 1/5! + ...
Implemente um programa para aproximar o valor de e. Seu programa deve aumentar a precisão da aproximação calculando iterativamente (isto é, num laço) os termos do somatório acima. Seu programa deve parar a aproximação quando o i-ésimo termo 1/i! for menor do que 10-6.
Implemente esse programa fazendo uma função separada para calcular o fatorial de i.
Exercício 5. Defina uma estrutura para armazenar um CD de música (struct CD { ... };) e uma estrutura para armazenar uma música (struct musica { ... };). Crie uma biblioteca de funções para criação e manipulação de CDs. Use o código abaixo como seu arquivo cdmusica.h.
#ifndef __CDMUSICA_H__ #define __CDMUSICA_H__ struct musica { char *nome; int duracao; }; struct CD { char *nome; char *banda; struct musica **musicas; int num_musicas; }; struct CD * cria_CD(void); void destroi_CD(struct CD *cd); struct musica * cria_musica(void); void destroi_musica(struct musica *mus); void adiciona_musica(struct CD *cd, struct musica *mus);