Buscar

Lista 03 Testes de Mesa

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Exercícios - Questões Objetivas 
 
Apresentação 08 – Matrizes 
 
1) Qual dos fragmentos de código abaixo preenche todos os elementos da matriz 
corretamente? 
 
a) 
for(i = 0; i < 3; i++) 
{ 
 for(j = 0; j < 3; j++) 
 printf("\nElemento [%d][%d]: ", i+1, j+1); 
 scanf("%d", &mat[i][j]); 
} 
 
b) 
for(i = 0; i < 3; i++) 
{ 
 scanf("%d", &mat[i][j]); 
 for(j = 0; j < 3; j++) 
 printf("\nElemento [%d][%d]: ", i+1, j+1); 
} 
 
c) 
for(i = 0; i < 3; i++) 
{ 
 for(i = 0; i < 3; i++) 
 { 
 printf("\nElemento [%d][%d]: ", i+1, i+1); 
 scanf("%d", &mat[i][i]); 
 } 
} 
 
d) 
for(i = 0; i < 3; i++) 
{ 
 for(j = 0; j < 3; j++) 
 { 
 printf("\nElemento [%d][%d]: ", i+1, j+1); 
 scanf("%d", &mat[i][j]); 
 } 
} 
 
e) 
for(i = 0; i < 3; i++) 
{ 
 printf("\nElemento [%d][%d]: ", i+1, i+1); 
 scanf("%d", &mat[i][i]); 
} 
 
 
 
 
2) Qual a função do programa abaixo? 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 int mat[5][5], i, j, soma = 0; 
 printf("Digite os elementos da matriz:\n"); 
 for(i = 0; i < 5; i++) 
 { 
 for(j = 0; j < 5; j++) 
 { 
 printf("\nElemento [%d][%d]: ", i+1, j+1); 
 scanf("%d", &mat[i][j]); 
 } 
 } 
 for(i = 0; i < 5; i++) 
 { 
 soma = soma + mat[i][i]; 
 } 
 printf("Soma = %d", soma); 
 return 0; 
} 
 
a) Imprimir a soma de todos os elementos da matriz. 
b) Imprimir a soma dos elementos da primeira coluna. 
c) Imprimir a soma dos elementos da diagonal principal. 
d) Imprimir a matriz. 
e) Imprimir a soma dos elementos da diagonal secundária. 
 
3) Explique a função do programa abaixo: 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 int mat[3][3], i, j, valor1, valor2; 
 
 printf("Digite os elementos da matriz:\n"); 
 for(i = 0; i < 3; i++) 
 { 
 for(j = 0; j < 3; j++) 
 { 
 printf("\nElemento [%d][%d]: ", i+1, j+1); 
 scanf("%d", &mat[i][j]); 
 } 
 } 
 
 valor1 = mat[0][0]; 
 
 
 valor2 = mat[0][0]; 
 
 for(i = 0; i < 3; i++) 
 { 
 for(j = 0; j < 3; j++) 
 { 
 if(valor1 > mat[i][j]) 
 { 
 valor1 = mat[i][j]; 
 } 
 if(valor2 < mat[i][j]) 
 { 
 valor2 = mat[i][j]; 
 } 
 } 
 } 
 printf("Resultado = %d", (valor2 - valor1)); 
 return 0; 
} 
 
a) Imprimir a diferença entre os dois primeiros elementos. 
b) Imprimir a diferença entre o maior e o menor elemento. 
c) Imprimir o maior e o menor elemento. 
d) Imprimir a diferença entre o menor e o maior elemento. 
e) Imprimir a diferença entre o primeiro e o último elemento. 
 
4) Tendo como entrada os valores na seguinte ordem: {1, 3, 9, 6, -23, 54, 2, 7, 16}, mostre qual 
a saída do programa e qual a sua função: 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 int mat[3][3], i, j, cont = 0; 
 printf("Digite os elementos da matriz:\n"); 
 for(i = 0; i < 3; i++) 
 { 
 for(j = 0; j < 3; j++) 
 { 
 printf("\nElemento [%d][%d]: ", i+1, j+1); 
 scanf("%d", &mat[i][j]); 
 } 
 } 
 for(i = 0; i < 3; i++) 
 { 
 for(j = 0; j < 3; j++) 
 { 
 if(mat[i][j] % 2 == 0) 
 { 
 cont++; 
 } 
 } 
 } 
 
 
 printf("Contador = %d", cont); 
 return 0; 
} 
 
