Você está na página 1de 9

04/11/2022 16:59 Revisar envio do teste: QUESTIONÁRIO UNIDADE VI – ...

UNIP EAD CONTEÚDOS ACADÊMICOS BIBLIOTECAS MURAL DO ALUNO TUTORIAIS

LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO 6654-120_57501_R_E1_20222_03


CONTEÚDO
Revisar envio do teste: QUESTIONÁRIO UNIDADE VI

Usuário Evandro do Carmo Teodorio


Curso LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO
Teste QUESTIONÁRIO UNIDADE VI
Iniciado 28/10/22 21:29
Enviado 28/10/22 21:30
Status Completada
Resultado da 1 em 1 pontos
 
tentativa
Tempo decorrido 1 minuto
Resultados Todas as respostas, Respostas enviadas, Respostas corretas, Comentários, Perguntas
exibidos respondidas incorretamente

Pergunta 1 0,1 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: a.
As variáveis "i" e “j” não precisavam 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.

Comentário Resposta: A

da Comentário: a variável "temp" não precisava ser um ponteiro, já que apenas


resposta: precisa armazenar um valor inteiro, sem precisar apontar para algum lugar.
O código correto seria:

void troca (int *i, int *j) {


 int temp;
 temp = *i;
 *i = *j;

https://ava.ead.unip.br/webapps/assessment/review/review.jsp?attempt_id=_87677070_1&course_id=_242768_1&content_id=_2955741_1&outc… 1/9
04/11/2022 16:59 Revisar envio do teste: QUESTIONÁRIO UNIDADE VI – ...

 *j = temp;
}

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 c.
Selecionada: 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.

https://ava.ead.unip.br/webapps/assessment/review/review.jsp?attempt_id=_87677070_1&course_id=_242768_1&content_id=_2955741_1&outc… 2/9
04/11/2022 16:59 Revisar envio do teste: QUESTIONÁRIO UNIDADE VI – ...

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.

Comentário Resposta: C

da Comentário: a função recebe por parâmetro duas cadeias s1 e s2 (ponteiros


resposta: 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.

Comentário Resposta: A

da Comentário: o programa possui uma função incr_vetor(int *v , int tam


) que
resposta: 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.

https://ava.ead.unip.br/webapps/assessment/review/review.jsp?attempt_id=_87677070_1&course_id=_242768_1&content_id=_2955741_1&outc… 3/9
04/11/2022 16:59 Revisar envio do teste: QUESTIONÁRIO UNIDADE VI – ...

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.

Comentário Resposta: E

da Comentário: visando a resolver o problema de “prever” o número máximo de


resposta: 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

https://ava.ead.unip.br/webapps/assessment/review/review.jsp?attempt_id=_87677070_1&course_id=_242768_1&content_id=_2955741_1&outc… 4/9
04/11/2022 16:59 Revisar envio do teste: QUESTIONÁRIO UNIDADE VI – ...

comandos:

Resposta Selecionada: indices = (int *) malloc(n* sizeof(int));

b.
   indices = acha_caractere(frase, 'a', &n);

Respostas: indices = (int) malloc(n sizeof(int));

a.
   indices = acha_caractere(frase, 'a', &n);

indices = (int *) malloc(n* sizeof(int));

b.
   indices = acha_caractere(frase, 'a', &n);

indices = (int *) malloc(n* sizeof(int));

c.
   indices = acha_caractere(frase, 'a', n);

indices = (int *) malloc(n* sizeof(int));

d.
   indices = acha_caractere(frase, 'a', *n);

indices = (int ) malloc(n sizeof(int));

e.
   indices = acha_caractere(frase, 'a', n);

Comentário Resposta: B

da Comentário: o programa possui uma função – linhas 4 a 20. Porém, na linha


resposta: 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>

https://ava.ead.unip.br/webapps/assessment/review/review.jsp?attempt_id=_87677070_1&course_id=_242768_1&content_id=_2955741_1&outc… 5/9
04/11/2022 16:59 Revisar envio do teste: QUESTIONÁRIO UNIDADE VI – ...

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.

Comentário Resposta: E

da Comentário: o programa executa a função f1() de forma recursiva retornando


resposta: 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;

https://ava.ead.unip.br/webapps/assessment/review/review.jsp?attempt_id=_87677070_1&course_id=_242768_1&content_id=_2955741_1&outc… 6/9
04/11/2022 16:59 Revisar envio do teste: QUESTIONÁRIO UNIDADE VI – ...

 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

Comentário Resposta: D

da Comentário: o programa executa a função f2() de forma recursiva retornando


resposta: 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 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.

https://ava.ead.unip.br/webapps/assessment/review/review.jsp?attempt_id=_87677070_1&course_id=_242768_1&content_id=_2955741_1&outc… 7/9
04/11/2022 16:59 Revisar envio do teste: QUESTIONÁRIO UNIDADE VI – ...

Comentário Resposta: A

da Comentário: o programa executa a função func() de forma recursiva


resposta: 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.

Comentário Resposta: B

da Comentário: o programa executa a função func() de forma recursiva


resposta: 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,1 em 0,1 pontos

O programa realiza comparações entre duas strings

https://ava.ead.unip.br/webapps/assessment/review/review.jsp?attempt_id=_87677070_1&course_id=_242768_1&content_id=_2955741_1&outc… 8/9
04/11/2022 16:59 Revisar envio do teste: QUESTIONÁRIO UNIDADE VI – ...

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 c.
Selecionada: As variáveis “a” e “b” não precisavam ser ponteiros na atribuição de
valores.

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.

Comentário Resposta: C

da Comentário: as variáveis “a” e “b” não precisaria ser ponteiros na atribuição


resposta: de valores, tendo dessa forma um erro de sintaxe. Uma solução desse
problema seria:

#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);

Sexta-feira, 4 de Novembro de 2022 16h57min40s GMT-03:00 ←


OK

https://ava.ead.unip.br/webapps/assessment/review/review.jsp?attempt_id=_87677070_1&course_id=_242768_1&content_id=_2955741_1&outc… 9/9

Você também pode gostar