Buscar

QUESTIONÁRIO UNIDADE VI

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 9 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 9 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 9 páginas

Prévia do material em texto

· Pergunta 1
0 em 0,1 pontos
	
	
	
	 A função troca() recebe dois ponteiros e faz a troca dos valores entre duas variáveis, porém esse código possui um erro. Assinale a alternativa que corresponda ao erro nesta função:
void troca (int *i, int *j)
{
 int *temp;
 *temp = *i;
 *i = *j;
 *j = *temp;
}
	
	
	
	
		Resposta Selecionada:
	d. 
A variável "temp" não precisava ser um ponteiro.
	Respostas:
	a. 
As variáveis "i" e “j” não precisavam ser um ponteiro.
	
	b. 
A variável “i” deveria ser um contador.
	
	c. 
A variável “j” deveria acumular o valor de “i”.
	
	d. 
A variável "temp" não precisava ser um ponteiro.
	
	e. 
Não existe nenhum erro na função.
	
	
	
· Pergunta 2
0,1 em 0,1 pontos
	
	
	
	Analise a função caracteres() e identifique a alternativa que melhor descreve a tarefa executada por ela. Faça um teste manual para compreender a lógica do programa.
 
char * caracteres(char *s1, char *s2) {
  int i, j, w, n = 0, encontrado;
  char *s3;
  for (i = 0; s1[i] != '\0'; i++) {
     for (j = 0; s2[j] != '\0'; j++) {
        if (s1[i] == s2[j]) {
            n++;
            break;
        }
     }
  }
  s3 = malloc((n + 1) * sizeof(char));
  n = 0;
  for (i = 0; s1[i] != '\0'; i++) {
      for (j = 0; s2[j] != '\0'; j++) {
          if (s1[i] == s2[j]) {
    encontrado = 0;
    for (w = 0; w < n; w++) {
         if (s3[w] == s1[i]) {
    encontrado = 1;
    break;
         }  
     }
   if (encontrado == 0) {
      s3[n] = s1[i];
      n++;
      break;
   }
   }  
     }
  }  
   s3[n] = '\0';
   return s3;
}
	
	
	
	
		Resposta Selecionada:
	c. 
Recebe por parâmetro duas cadeias s1 e s2 e retorna uma nova cadeia s3 que contém todos os caracteres que aparecem em s1 e em s2.
	Respostas:
	a. 
Recebe por parâmetro duas cadeias s1 e s2 e retorna uma nova cadeia s3 que contém todas as vogais que aparecem em s1 e em s2.
	
	b. 
Recebe por parâmetro duas cadeias s1 e s2 e retorna uma nova cadeia s3 que contém todas as consoantes que aparecem em s1 e em s2.
	
	c. 
Recebe por parâmetro duas cadeias s1 e s2 e retorna uma nova cadeia s3 que contém todos os caracteres que aparecem em s1 e em s2.
	
	d. 
Lê duas cadeias s1 e s2 e retorna uma nova cadeia s3 que é a maior cadeia entre s1 e em s2.
	
	e. 
Lê duas cadeias s1 e s2 e retorna uma nova cadeia s3 que é a menor cadeia entre s1 e em s2.
	Feedback da resposta:
	Resposta: C
Comentário: a função recebe por parâmetro duas cadeias s1 e s2 (ponteiros para char) e retorna uma nova cadeia s3 (ponteiro para char), concatenando as duas cadeias em uma só, ou seja, juntando todos os caracteres de s1 e de s2 em s3.
	
	
	
· Pergunta 3
0,1 em 0,1 pontos
	
	
	
	Analise o programa escrito em Linguagem C que possui uma função incr_vetor() que recebe um ponteiro para um inteiro e um inteiro. Assinale a alternativa que apresenta a saída correta do programa:
#include <stdio.h>
 
void incr_vetor (int *v , int tam) {
 int i;
 for (i = 0; i < tam; i++)
 v[i]++;
}
 
void main ()
{
 int a[ ] = {1, 3, 5};
 incr_vetor(a, 3);
 printf("%d %d %d\n", a[0], a[1], a[2]); 
}
	
	
	
	
		Resposta Selecionada:
	a. 
2 4 6.
	Respostas:
	a. 
2 4 6.
	
	b. 
0 1 2.
	
	c. 
1 2 3.
	
	d. 
1 3 5.
	
	e. 
3 6 9.
	Feedback da resposta:
	Resposta: A