a) 4. Imprimir a quantidade de números ímpares. 
b) 3. Imprimir todos os números pares. 
c) 9. Imprimir o número de elementos da matriz. 
d) 1. Imprimir a quantidade de números negativos. 
e) 3. Imprimir quantidade de números pares. 
 
5) Mostre a saída e a finalidade do seguinte programa, sendo n a ordem da matriz quadrada: 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 int mat[3][3] = {{1, 5, 7}, {9, 8, 0}, {1, 10, 16}}, i, j, n = 3, soma = 0; 
 
 for(i = 0; i < 3; i++) 
 { 
 for(j = 0; j < 3; j++) 
 { 
 if(i + j == n - 1) 
 { 
 soma = soma + mat[i][j]; 
 } 
 } 
 } 
 printf("Soma = %d", soma); 
 return 0; 
} 
 
a) 25. Imprimir a soma dos elementos da diagonal principal. 
b) 13. Imprimir a soma dos elementos da primeira linha. 
c) 16. Imprimir a soma dos elementos da diagonal secundária. 
d) 11. Imprimir a soma dos elementos da primeira coluna. 
e) 23. Imprimir a soma dos elementos da última coluna. 
 
 
 
 
 
6) Explique qual a função do programa abaixo: 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 int mat[3][3], i, j; 
 for(i = 0; i < 3; i++) 
 { 
 for(j = 0; j < 3; j++) 
 { 
 if(i == j) 
 { 
 mat[i][j] = 1; 
 } 
 else 
 { 
 mat[i][j] = 0; 
 } 
 } 
 } 
 for(i = 0; i < 3; i++) 
 { 
 for(j = 0; j < 3; j++) 
 { 
 if(i == 0) 
 { 
 printf("%d ", mat[i][j]); 
 } 
 } 
 } 
 return 0; 
} 
 
 
a) Criar uma matriz identidade e imprimir os elementos da primeira linha. 
b) Criar uma matriz triangular superior e imprimir os elementos da primeira coluna. 
c) Criar uma matriz identidade e imprimir os elementos da diagonal principal. 
d) Criar uma matriz triangular inferior e imprimir os elementos da primeira linha. 
e) Criar uma matriz nula e imprimir todos os elementos. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7) Tendo como entrada os valores na seguinte ordem: { 56, 78, 65, 48, 76, 50, 48, 74, 59}, 
mostre qual será a saída correta: 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 int i, j; 
 float media, mat[3][3]; 
 for(i = 0; i < 3; i++) 
 { 
 printf("\nNotas aluno %d\n", i+1); 
 for(j = 0; j < 3; j++) 
 { 
 printf("Nota %d: ", j+1); 
 scanf("%f", &mat[i][j]); 
 } 
 } 
 for(i = 0; i < 3; i++) 
 { 
 media = 0; 
 printf("\nAluno %d: ", i+1); 
 for(j = 0; j < 3; j++) 
 { 
 media = media + mat[i][j]; 
 } 
 media = media/3; 
 if(media >= 60 && media <= 100) 
 { 
 printf("Aprovado."); 
 } 
 else 
 { 
 if(media >= 0 && media < 60) 
 { 
 printf("Reprovado."); 
 } 
 } 
 } 
 return 0; 
} 
 
a) Reprovado, Reprovado, Aprovado. 
b) Aprovado, Reprovado, Aprovado. 
c) Aprovado, Aprovado, Aprovado. 
d) Reprovado, Aprovado, Aprovado. 
e) Reprovado, Aprovado, Reprovado. 
 
 
 
 
 
8) Mostre a(s) linha(s) que apresente(m) erro(s) de sintaxe: 
 
1 real soma_elementos( real m ) 
2 { 
3 inteiro i, j; 
4 real soma ← 0; 
5 para ( i ← 0; i < 2; i ← i + 1) faça 
6 { 
7 para (j ← 0; j < 3; ← j + 1) faça 
8 { 
9 soma ← soma + m[i][j]; 
10 } 
11 } 
12 retorne soma; 
13 } 
14 principal 
15 { 
16 real mat[2][3] ← {{2.1,0,1.3},{5.0,1.5,6.3}}; 
17 real soma ← soma_elementos(mat[2][3]); 
18 imprima ("A soma dos elementos da matriz foi ", soma); 
19 } 
a) Linhas 1 e 17. 
b) Linha 5. 
c) Linhas 9 e 16. 
d) Linhas 16. 
e) Linhas 7 e 9. 
 
