cblc/exercicios/02/README.org

3 KiB

Curso Básico da Linguagem C

Exercícios da aula 2: Dados e instruções

1. Pesquise e responda

  • Quais são as finalidades da função printf?
  • Em que cabeçalho da glibc ela é declarada?
  • Quantos argumentos ela recebe?
  • Como fazer para que a saída imprima quebras de linha?
  • Para que servem os especificadores de formato %d, %s, %c e %f?

2. Operações aritméticas

Escreva um programa que, dado um valor inteiro associado à variável num, calcule e imprima os resultados das seguintes operações:

  • num multiplicado por 15;
  • num somado a 42;
  • 123 menos num;
  • Divisão de num por 5;
  • Resto da divisão de num por 5.

Esquema geral da saída do programa:

NUM x 15 = VALOR
NUM + 42 = VALOR
123 - NUM = VALOR
NUM / 5 = VALOR
RESTO DE NUM / 5 = VALOR

3. Números mágicos

O uso de valores literais sem um significado óbvio (números mágicos) é uma prática indesejável, mas pode ser evitada de várias formas. Sendo assim, analise as situações abaixo e proponha uma solução.

Caso 1: Propriedades de círculos

Meu programa tem funções para calcular a área e o perímetro de um círculo cujo raio (um inteiro) é recebido como argumento:

#include ...

float circ_perim(int raio) {
    /* Circunferência = 2πr */
    return 2 * 3.14 * raio;
}

double circ_area(int raio) {
    /* Área = πr² */
    return 3.14 * raio * raio;
}

int main(void) { ... }

Caso 2: Multiplicador constante

No meu programa, todas as operações aritméticas envolvem a multiplicação de um valor por 10.

#include <stdio.h>

int main(void) {
    int num1 = 13;
    int num2 = 29;

    printf("%d x %d = %d\n", num1, 10, num1 * 10);
    printf("%d x %d = %d\n", num1 + num2, 10, (num1 + num2) * 10);
    printf("%d x %d = %d\n", num2, 10, num2 * 10);
}

4. Compile, corrija e responda

Dado o programa abaixo (por exemplo, main.c)…

#include <stdio.h>

int main(void) {
    char *fmt = "Circunferência de um círculo de raio %d: %.2f\n";
    printf(fmt, r, circ_perim(r));
    return 0;
}

float circ_perim(int raio) {
    /* Circunferência = 2πr */
    return 2 * 3.14 * raio;
}
  • Qual foi o erro encontrado na compilação?
  • Por que esse erro aconteceu?
  • Qual foi a solução adotada?
  • A sua solução é a única possível?
  • Se não for, cite outras possibilidades.

5. Pesquise e responda

Pesquise, entre as funções da glibc, aquelas que podem solucionar os problemas abaixo e demonstre como elas podem ser utilizadas.

  • Pausar a execução do programa por 10 segundos.
  • Apenas imprimir uma quebra de linha.
  • Ler um número inteiro interativamente e atribuí-lo a uma variável.
  • Imprimir um número inteiro decimal em base 8 e base 16.
  • Terminar a execução do programa com um valor de estado de término.