Comentário: o programa possui uma função incr_vetor(int *v , int tam ) que recebe um ponteiro para um inteiro e um inteiro, tendo como saída do programa os valores 2 4 6, pois os elementos do vetor serão incrementados dentro da função.
	
	
	
· Pergunta 4
0,1 em 0,1 pontos
	
	
	
	Ao declarar um vetor, para dimensioná-lo, é necessário saber de antemão quantos elementos deveriam compô-lo. Temos de prever o número máximo de elementos no vetor durante o processo da codificação.
 
Com base nesses dados, avalie as afirmações seguintes:
I. O predimensionamento do vetor é um fator que limita a programação.
II. Podemos superdimensionar o vetor, pois nunca estamos sujeitos a ter falta de memória.
III. Podemos reservar a memória, isto é, solicitar ao programa que aloque dinamicamente um espaço na memória durante sua execução.
 
É correto apenas o que se afirma em:
	
	
	
	
		Resposta Selecionada:
	e. 
I e III, apenas.
	Respostas:
	a. 
I, apenas.
	
	b. 
II, apenas.
	
	c. 
III, apenas.
	
	d. 
I e II, apenas.
	
	e. 
I e III, apenas.
	Feedback da resposta:
	Resposta: E
Comentário: visando a resolver o problema de “prever” o número máximo de elementos em um vetor, uma solução seria superdimensionar o seu tamanho para tentar contornar essa falta de elementos livres durante a execução do programa. Porém, isso acarreta desperdício de memória, o que é inaceitável em diversas aplicações, principalmente nos aplicativos portáteis, em que sempre estamos sujeitos a ter falta de memória.
	
	
	
· Pergunta 5
0,1 em 0,1 pontos
	
	
	
	Considere o programa a seguir escrito em Linguagem C que deve receber uma string
de caracteres e uma letra. Para isso, o programa possui uma função que devolve um vetor de inteiros contendo as posições (índices no vetor da string) em que a letra foi encontrada e um inteiro contendo o tamanho do vetor criado (total de letras iguais encontradas). Para que o programa execute corretamente a sua função, é preciso adicionar comandos nas linhas 11 e 25, respectivamente. Assinale a alternativa que apresenta corretamente esses comandos:
	
	
	
	
		Resposta Selecionada:
	b. 
indices = (int *) malloc(n* sizeof(int));
    indices = acha_caractere(frase, 'a', &n);
	Respostas:
	a. 
indices = (int) malloc(n sizeof(int));
    indices = acha_caractere(frase, 'a', &n);
	
	b. 
indices = (int *) malloc(n* sizeof(int));
    indices = acha_caractere(frase, 'a', &n);
	
	c. 
indices = (int *) malloc(n* sizeof(int));
    indices = acha_caractere(frase, 'a', n);
	
	d. 
indices = (int *) malloc(n* sizeof(int));
    indices = acha_caractere(frase, 'a', *n);
	
	e. 
indices = (int ) malloc(n sizeof(int));
    indices = acha_caractere(frase, 'a', n);
	Feedback da resposta:
	Resposta: B
Comentário: o programa possui uma função – linhas 4 a 20. Porém, na linha 11 é preciso alocar memória para os índices e na linha 25 chamar a função acha_caractere(), passando as informações necessárias (frase, 'a', &n) por parâmetro, retornando os índices – linha 19.
	
	
	
· Pergunta 6
0,1 em 0,1 pontos
	
	
	
	O programa a seguir tem como objetivo calcular o fatorial de um número n. Considere as entradas 0, 1 e 5 e assinale a alternativa que apresenta corretamente a saída para cada uma das entradas.
 
#include <stdio.h>
 
int f1(int n)
{
   if (n == 0)
       return (1);
   else
       return(n * f1(n-1));
}
 
void main(){
 int a, b;
 printf("Digite um valor inteiro:");
 scanf("%d", &a);
 b = f1(a);
 printf("%d \n", b);
}
	
	
	
	
		Resposta Selecionada:
	e. 
1, 1, 120.
	Respostas:
	a. 
0, 1, 5.
	
	b. 
1, 2, 3.
	
	c. 
5, 10, 15.
	
	d. 
10, 20, 120.
	
	e. 
1, 1, 120.
	Feedback da resposta:
	Resposta: E
Comentário: o programa executa a função f1() de forma recursiva retornando com o resultado quando o n foi igual a zero. Enquanto o valor de n for diferente de zero, a função é chamada de forma recursiva pelo código return(n * f1(n-1));
	
	
	