9) Quais serão os novos valores dos elementos da matriz no código abaixo? 
 
principal 
{ 
 inteiro mat[3][3] ← {{2, 4, 5},{7, 9, 3}, {8, 11, 1}}, i, j; 
 para ( i ← 0; i < 3; i ← i + 1) faça 
 { 
 para (j ← 0; j < 3; ← j + 1) faça 
 { 
 se((i + j) < 2) então 
 { 
 mat[i][j] ← mat[i][j] – 1; 
 } 
 } 
 } 
} 
 
a) mat[3][3] ← {{2, 4, 5},{7, 9, 2}, {8, 10, 0}} 
b) mat[3][3] ← {{2, 4, 5},{7, 9, 3}, {8, 11, 1}} 
c) mat[3][3] ← {{2, 3, 5},{6, 9, 3}, {8, 11, 1}} 
d) mat[3][3]← {{1, 3, 5},{6, 9, 3}, {8, 11, 1}} 
e) mat[3][3] ← {{1, 3, 5},{8, 9, 3}, {8, 12, 1}} 
 
 
10) Se for inicializada a seguinte matriz: {{3, 7, 14},{2, 6, 15}, {17, 1, 9}}, mostre qual o valor 
que a função irá retornar: 
inteiro soma( real m[3][3] ) 
{ 
 inteiro i, j, soma ← 0; 
 para ( i ← 0; i < 2; i ← i + 1) faça 
 { 
 para (j ← 0; j < 3; ← j + 1) faça 
 { 
 se(i = 1 ou j = 1) então 
 { 
 soma ← soma + m[i][j]; 
 } 
 } 
 } 
 retorne soma; 
} 
 
a) 31. 
b) 24. 
c) 22. 
d) 38. 
e) 13. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Apresentação 09 – Estruturas de Dados Heterogêneas 
1) Indica em qual linha há um erro no código abaixo: 
1 #include <stdio.h> 
 
2 typedef struct saluno 
3 { 
4 char nome[120]; 
5 int matricula; 
6 float nota; 
7 tipo_endereco endereco; 
8 }; 
 
9 typedef struct sendereco 
10 { 
11 char rua[120]; 
12 int complemento; 
13 char bairro[120]; 
14 }tipo_endereco; 
 
15 int main() 
16 { 
17 aluno p1; 
18 gets(p1.nome); 
19 scanf(“%d”,&p1.matricula); 
20 scanf(“%f”,&p1.nota); 
21 gets(p1.endereco.rua); 
22 scanf(“%d”,&p1.endereco.complemento); 
23 gets(p1.endereco.bairro); 
24 return 0; 
25 } 
 
a) 1. 
b) 5. 
c) 8. 
d) 16. 
e) 22. 
 
2) Considerando o programa abaixo, qual estrutura deve ser inserida na linha 6? 
1 #include <stdio.h> 
2 #include <string.h> 
3 
4 int main() 
5 { 
6 <estrutura> 
7 dados d[3]; 
8 int i,j; 
9 for(i=0;i<3;i++) 
10 { 
11 printf("Nome\n"); 
12 scanf("%s",d[i].nome); 
13 printf("Rua\n"); 
 
 
14 scanf("%s",d[i].rua); 
15 printf("Telefone\n"); 
16 scanf("%d",&d[i].telefone); 
17 } 
18 for(i=0;i<3;i++) 
19 { 
20 printf("Pessoas que moram na mesma rua de %s\n",d[i].nome); 
21 for(j=0;j<3;j++) 
22 { 
23 if((strcmp(d[i].rua,d[j].rua)==0)&&(!(strcmp(d[i].nome,d[j].nome))==0)) 
24 { 
25 printf("%s\n",d[j].nome); 
26 } 
27 } 
28 } 
29 system("pause"); 
30 return 0; 
31 } 
 
a) 
struct sdados 
{ 
 char nome,rua; 
 int telefone; 
}; 
 
b) 
struct sdados 
{ 
 char nome[20],rua[20]; 
 int telefone; 
}; 
 
c) 
typedef struct sdados 
{ 
 char nome[20],rua[20]; 
 float telefone; 
}dados; 
 
