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
dobroe receber um parâmetroint. - A função deve retornar um
int. - O
maindeve 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
- O protótipo
int dobro(int x);informa ao compilador que existe uma função chamadadobroque recebe uminte retorna umint. - No
main, declaramos a variávelne lemos um valor inteiro comscanf. - Chamamos
dobro(n)e armazenamos o retorno emresultado. - Imprimimos a mensagem formatada com
printf. - A definição de
dobroaparece depois domain; ela simplesmente retorna2 * 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
maine não houver protótipo, o compilador emitirá um aviso (ou erro em C99+) de declaração implícita. Solução: incluirint dobro(int x);antes domain. - Não usar
return: se a função não retornar, o valor de retorno será indefinido. Usereturn 2 * x;. - Trocar o tipo de retorno: declarar
void dobro(int x)e tentar usar o retorno causará erro de compilação. Mantenhaint.
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