Você está na página 1de 5

Exercícios de Exame

Grupo I. (2.5 + 2.0 + 2.5 = 7.0 val.)

1. [2.5 val.] Considere as variáveis (de conteúdo e de endereço) definidas abaixo. Assinale com V, as
atribuições válidas e com F as inválidas.
float a, *pa, **pf; int x, *px, *qx,**pp;

a) [ ] x = &px; b) [ ] px = &*&x + 2; c) [ ] x = *&*&*px; d) [ ] a = (*px)-- +*qx--;


e) [ ] qx = px; f) [ ] px += px++ + 2 g) [ ] qx = &px; h) [ ] **px = 3 + a;

2. [2.0 val.] Considere o seguinte programa em C.


#include <stdio.h> /* 1 */
#define T 100 /* 2 */
/* 3 */
int main(int a, char **b){ /* 4 */
int k, m; /* 5 */
float x; /* 6 */
int v[T]; /* 7 */
/* 8 */
for (k=0;m=0, k<T, k++) { /* 9 */
m += k; /* 10 */
m *= 2; /* 11 */
} /* 12 */
/* 13 */
for (k=1;k<=T; k++) { /* 14 */
v[k] = k^(m-1); /* 15 */
} /* 16 */
return (1); /* 17 */
} /* 18 */
Quais das seguintes linhas darão erro quando este programa for compilado?
a) [ ] 6 e 14 b) [ ] 9 c) [ ] 9 e 14 d) [ ] 9 e 15
e) [ ] nenhuma dos anteriores

3. [2.5 val.] Considere o seguinte programa em C.


#include <stdio.h>

#define CTE 2

unsigned int fazisto(unsigned int n, unsigned int s) {


unsigned int m = 1;

while (s-- > 0) {


n ^= m;
m <<= CTE;
m /= CTE;
}
return n;
}
int main() {
int r, s;

scanf("%u", &r);
scanf("%u", &s);

printf("%u\n", fazisto(r,s));

return 0;
}
Qual o valor escrito pelo programa quando o utilizador introduzir os valores: “13 3” (sem as aspas)?
a) [ ] 0 b) [ ] 10 c) [ ] 20 d) [ ] 15

Nome: A1
e) [ ] 1 f) [ ] 13 g) [ ] 3 h) [ ] 16
i) nenhuma dos anteriores

Grupo II. (3.0 + 3.0 = 6.0 val.)

4. [3.0 val.] Considere a seguinte função em C:


int ef(int v[], int n)
{
int m = *v;
int *e = &m;
int **ee = &v;
int ***eee = &ee;
int *d = v + n;

while (*ee != d)
{
if (m < **ee) *e = ***eee;
(*ee)++;
}

return m;
}
Qual o valor retornado pela função ef quando chamada com os argumentos v={2,16,8,15,3} e n=5?
a) [ ] 16 b) [ ] 2 c) [ ] 5 d) [ ] 14
e) [ ] 12 f) [ ] 8 g) [ ] 3 h) [ ] 4

5. [3.0 val.] Escreve um programa que recebe um número inteiro positivo e apresenta a multiplicação do
maior algarismo pela quantidade de algarismos primos que compõem o número. Exemplo: Entrada: 26749. Saída:
9*2

Nome: A2
Grupo III. (4.5 + 2.5 = 7.0 val.)

6. Considere o jogo do Galo (problema proposto no primeiro mini-projecto da disciplina), implemente o


seguinte:
a) [4.5 val.] Implementar o protótipo: char buscaVencedor(char *t). Esta função recebe como
argumento uma referência t (correspondente ao estado actual do tabuleiro do jogo) e devolve uma cadeia
de caracteres com um único caracter correspondente a uma marca do jogador vencedor. Caso não seja
possível determinar um vencedor (porque o jogo ainda não acabou ou porque terminou num empate), a
sua função deverá devolver FALSE.

Nome: A3
b) [2.5 val.] Implemente o protótipo: void mostra(char *t). Mostra no ecrã as casas ocupadas
com a marcas de cada jogador. As casas vazias deverão apresentar a posição correspondente.
Exemplo:

FOLHA DE RASCUNHO

Nome: A4
Nome: A5

Você também pode gostar