d) 
typedef struct sdados 
{ 
 char nome[20],rua[20]; 
 int telefone; 
}dados; 
 
e) N.D.A. 
 
 
 
3) O que será gerado pelo código abaixo? 
 
#include <stdlib.h> 
 
struct Aluno 
{ 
 int matricula; 
 char nome[50]; 
 
 
 char end[50]; 
}; 
 
int main() 
{ 
 struct Aluno a1,a2; 
 printf("Nome: "); 
 gets(a1.nome); 
 printf("Endereco: "); 
 gets(a1.end); 
 printf("Matricula: "); 
 scanf("%d",&a1.matricula); 
 a2=a1; 
 printf("Nome: %s\n",a2.nome); 
 printf("Endereco: %s\n",a2.end); 
 printf("Matricula: %d\n",a2.matricula); 
 system("pause"); 
 return 0; 
} 
 
a) O meu nome, endereço e matrícula. 
b) “Nome:%s\n Endereco: %s\n Matricula: %d\n”. 
c) Os dados digitados pelo usuário e inseridos na variável a1. 
d) Erro. 
e) N.D.A. 
 
 
4) Utilizando a estrutura abaixo indique qual das funções retornaria a diferença de dias duas 
instâncias dessa estrutura. Considere 1 mês = 30 dias e 1 ano = 365 dias. 
 
typedef struct sdata 
{ 
 int dia,mes,ano; 
}data; 
 
a) 
function dif(data d1,data d2) 
{ 
 int dias1,dias2; 
 dias1= d1.dia + d1.mes*30 + d1.ano*365; 
 dias2= d2.dia + d2.mes*30 + d2.ano*365; 
 return dias1-dias2; 
} 
 
b) 
int dif(data d1,data d2) 
{ 
 int dias1,dias2; 
 dias1= d1.dia + d1.mes*30 + d1.ano*365; 
 dias2= d2.dia + d2.mes*30 + d2.ano*365; 
 dias1-dias2; 
} 
 
 
 
 
 
c) 
int dif(data d1,data d2) 
{ 
 int dias1,dias2 
 dias1= d1.dia + d1.mes*30 + d1.ano*365 
 dias2= d2.dia + d2.mes*30 + d2.ano*365 
 return dias1-dias2 
} 
 
d) 
function dif(data d1,data d2) 
{ 
 int dias1,dias2; 
 dias1= d1.dia + d1.mes*30 + d1.ano*365; 
 dias2= d2.dia + d2.mes*30 + d2.ano*365; 
 return dias1-dias2; 
} 
 
e) N.D.A. 
 
 
 
5) Considerando a função distância abaixo, qual estrutura pode corresponder à estrutura 
Cidades. 
 
inteiro distancia (Cidades c1, Cidades c2) 
{ 
 retorne (raizQuadrada(elevaQuadrado(c1.coordenada.x-c.coordenada.x) + 
 elevaQuadrado(c1.coordenada.y-c.coordenada.y))); 
} 
 
a) 
estrutura cidades 
{ 
 caracter nome[30]; 
 real coordenadas; 
 inteiro habitantes; 
}; 
 
b) 
estrutura cidades 
{ 
 caracter nome[30]; 
 coord coordenadas; 
 inteiro habitantes; 
}; 
 
estrutura coord 
{ 
 inteiro x,y; 
 
c) 
estrutura cidades 
{ 
 caracter nome[30]; 
 real coordenadas; 
 inteiro habitantes; 
}; 
 
estrutura coord 
 
 
{ 
 inteiro x,y; 
}; 
 
d) 
estrutura cidades 
{ 
 caracter nome[30]; 
 coord coordenadas; 
 inteiro habitantes; 
}; 
 
 
f) N.D.A. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Apresentação 10 – Recursividade 
 
1) O que é representado pelas expressões a seguir? 
 
 s = 0, se n = 0; 
 s = 1, se n = 1; 
 s = n*(n+1)/2, se n > 1; 
 
 - Obs.: n >= 0. 
 
a) soma de ‘n’ elementos. 
b) soma dos ‘n’ primeiros números naturais. 
c) os primeiros ‘n’ números naturais. 
d) todas as anteriores. 
e) nenhuma das anteriores. 
 
2) Qual função recursiva é similar ao fragmento iterativo a seguir? 
 
for(i=0 ; i<tam ; i++) //tam é o tamanho do vetor 
{ 
 Soma = soma + vet[i]; 
} 
 
