Lisboa, 17 de Abril de 1997
[1] 1. Qual a diferença entre definição e declaração?
Uma declaração indica apenas a existência de um objecto, que está definido algures. A definição é o local onde é atribuida memória aos objectos. Daí que um objecto possa ser declarado uma quantidade arbitrária de vezes embora só possa ser definido uma única vez. Note-se ainda que uma definição funciona também como declaração.
Do ponto de vista sintático a diferença entre uma declaração e uma definição depende do tipo de objectos em questão:
Nota: a resposta no teste não precisava de ser tão detelhada.
[4] 2. Assinale as afirmações correctas:
[1] 2. a) Os ficheiros de cabeçalho devem conter:
[1] 2. b) As variáveis locais a uma função:
[2] 2. c) A declaração: typedef int inteiro;
define um novo tipo chamado int e uma variável chamada inteiro.
[5] 3. O que faz a seguinte função?
char *f(char *cadeia, size_t i, size_t j) { char aux; if(i < j) { aux = cadeia[i]; cadeia[i] = cadeia[j]; cadeia[j] = aux; f(cadeia, i + 1, j - 1); } return cadeia; }
Se i >= j não faz nada, caso contrário inverte todos os caracteres da cadeia cadeia entre a posição i e a posição j. No final devolve um ponteiro para ao primeiro caracter da cadeia.
[5] 4.
[2] 4. a) Crie um tipo Fraccao que permita guardar um valor fracionário na forma a/b, sendo a e b do tipo long.
typedef struct { long n, d; /* numerador e denominador */ } Fraccao;
[3] 4. b) Escreva uma função Fraccao Soma(Fraccao a, Fraccao b) que devolva a soma das duas fracções passadas como argumentos.
Fraccao Soma(Fraccao a, Fraccao b) { Fraccao r; r.n = a.n * b.d + b.n * a.d; r.d = a.d * b.d; return r; }
[5] 5. Escreva uma função char *CADcopia(const char *origem) que devolva um ponteiro para uma zona de memória (que deve reservar para o efeito) contendo uma cópia da cadeia de caracteres passada como argumento (a memória reservada deve ser apenas a estritamente necessária).
char *CADcopia(const char *origem) { char *destino; if((destino = calloc(strlen(origem) + 1, sizeof(char))) == NULL) return NULL; return strcpy(destino, origem); }
Página
concebida e mantida por Eng. Manuel Menezes de Sequeira (última actualização 1998/05/15) Copyright © 1996-2001 ISCTE |
![]() |