Fácil C

Função que calcula o dobro

Enunciado

Escreva uma função chamada dobro que recebe um número inteiro e retorna o seu dobro. No main, leia um inteiro, chame a função e imprima o resultado no formato Dobro de X = Y.

Requisitos

  • A função deve se chamar dobro e receber um parâmetro int.
  • A função deve retornar um int.
  • O main deve ler um inteiro e imprimir a mensagem exata.

Código inicial

#include <stdio.h>

/* Escreva o protótipo da função dobro aqui */

int main(void) {
    int n;
    scanf("%d", &n);
    /* Chame a função e imprima o resultado */
    return 0;
}

/* Defina a função dobro aqui */

Saída esperada

Dobro de 7 = 14
Ver dica

O protótipo deve vir antes do main e a definição pode vir depois. Use return para devolver o dobro.

Mostrar solução
#include <stdio.h>

/* Protótipo da função dobro */
int dobro(int x);

int main(void) {
    int n;
    scanf("%d", &n);
    int resultado = dobro(n);
    printf("Dobro de %d = %d\n", n, resultado);
    return 0;
}

/* Definição da função dobro */
int dobro(int x) {
    return 2 * x;
}

Passo a passo

  1. O protótipo int dobro(int x); informa ao compilador que existe uma função chamada dobro que recebe um int e retorna um int.
  2. No main, declaramos a variável n e lemos um valor inteiro com scanf.
  3. Chamamos dobro(n) e armazenamos o retorno em resultado.
  4. Imprimimos a mensagem formatada com printf.
  5. A definição de dobro aparece depois do main; ela simplesmente retorna 2 * x.

Por que funciona

A função dobro recebe uma cópia do valor de n (passagem por valor), calcula o dobro e devolve esse valor por meio de return. O main usa o valor retornado para imprimir a mensagem. O protótipo garante que o compilador saiba que dobro existe e como chamá-la antes de sua definição.

Erros comuns

  • Esquecer o protótipo: se a função for definida depois do main e não houver protótipo, o compilador emitirá um aviso (ou erro em C99+) de declaração implícita. Solução: incluir int dobro(int x); antes do main.
  • Não usar return: se a função não retornar, o valor de retorno será indefinido. Use return 2 * x;.
  • Trocar o tipo de retorno: declarar void dobro(int x) e tentar usar o retorno causará erro de compilação. Mantenha int.

Outra forma de resolver

Pode-se definir a função antes do main, eliminando o protótipo:

int dobro(int x) { return 2 * x; }
int main(void) { /* ... */ }

Essa forma é preferível em programas pequenos, mas o protótipo é essencial em projetos com múltiplos arquivos.

Saída esperada

Dobro de 7 = 14