· Pergunta 7
0,1 em 0,1 pontos
	
	
	
	O programa a seguir tem como objetivo calcular o fatorial de um número n. Considere as entradas 0, 1 e 5 e assinale a alternativa que apresenta corretamente a saída para cada uma das entradas.
 
#include <stdio.h>
 
void f2(int n)
{
 if (n == 0)
     printf("zero ");
 else
 {
     printf("%d ", n);
     f2(n-1);
 }
}
 
void main(){
 int a;
 printf("Digite um valor inteiro:");
 scanf("%d", &a);
 f2(a);
}
	
	
	
	
		Resposta Selecionada:
	d. 
Zero; 1 Zero;  5 4 3 2 1 Zero
	Respostas:
	a. 
0; 0 1; 0 1 2 3 4 5
	
	b. 
0; 1 0; 5 4 3 2 1 0
	
	c. 
1; 1 2; 1 2 3 4 5
	
	d. 
Zero; 1 Zero;  5 4 3 2 1 Zero
	
	e. 
Zero; Zero 1; Zero 1 2 3 4 5
	Feedback da resposta:
	Resposta: D
Comentário: o programa executa a função f2() de forma recursiva retornando com o resultado quando o n foi igual a zero. Enquanto o valor de n for diferente de zero, a função é chamada de formarecursiva pelo código f2(n-1).
	
	
	
· Pergunta 8
0,1 em 0,1 pontos
	
	
	
	O programa a seguir tem como objetivo calcular o fatorial de um número n. Considere as entradas 0, 1 e 5 e assinale a alternativa que apresenta corretamente a saída para cada uma das entradas.
 
#include <stdio.h>
 
int func (int n)
{
   if (n == 0)
 return(0);
return(n + func(n-1));
}
 
void main(){
 int a, b;
 printf("Digite um valor inteiro:");
 scanf("%d", &a);
 b= func(a);
 printf ("%d \n", b);
}
	
	
	
	
		Resposta Selecionada:
	a. 
0, 1, 15.
	Respostas:
	a. 
0, 1, 15.
	
	b. 
0, 0, 3.
	
	c. 
1, 1, 15.
	
	d. 
1, 2, 3.
	
	e. 
3, 2, 1.
	Feedback da resposta:
	Resposta: A
Comentário: o programa executa a função func() de forma recursiva retornando com o resultado quando o n foi igual a zero. Enquanto o valor de n for diferente de zero, a função é chamada de forma recursiva pelo código return(n + func(n-1)).
	
	
	
· Pergunta 9
0,1 em 0,1 pontos
	
	
	
	O programa a seguir tem como objetivo calcular o fatorial de um número n. Considere as entradas 0, 1 e 5 e assinale a alternativa que apresenta corretamente a saída para cada uma das entradas.
 
#include <stdio.h>
 
int func (int n)
{
 if (n == 0)
     return(0);
 return(3*n + func(n-1));
}
 
void main(){
 int a, b;
 printf("Digite um valor inteiro:");
 scanf("%d", &a);
 b= func(a);
 printf ("%d \n", b);
}
	
	
	
	
		Resposta Selecionada:
	b. 
0, 3, 45.
	Respostas:
	a. 
0, 1, 15.
	
	b. 
0, 3, 45.
	
	c. 
1, 1, 15.
	
	d. 
0, 3, 15.
	
	e. 
1, 3, 9.
	Feedback da resposta:
	Resposta: B
Comentário: o programa executa a função func() de forma recursiva retornando com o resultado quando o n foi igual a zero. Enquanto o valor de n for diferente de zero, a função é chamada de forma recursiva pelo código return(3*n + func(n-1)).
	
	
	
· Pergunta 10
0 em 0,1 pontos
	
	
	
	O programa realiza comparações entre duas strings
verificando qual das duas aparece primeiro no dicionário, porém há um erro neste código. Assinale a alternativa que apresenta o erro no programa a seguir:
 
#include <stdio.h>
#include <string.h>
 
void main()
{
 char *a, *b;
 *a = "abacate";
 *b = "uva";
 if (strcmp(a, b) < 0 )
      printf ("%s vem antes de %s no dicionário \n", a, b);
 else
      printf ("%s vem depois de %s no dicionário \n", a, b);
}
	
	
	
	
		Resposta Selecionada:
	d. 
As variáveis “a” e “b” deveriam ser declaradas como string e não char.
	Respostas:
	a. 
O teste da condicional nunca pode ser menor que 0.
	
	b. 
