Linguagem C_Exercicios Propostos Solucao_2

Page 1


2.1

Linguagem C 25.ª Edição Atualizada e Aumentada

EXERCÍCIOS PROPOSTOS – SOLUÇÃO

a) y int;

/* KO: Sintaxe incorreta */ b) int ;

/* KO: Falta a variável */ c) integer x; /* KO: integer não é um tipo em C */ d) inta, b; /* KO: Nome da variável junto ao tipo */ e) float f, g, c; /* OK */ f) char ch1=ch2='A'; /* KO: Só se pode fazer uma atribuição */ /* depois de declaradas as variáveis */ /* ch2 nunca foi declarada */ g) char ch1 = 'A', ch2 = 'A'; /* OK */

2.2 c) Um valor aleatório.

2.3

a) Valor /* OK */

b) &xvar /* KO: Caráter inicial inválido */

c) dez% /* KO: Caráter final inválido */ d) a+b /* KO: Caráter + inválido */

e) _Kabonga /* OK - embora não aconselhável (underscore) */ f) MENOS /* OK - embora não aconselhável (maiúsculas) */ g) 10a /* KO: Primeiro caráter é dígito */ h) a10 /* OK */ i) main /* KO: Palavra reservada */ j) F1 /* OK */

2.4 As seguintes afirmações são verdadeiras. O nome de uma variável…

a) Deve indicar aquilo que ela armazena.

d) Deve ser o mais explícito possível.

f) Pode, mas não deve começar por underscore ( ).

g) Pode conter mais de um caráter.

2.5 int %d float %f ou %e char %c short int %hd long int %ld signed long int %ld

2.6

a) Verdade.

b) Falso.

c) Verdade.

2.7

d) Verdade, pois o bit de sinal usado para representar os números negativos pode ser utilizado para representar mais um conjunto de números positivos. O maior valor de um tipo unsigned é igual ao dobro do maior número do tipo signed correspondente, somado de 1 unidade1

e) Falso. Uma variável do tipo char só pode armazenar um caráter.

f) Falso. Todos os carateres pertencem à tabela ASCII. Uma variável do tipo char só consegue armazenar um caráter.

g) Falso. Uma variável do tipo char armazena sempre apenas um caráter, qualquer que ele seja. Embora determinados carateres se escrevam recorrendo a mais de um caráter (por exemplo, '\t' ), internamente são apenas guardados em 1 byte. Usar mais de um caráter para representar certos carateres especiais serve unicamente para facilitar a vida ao programador.

h) Verdade.

2.7.1 A variável x foi declarada duas vezes.

2.7.2 int é uma palavra reservada e, como tal, não pode ser usada como identificador de uma variável.

2.7.3 Atribuições em cascata (como x = y = z = 0) só podem ser realizadas depois de todas as variáveis terem sido declaradas. Dever-se-ia ter feito:

int x, y, z; x = y = z = 0;

/* ou então */

int x=0, y=0, z=0;

2.8

2.8.1 A função scanf serve unicamente para a leitura de valores, não devendo ser colocados outros carateres na string do formato. Caso se queira escrever uma string antes de solicitar o número, deverá usar-se a função printf :

#include <stdio.h>

void main(void)

{ int n;

printf("Introduza um nº ");

scanf("%d", &n);

printf("O nº = %d\n", n); return 0; }

2.8.2 A função scanf não deve conter o caráter \n na sua string , pois não termina a leitura imediatamente depois de escrever o valor solicitado.

2.8.3 Os formatos de leitura e escrita de variáveis devem estar de acordo com os tipos das variáveis que são processadas, evitando, assim, sérios problemas que poderão vir a ser detetados algumas linhas de código mais à frente. Como a variável n é do tipo inteiro, deveria usar-se o formato de leitura e escrita %d. Podia também alterar-se a variável para float e, após esta alteração, o programa passaria a funcionar corretamente.

1 Exemplos:

■ signed char: limites: -128 a 127;

■ unsigned char: limites: 0 a 255.

2.9

2.10

1: #include <stdio.h>

2:

3: int main(void)

4: {

5: int dia, mes, ano; 6:

7: printf("Ano: "); scanf("%d", &ano);

8: printf("Mes: "); scanf("%d", &mes); 9: printf("Dia: "); scanf("%d", &dia); 10:

11: printf("Data Completa: %d/%d/%d\n", dia, mes, ano); 12:

13: return 0; 14: }

PROG0223.C

Note-se que não existe qualquer formato específico para o tratamento de datas nas funções printf e scanf. As partes de uma data terão de ser tratadas de acordo com o tipo de dados de cada componente (dia, mês, ano).

1: #include <stdio.h>

2:

3: int main(void)

4: {

5: int dia, mes, ano;

6: printf("Data (Formato aaaa-mm-dd): ");

7:

8: scanf("%d-%d-%d", &ano, &mes, &dia);

9:

10: printf("Data Completa: %d/%d/%d\n", dia, mes, ano); 11: return 0; 12: }

PROG0224.C

Neste exercício, para realizar a leitura completa de uma data, pode-se indicar no formato de leitura da função scanf o caráter separador que irá aparecer entre as várias componentes. O utilizador é, então, obrigado a colocar o caráter '' entre as componentes a ler, de modo que a leitura seja realizada com sucesso. Experimente introduzir as datas 1995-02-01 e 1995/02/01 e compare os resultados.

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.