a) 
int func_rec(int vet[], int tam) 
{ 
 if(tam >= 0) 
 return vet[0] + func_rec(vet, tam - 1); 
} 
 
b) 
int func_rec(int vet[], int tam) 
{ 
 if(tam == 0) 
 return 1; 
 else 
 return vet[tam] + func_rec(vet, tam + 1); 
} 
 
c) 
int func_rec(int vet[], int tam) 
{ 
 if(tam >= 0) 
 return vet[tam] + func_rec(vet, tam - 1); 
} 
 
d) 
int func_rec(int vet[], int tam) 
{ 
 if(tam != 0) 
 return vet[tam] + func_rec(vet, tam + 1); 
} 
 
 
 
e) 
int func_rec(int vet[], int tam) 
{ 
 if(tam >= 0) 
 return vet[tam] + func_rec(vet, tam); 
} 
 
 
 
3) Qual é a funcionalidade do código a seguir? 
 
int func_rec (int n) 
{ 
 if(n == 1) 
 return 1; 
 else 
 return (n * func_rec(n - 1)); 
} 
 
a) somatório 
b) produtório 
c) potenciação 
d) fatorial 
e) radiciação 
 
4) Qual das funções a seguir calculará corretamente o enésimo termo da sequência de 
Fibonacci? 
Obs.: Sequência (ou série) de Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89... 
a) 
inteiro fib(inteiro num) 
{ 
 se(num <= 0) então 
 imprime(“Valor digitado é inválido para posição em fibonacci. ”); 
 senão 
 { 
 se(num=1 ou num=2) então 
 retorne 0; 
 senão 
 retorne fib(num-1) + fib(num-2); 
 } 
} 
 
b) 
inteiro fib(inteiro num) 
{ 
 se(num <= 0) então 
 imprime(“Valor digitado é inválido para posição em fibonacci. ”); 
 senão 
 
 
 { 
 se(num=1) então 
 retorne 1; 
 senão 
 retorne fib(num-1) + fib(num-2); 
 } 
} 
 
 
c) 
inteiro fib(inteiro num) 
{ 
 se(num <= 0) então 
 imprime(“Valor digitado é inválido para posição em fibonacci. ”); 
 senão 
 { 
 se(num=2 ou num=3) então 
 retorne 1; 
 senão 
 retorne fib(num-1) + fib(num-2); 
 } 
} 
 
d) 
inteiro fib(inteiro num) 
{ 
 se(num <= 0) então 
 imprime(“Valor digitado é inválido para posição em fibonacci. ”); 
 senão 
 { 
 se(num=1 ou num=2) então 
 retorne1; 
 senão 
 retorne fib(num-1) + fib(num-2); 
 } 
} 
 
 
e) 
inteiro fib(inteiro num) 
{ 
 se(num <= 0) então 
 imprime(“Valor digitado é inválido para posição em fibonacci. ”); 
 senão 
 { 
 se(num=1 ou num=2) então 
 retorne 1; 
 senão 
 retorne fib(num) + fib(num-1); 
 } 
} 
 
 
5) O que será impresso no algoritmo a seguir? 
 
//Obs.: A variável “indice” recebe a última posição do vetor, no início. 
 
int func_rec(int vet[], int indice) 
{ 
 int x; 
 if(tam == 0) 
 
 
 return vet[0]; 
 else 
 { 
 x = func_rec(vet,tam-1); 
 if(x < vet[n]) 
 return vet[n]; 
 else 
 return x; 
 } 
} 
 
int main() 
{ 
 int vet[6] = {13, -8, 4, 9, -6, 8}; 
 printf("%d", func_rec(vet,5)); 
 return 0; 
} 
 
a) 13, -8, 4, 9, -6, 8. 
b) -8. 
c) 8, -6, 9, 4, -8, 13. 
d) “nada será impresso”. 
e) 13. 
 
6) O que será impresso no código a seguir, considerando como entradas x = 8 e y = 3: 
inteiro func_rec(inteiro x, inteiro y) 
{ 
 se(x = y) então 
 imprima(x); 
 senão 
 { 
 func_rec(x-1,y); 
 imprima(x); 
 } 
} 
 
a) 3, 4, 5, 6, 7, 8. 
b) 4, 5, 6, 7, 8. 
c) 7, 6, 5, 4, 3. 
d) 3, 4, 5, 6, 7. 
e) 8, 7, 6, 5, 4, 3. 
 
 
 
 
 