Estão faltando as chaves para identificar os blocos na condicional.
	
	c. 
As variáveis “a” e “b” não precisavam ser ponteiros na atribuição de valores.
	
	d. 
As variáveis “a” e “b” deveriam ser declaradas como string e não char.
	
	e. 
O programa não possui erro.
	
	
	
·
 
Pergunta 1
 
0 em 0,1 pontos
 
 
 
 
 
A função
 
troca()
 
recebe dois ponteiros e faz a troca dos valores entre 
duas variáveis, porém esse código possui
 
um erro. Assinale a 
alternativa que corresponda ao erro nesta função:
 
void troca (int *i, int *j)
 
{
 
 
int *temp;
 
 
*temp = *i;
 
 
*i = *j;
 
 
*j = *temp;
 
}
 
 
 
 
Resposta
 
Selecionada:
 
d.
 
 
A
 
variável
 
"temp"
 
não
 
precisava
 
ser
 
um
 
ponteiro.
 
Respostas:
 
a.
 
 
As
 
variáveis
 
"i"
 
e
 
“j”
 
não
 
precisavam
 
ser
 
um
 
ponteiro.
 
 
b.
 
 
A
 
variável
 
“i”
 
deveria
 
ser
 
um
 
contador.
 
 
c.
 
 
A
 
variável
 
“j”
 
deveria
 
acumular
 
o
 
valor
 
de
 
“i”.
 
 
d.
 
 
A
 
variável
 
"temp"
 
não
 
precisava
 
ser
 
um
 
ponteiro.
 
 
e.
 
 
Não
 
existe
 
nenhum
 
erro
 
na
 
função.
 
 
 
 
 
·
 
Pergunta 2
 
0,1 em 0,1 pontos
 
 
 
 
Analise a função
 
caracteres()
 
e identifique a alternativa que melhor 
descrev
e a tarefa executada por ela. Faça um teste manual para 
compreender a lógica do programa.
 
 
 
char * caracteres(char *s1, char *s2) {
 
 
int i, j, w, n = 0, encontrado;
 
 
char *s3;
 
 
for (i = 0; s1[i] != '
\
0'; i++) {
 
 
 
for (j = 0; s2[j] != '
\
0'; j++) {
 
 
 
 
if (s1[i] == s2[j]) {
 
 
 
n++;
 
 
 
break;
 
 
 
}
 
 
 
}
 
 
}
 
 
s3 = malloc((n + 1) * sizeof(char));
 
 
n = 0;
 
 
for (i = 0; s1[i] != '
\
0'; i++) {
 
 
 
for (j = 0; s2[j] != '
\
0'; j++) {
 
 
 
if (s1[i] == s2[j]) {
 
 
 
 
 Pergunta 1 
0 em 0,1 pontos 
 
 
 A função troca() recebe dois ponteiros e faz a troca dos valores entre 
duas variáveis, porém esse código possui um erro. Assinale a 
alternativa que corresponda ao erro nesta função: 
void troca (int *i, int *j) 
{ 
 int *temp; 
 *temp = *i; 
 *i = *j; 
 *j = *temp; 
} 
 
Resposta 
Selecionada: 
d. 
A variável "temp" não precisava ser um ponteiro. 
Respostas: 
a. 
As variáveis "i" e “j” não precisavam ser um 
ponteiro. 
 
b. 
A variável “i” deveria ser um contador. 
 
c. 
A variável “j” deveria acumular o valor de “i”. 
 
d. 
A variável "temp" não precisava ser um ponteiro. 
 
e. 
Não existe nenhum erro na função. 
 
 
 Pergunta 2 
0,1 em 0,1 pontos 
 
 
Analise a função caracteres() e identifique a alternativa que melhor 
descreve a tarefa executada por ela. Faça um teste manual para 
compreender a lógica do programa. 
 
char * caracteres(char *s1, char *s2) { 
 int i, j, w, n = 0, encontrado; 
 char *s3; 
 for (i = 0; s1[i] != '\0'; i++) { 
 for (j = 0; s2[j] != '\0'; j++) { 
 if (s1[i] == s2[j]) { 
 n++; 
 break; 
 } 
 } 
 } 
 s3 = malloc((n + 1) * sizeof(char)); 
 n = 0; 
 for (i = 0; s1[i] != '\0'; i++) { 
 for (j = 0; s2[j] != '\0'; j++) { 
 if (s1[i] == s2[j]) {

Continue navegando