Mostre o que cada uma das instruções a seguir imprime. Se uma instrução estiver incorreta, explique.
a) printf( “%-10d\n”, 10000 );
b) printf( “%c\n”, “Isto é uma string” );
c) printf( “%*.*lf\n”, 8, 3, 1024.987654 );
d) printf( “%#o\n%#X\n%#e\n”, 17, 17, 1008.83689 );
e) printf( “% ld\n%+ld\n”, 1000000, 1000000 );
f) printf( “%10.2E\n”, 444.93738 );
g) printf( “%10.2g\n”, 444.93738 );
h) printf( “%d\n”, 10.987 );
Passo 1
Saalve, tranquilo?
Vamos lá programar?!
Passo 2
a) A estrutura:
![]()
Imprime o seguinte resultado
O motivo é que, colocado imediatamente a direita do sinal % casa o valor de à esquerda justificado e ocupando 10 lugares.
Passo 3
b) A estrutura:
![]()
Está incorreta. A razão que a string não é impressa é o uso da conversão %c. Precisamos mudar a conversão para %s.
Então, a estrutura correta é:
![]()
E a saída da estrutura é:
Passo 4
c) A estrutura:
![]()
Tem como saída:
O campo de largura e valores de precisão são dados como argumentos e não controle de formate de string. O asterisco (*) é trocado por %8.3lf e o valor vai até 3 decimais.
Passo 5
d) A estrutura:
![]()
Tem como saída:
A hashtag é usada pra colocar o 0 antes do valor, 0x (ou OX) antes do hexadecimal força um ponto decimal se posicionado antes %e.
Passo 6
e) A estrutura:
![]()
Tem como saída:
O sinal é usado para mostrar o sinal de mais antes de um valor positivo e o sinal de menos antes de um valor negativo.
Passo 7
f) A estrutura:
![]()
Tem como saída:
A saída justificada à direita com 2 espaços e precisão de 2, mostrada em forma exponencial.
Passo 8
g) A estrutura:
![]()
Tem como saída:
A saída é precedida de 3 espaços brancos e é justificada à direita. É impressa com o conversor %g em forma exponencial.
Passo 9
h) A estrutura:
![]()
É incorreto. A razão é que um número de ponto flutuante não pode ser mostrado usando o conversor de inteiro %d.
Resposta
Ei, a resposta está no passo a passo :)