Escolar Documentos
Profissional Documentos
Cultura Documentos
PROGRAMAÇÃO (RESOLUÇÃO)
Exame (1ª Época)
Ano Lectivo 2021/2022 Data: 2 de Maio de 2022
Duração Exame: 2h00
INFORMAÇÕES GERAIS
ESTRUTURA DO EXAME
1 de 14
LEEC – Licenciatura em Engenharia Electrotécnica e de Computadores
Programação (2021/2022 – P3, 2º Sem)
Nº ____________ Nome ________________________________________________________ Sala: _________
2 de 14
LEEC – Licenciatura em Engenharia Electrotécnica e de Computadores
Programação (2021/2022 – P3, 2º Sem)
Nº ____________ Nome ________________________________________________________ Sala: _________
GRUPO I
[5 Val.] Assinale a resposta correta em cada alínea (com um x sobre a opção escolhida) e note que uma
resposta errada confere uma penalização de 1/3 da cotação dessa alínea, as alíneas têm todas a mesma
cotação.
1. Seleccione o único identificador de variável inválido:
A. TABULEIRO 1 C67D B
B. tabuleiro2 D. tabuleiro_2
2. O resultado da operação 132%10 é:
A. 1320 C. 13
B. 13.2 2
3. Sabendo que x = 4 e y = 8, qual a expressão para obter o valor z = 45?
. ""F "" C. z = ++x * y++;
B. z = x++ * ++y; D. z = x++ * y++;
4. Assuma que c é um char inicializado com o caractere 'D'. Após a instrução "c = c -'A'+'a'+1;", o
caractere guardado em c será:
A. 'E' C. 'D'
0 D. '1'
5. Assuma que x é um inteiro, inicializado com x = 64. Após a instrução "z = x << 1;", o valor de z será:
A. 32 C. 4
B. 6 2
6. Assuma que x e y são inteiros, inicializados com x = 200 e y = 4. Após a instrução "x /= 20 * y;", o
valor de x será:
A. 40 1
B. 80 D. 10
7. Indique qual a declaração correta para um apontador, ptr:
8=6B ACB C. char ptr;
B. char ptr*; D. char ptr[0];
8. Assumindo que ptr_int é um apontador para int, sizeof(int)==4 bytes, está a usar uma arquitectura
de 64 bits e ptr_int foi inicializado com o valor hexadecimal bf11a100, depois de executada a
instrução "ptr_int++;", ptr_int fica com o valor hexadecimal:
A. bf11a100 1 7; 6
B. bf11a101 D. bf11a108
9. Se pretender imprimir um float flt com o valor 1234.5678 com recurso a "printf("%6.2f",flt);" o
resultado será:
A. 1234.56 1 ' +
B. 1234.00 D. 34.5678
10. Suponha que uma variável i do tipo inteiro foi inicializada com 54 e ao executar a instrução
"scanf("%3d", &i);" insere o valor 12.34, a variável i assume o valor:
A. 54 C. 123
0 D. 0
3 de 14
MEEC – Mestrado Integrado em Engenharia Electrotécnica e de Computadores
Programação (2020/2021 – 2º Sem)
Nº ____________ Nome ________________________________________________________ Sala: _________
4 de 14
MEEC – Mestrado Integrado em Engenharia Electrotécnica e de Computadores
Programação (2020/2021 – 2º Sem)
Nº ____________ Nome ________________________________________________________ Sala: _________
int main() {
int x=5, y=2;
int z=sub(&x, &y);
printf("%d %d %d\n", x, y, z);
return(0);}
A. 5 2 3 C. 3 3 2
B. 2 3 5 2 ' '
20. Considere a função:
void fun(char init, char end) {
if (init > end)
return;
printf("%c ", init);
if (init != end)
fun(init+1, end);}
A chamada à função fun('a','d'); escreve o seguinte resultado no stdout:
678 C. d c b a
B. b c d D. c b a
5 de 14
MEEC – Mestrado Integrado em Engenharia Electrotécnica e de Computadores
Programação (2020/2021 – 2º Sem)
Nº ____________ Nome ________________________________________________________ Sala: _________
GRUPO II
1. [2.5 Val.] Escreva uma função recursiva para registar o número de ocorrências de cada valor
produzido (entenda-se a soma dos pontos dos vários dados) em n lançamentos de 2 dados de 6 faces
(com valores de 1 a 6). O número de ocorrências deve ser registado no vector hist. O número de
ocorrências do valor i deve ser registado na posição do vector de índice i. O vector tem a dimensão
adequada e está inicializado a zeros aquando da invocação da função. O protótipo da função é:
6 de 14
MEEC – Mestrado Integrado em Engenharia Electrotécnica e de Computadores
Programação (2020/2021 – 2º Sem)
Nº ____________ Nome ________________________________________________________ Sala: _________
1. [2.5 Val.] Escreva uma função para verificar se 2 matrizes (A e B) são inversas, ou seja, se o seu
produto corresponde à matriz identidade. A função recebe como parâmetros a matriz A, o número
de linhas da matriz A, o número de colunas da matriz A, a matriz B, o número de linhas da matriz B,
e o número de colunas da matriz B. A função deve retornar 0 se as matrizes forem inversas e 1 se não
forem inversas e -1 caso não tenham dimensões que permitam realizar a multiplicação. Assuma por
simplicidade que as matrizes estão limitadas à dimensão de 20x20. O protótipo da função é:
int valida_inversa(float A[20][20], int linA, int colA, float B[20][20], int linB, int colB){
int i, j, k;
float soma;
if (colA != linB)
return -1;
if (colB != linA)
return 1;
for(i=0; i<linA; i++)
for(j=0; j<colB; j++) {
soma = 0;
for(k=0; k<colA; k++)
soma += A[i][k]*B[k][j];
if ((i==j) && (soma != 1))
return 1;
else if ((i!=j) && (soma != 0))
return 1;
}
return 0;
}
7 de 14