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

10000

O motivo é que, - 10 colocado imediatamente a direita do sinal % casa o valor de 10000 à 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 é:

Isso é uma string

Passo 4

c) A estrutura:

Tem como saída:

1024.988

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:

021

0 X 11

1.008837 e + 03

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:

1000000

+ 1000000

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:

4.45 E + 02

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:

4.4 e + 02

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 :)