7) O que será impresso no código a seguir, considerando como entradas x = 8 e y = 3: 
inteiro func_rec(inteiro x, inteiro y) 
{ 
 se(x = y) então 
 imprima(x); 
 senão 
 { 
 imprima(x); 
 func_rec(x-1,y); 
 } 
} 
 
a) 3, 4, 5, 6, 7, 8. 
b) 4, 5, 6, 7, 8. 
c) 7, 6, 5, 4, 3. 
d) 3, 4, 5, 6, 7. 
e) 8, 7, 6, 5, 4, 3. 
 
8) Para a função abaixo, indique em quais linhas estão definidas as bases da recursão: 
1 int mdc (int n, int m) 
2 { 
3 if((n>=m) && ((n%m)==0)) 
4 return(m); 
5 else 
6 { 
7 if (n<m) 
8 return (mdc(m,n)); 
9 else 
10 return (mdc(m,n%m)); 
11 } 
12 } 
 
a) linhas 5 e 9. 
b) linhas 7, 8, 9 e 10. 
c) linhas 3 e 4. 
d) linhas 3 e 7. 
e) linhas 8 e 10. 
 
9) Quais devem ser as linhas de código a serem colocadas nas lacunas a seguir para que a 
função retorne o valor correto? A função deve retornar a soma dos elementos pares entre os 2 
números digitados pelo usuário, sendo que o primeiro (a) deve ser menor que o segundo (b). 
 
 
obs.: Se o usuário digitar 4 e 6, por exemplo, deve retornar 4 + 6 = 10. Se ele digitar 4 e 4, 
deve retornar 4.. Se ele digitar 3 e 5, também deve retornar 4. 
int soma_pares(int a, int b) 
{ 
 if(a > b) 
 return 0; 
 else 
 { 
 if(a == b) 
 return a; 
 else 
 { 
 if(a % 2 == 0) 
 ??????????????????????; 
 else 
 ??????????????????????; 
 } 
 } 
} 
 
a) 
 soma_pares(a+2, b); 
return soma_pares(a+1, b); 
b) 
return a + soma_pares(a+1, b); 
soma_pares(a+2, b); 
c) 
return a + soma_pares(a, b+2); 
return a + soma_pares(a, b+1); 
d) 
return soma_pares(a+2, b); 
return soma_pares(a+1, b); 
e) 
return a + soma_pares(a+2, b); 
soma_pares(a+1, b); 
 
 
 
 
 
 
 
 
 
 
10) O que a função recursiva a seguir faz? 
// obs.: a variável n, inicialmente, recebe o maior índice possível do vetor: “tam-1” 
int x(int a[], int n) 
{ 
 int aux; 
 if(n == 0) 
 return 0; 
 else 
 { 
 if(a[n] > a[n-1]) 
 { 
 aux = a[n]; 
 a[n] = a[n-1]; 
 a[n-1] = aux; 
 } 
 x(a,n-1); 
 } 
} 
 
a) Ordena o vetor de forma crescente. 
b) Ordena o vetor de forma decrescente. 
c) Puxa o menor elemento do vetor pro índice ‘0’. 
d) Puxa o maior elemento do vetor pro índice ‘0’. 
e) Puxa o menor elemento do vetor pro último índice. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Gabarito 
Apresentação 08 – Matrizes 
1. D 
2. C 
3. B 
4. E 
5. C 
6. A 
7. B 
8. A 
9. D 
10. A 
 
Apresentação 09 – Estruturas de Dados Heterogêneas 
1. C 
2. D 
3. C 
4. D 
5. B 
 
 
Apresentação 10 – Recursividade 
1. B 
2. C 
3. D 
4. D 
5. E 
6. A 
7. E 
8. C 
9. E 
10. D 
 
 
 
 
 
 
Equipe de alunos responsável pelo desenvolvimento desta lista: 
• DIEGO RAMALHO DE OLIVEIRA (Coordenador do grupo) 
• RAMON ABRITTA AGUIAR SANTOS 
• VITOR MENDES MANSUR 
• VICTOR CALIXTO DE SOUZA 
• GÉFERSON FELIPE DE SOUZA 
• MARIA RIBEIRO DAIBERT 
• RENATA MENDES ROSA DA SILVA

Outros materiais