Escreva uma instrução para cada um dos itens a seguir:
a) Imprimir 1234 alinhado à direita em um campo de 10 dígitos.
b) Imprimir 123.456789 em notação exponencial com um sinal (+ ou -) e 3 dígitos de precisão.
c) Ler um valor double na variável number.
d) Imprimir 100 em formato octal precedido de 0.
e) Ler uma string no array de caracteres string.
f) Ler caracteres no array n até que um caractere diferente de um dígito seja encontrado.
g) Usar variáveis inteiras x e y para especificar a largura de campo e a precisão usadas para exibir o valor double 87.4573.
h) Ler um valor no formato 3.5%. Armazenar a porcentagem na variável float percent e eliminar
o % do stream de entrada. Não use o caractere de supressão de atribuição.
i) Imprimir 3.333333 como um valor long double com um sinal (+ ou -) em um campo de 20 caracteres com uma precisão de 3.
Passo 1
E aí meus queridos!! Tudo bem com vocês??
Hoje vamos falar sobre algumas estruturas de manipulação de bits e enumerações em C. Vocês estão prontas, crianças?
Passo 2
Na primeira questão temos que trabalhar com o alinhamento do nosso código. Para facilitar nossa vida precisamos entender que na hora de imprimir um número colocamos o sinal de porcentagem e um especificador de conversão. Por exemplo:
printf(“%d”, 14);
Para alinharmos esse número a direita só precisamos colocar um inteiro que representa a largura do campo entre o sinal de porcentagem e o conversor:
- printf( “%10d\n”, 1234 );
- printf( “%+.3e\n”, 123.456789 );
- scanf( “%lf”, &number );
- printf( “%#o\n”, 100 );
- scanf( “%s”, string );
- scanf( “%[0123456789]”, n );
- printf( “%*.*f\n”, x, y, 87.4573 );
- scanf( “%f%%”, &percent );
- printf( “%+20.3Lf\n”, 3.333333 );
Passo 3
Para o próximo precisamos lembrar que para imprimir qualquer valor em notação exponencial precisamos exibir um especificador de conversão e ou E.
Além disso foi pedido que tivesse 3 dígitos de precisão além de conter o sinal positivo ou negativo.
Observe:
Passo 4
E se precisarmos ler um valor double de uma variável?
Podemos usar o especificador de conversão f – utilizado apenas para double. E para termos certeza que todo número será lido, definiremos ele como um long. Veja a seguir:
E para imprimirmos um número octal? Adivinhe!?
Temos um especificador de conversão também para esses casos: o. Nesse caso ficaria assim:
Passo 5
Precisamos lembrar também do especificador para ler strings – s. Assim quando precisamos ler uma string (frases e palavras) é só utilizar o %s e teremos sucesso, veja como:
E se precisássemos ler uma variável que lesse até um caractere específico? Podemos colocar o ou os caracteres específicos dentro de chaves na função, observe:
Passo 6
Podemos especificar a largura do campo e a precisão em uma única expressão utilizando o * no lugar dos valores da largura do campo e ou precisão. Veja:
Podemos também excluir caracteres como porcentagem quando é escrito pelo usuário e lido pelo programa.
E para finalizarmos podemos juntas todas as informações que temos de um valor e imprimir com precisão. Veja a seguir: temos um valor double do tipo long em um campo de 20 caracteres.
Ufaa!! Finalmente finalizamos!!
Dê Ctrl+n no seu compilador e bora para o próximo exercício!!
Resposta
- printf( “%10d\n”, 1234 );
- printf( “%+.3e\n”, 123.456789 );
- scanf( “%lf”, &number );
- printf( “%#o\n”, 100 );
- scanf( “%s”, string );
- scanf( “%[0123456789]”, n );
- printf( “%*.*f\n”, x, y, 87.4573 );
- scanf( “%f%%”, &percent );
- printf( “%+20.3Lf\n”, 3.333333 );