Escolar Documentos
Profissional Documentos
Cultura Documentos
Correta 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:
Corretaa. As variáveis "i" e “j” não precisavam ser um ponteiro.
Respostas:
Corretaa. 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 da resposta: Resposta: A
Comentário: a variável "temp" não precisava ser um ponteiro, já que apenas 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;
*j = temp;
}
Pergunta 2
0,1 em 0,1 pontos
void main ()
{
int a[ ] = {1, 3, 5};
incr_vetor(a, 3);
printf("%d %d %d\n", a[0], a[1], a[2]);
}
Resposta Selecionada:
Corretaa. 2 4 6.
Respostas:
Corretaa. 2 4 6.
b. 0 1 2.
c. 1 2 3.
d. 1 3 5.
e. 3 6 9.
Comentário 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
Resposta Selecionada:
Corretab. 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);
Corretab. 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);
Comentário 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
#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:
Corretae. 1, 1, 120.
Respostas:
a. 0, 1, 5.
b. 1, 2, 3.
c. 5, 10, 15.
d. 10, 20, 120.
Corretae. 1, 1, 120.
Comentário 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
#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:
Corretad. 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
Corretad. Zero; 1 Zero; 5 4 3 2 1 Zero
e. Zero; Zero 1; Zero 1 2 3 4 5
Comentário 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 forma recursiva pelo código f2(n-1).
Pergunta 8
0,1 em 0,1 pontos
#include <stdio.h>
void main(){
int a, b;
printf("Digite um valor inteiro:");
scanf("%d", &a);
b= func(a);
printf ("%d \n", b);
}
Resposta Selecionada:
Corretaa. 0, 1, 15.
Respostas:
Corretaa. 0, 1, 15.
b. 0, 0, 3.
c. 1, 1, 15.
d. 1, 2, 3.
e. 3, 2, 1.
Comentário 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
#include <stdio.h>
void main(){
int a, b;
printf("Digite um valor inteiro:");
scanf("%d", &a);
b= func(a);
printf ("%d \n", b);
}
Resposta Selecionada:
Corretab. 0, 3, 45.
Respostas:
a. 0, 1, 15.
Corretab. 0, 3, 45.
c. 1, 1, 15.
d. 0, 3, 15.
e. 1, 3, 9.
Comentário 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,1 em 0,1 pontos
#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:
Corretac. 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.
Corretac. 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 da resposta: Resposta: C
Comentário: as variáveis “a” e “b” não precisaria ser ponteiros na atribuição 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);
}