Faça um programa que receba um número em decimal e imprima o correspondente em hexa e octal (faça isso usando parâmetros do printf).
Passo 1
Beleza, vamos por partes. O enunciado pede um programinha em C que receba um número em decimal e mostre esse mesmo número em héxadecimal e octal, usando os “parâmetros do printf” (ou seja, os especificadores de formatação).
Conteúdo: programação em C básico – leitura de variável com scanf, impressão com printf e uso dos conversores de base (%o para octal e %x para hex).
O que vamos precisar:
Conteúdo: programação em C básico – leitura de variável com scanf, impressão com printf e uso dos conversores de base (%o para octal e %x para hex).
O que vamos precisar:
- Declarar uma variável inteira para guardar o número.
- Usar scanf para ler o valor em decimal.
- Usar printf com os especificadores corretos para imprimir em octal e em hex.
Passo 2
Primeiro a gente cria a variável e lê o valor em decimal.
Em C, pra ler uma variável você usa:
Em C, pra ler uma variável você usa:
scanf("%d", &num);
– O
– O
Como a gente não assume que você já sabe tudo, lembra: toda vez que você usar scanf, coloca o
%d
diz “vou ler um inteiro decimal”– O
&num
passa o endereço de memória da variável pra função scanf guardar lá o valor que o usuário digitar.Como a gente não assume que você já sabe tudo, lembra: toda vez que você usar scanf, coloca o
&
na frente da variável (menos se for string).Passo 3
Agora vem a mágica do printf: ele troca o número da variável pra outras bases automaticamente, dependendo do especificador.
- Para octal, usamos
%o
. - Para hexadecimal, usamos
%x
(ou%X
se quiser as letras A-F maiúsculas).
Por exemplo:
printf("Octal: %o\n", num);
printf("Hexadecimal: %x\n", num);
O printf vai pegar o valor decimal em
num
, converter pra base 8 (octal) ou base 16 (hex), montar a string e mostrar na tela. Você não precisa implementar nenhuma lógica de divisão ou módulo manualmente.Passo 4
Vamos juntar tudo dentro de um
main
. Lembre de incluir a biblioteca <stdio.h>
pra usar scanf/printf e retornar zero no final. Fica assim:Resposta
#include <stdio.h>
int main() {
int num;
// Lê um número decimal
printf("Digite um número em decimal: ");
scanf("%d", &num);
// Imprime em octal e em hexadecimal
printf("Octal: %o\n", num);
printf("Hexadecimal: %x\n", num);
return 0;
}
Explicando rápido:
#include <stdio.h>
traz as funções de entrada/saída.scanf("%d", &num);
lê o decimal.printf("Octal: %o\n", num);
eprintf("Hexadecimal: %x\n", num);
fazem a conversão automática de base e exibem o resultado.
Pronto!