·

Análise e Desenvolvimento de Sistemas ·

Programação

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta
Equipe Meu Guru

Prefere sua atividade resolvida por um tutor especialista?

  • Receba resolvida até o seu prazo
  • Converse com o tutor pelo chat
  • Garantia de 7 dias contra erros

Texto de pré-visualização

Pergunta 1\nA função abaixo (trecho de um programa) deve trocar os valores entre duas variáveis, mas possui um erro.\n\void troca(int *p, int *q) {\n int temp;\n *temp = *p;\n *p = *q;\n *q = temp;\n}\n\nA alternativa que identifica o erro é:\n\nRespostas:\nA. As variáveis \"p\" e \"q\" não precisavam ser um ponteiro.\nB. A variável \"temp\" deveria ser um contador.\nC. A variável \"*p\" deveria aumentar o valor de \"p\".\nD. A variável \"temp\" não precisava ser um ponteiro.\n\nFeedback da resposta:\nResposta: a resposta correta é a alternativa D.\nA variável \"temp\" não precisa ser um ponteiro, já que apenas precisa armazenar um valor inteiro, sem precisar apontar para algum lugar. O código correto seria:\n\nvoid troca(int *p, int *q) {\n int temp;\n temp = *p;\n *p = *q;\n *q = temp;\n}\n\nPergunta 2\nAnalise o programa contido e identifique a alternativa que melhor descreve o que está executado por ele.\n\nchar *caracteres(char *s1, char *s2) {\n int i = 0, j = 0, n = 0;\n for (i = 0; s1[i] != '\\0'; i++) {\n for (j = 0; s2[j] != '\\0'; j++) {\n if (s1[i] == s2[j]) {\n break;\n }\n }\n if (s2[j] == '\\0') {\n caracteres[n++] = s1[i];\n }\n }\n caracteres[n] = '\\0';\n return caracteres;\n}\n\nint main() {\n int a[1] = {1, 3, 5};\n int *vetor = incremento(a);\n printf(\"%d %d %d\\n\", vetor[0], vetor[1], vetor[2]);\n return 0;\n}\n\nA saída do programa será:\n\nRespostas Selecionadas:\nA. 2 4 6\nB. 2 4 9\nC. 1 2 3\nD. 1 3 5\nE. 3 5 9\n\nFeedback da resposta:\nResposta: A resposta correta é a alternativa A.\nA saída do programa é 2 4 6 pois os elementos do vetor serão incrementados dentro da função.\n\nPergunta 3\nPara declarar um vetor, para dimensões N, é necessário saber de antemão quantos elementos deverão compô-lo. Temos de prever o número máximo de elementos que o vetor poderá armazenar durante o processo da codificação.\n\nCom base nesses dados, adote as afirmações seguintes:\nI. O pré-dimensionamento do vetor é um fator que limita a programação.\nII. Podemos superdimensionar o vetor, pois nunca estaremos sujeitos a ter falta de memória.\nIII. Podemos reservar a memória, isto é, solicitar ao programa que aloque dinamicamente um espaço na memória durante sua execução.\n\nEstá correto apenas o que se afirma em:\n\nRespostas Selecionadas:\nA. I, II apenas\nB. I, III apenas\nC. II, III apenas\nD. I e II apenas\nE. I, II e III apenas\n\nFeedback:\nResposta: A resposta correta é a alternativa E.\nPara o problema de prever o número máximo de elementos, uma solução será superdimensionar o vetor para tentar contornar esta falha de elementos fora da execução do programa; mas isso acentua uma despreocupação de memória, o que é inaceitável em diversas aplicações, como as relativas portais, em que sempre estamos sujeitos a ter falta de memória.\n\nPergunta 4\nDado o programa abaixo e considerando as entradas 0, 1 e 2, qual será a saída apresentada para cada entrada respectivamente?\n\nint f(int n) {\n if (n == 0)\n return 1;\n else\n return (A + f(n - 1));\n}\n\nint main() {\n int a;\n printf(\"Digite um valor inteiro:\");\n scanf(\"%d\", &a);\n printf(\"%d\\n\", f(a));\n system(\"pause\");\n return 0;\n}\n\nResposta Selecionada:\nA. 1, 1, 120\nRespostas:\nA. 1, 1, 120\nB. 6, 1, 5\nC. 1, 1, 2\nD. 1, 12, 5\n\nFeedback da resposta:\nResposta: A resposta correta é a alternativa C.\nO programa executa a função f() de forma recursiva e sua saída será em n igual a 0.\n\nPergunta 5\nDado o programa abaixo e considerando as entradas 0, 1 e 2, qual será a saída apresentada para cada entrada respectivamente?\n\nvoid f(int n) {\n if (n == 0)\n printf(\"%d \\n\", n);\n else\n f(n - 1);\n}\n\nint main() {\n int i;\n printf(\"Digite um valor inteiro:\");\n scanf(\"%d\", &i);\n f(i);\n system(\"pause\");\n return 0;\n}\n\nResposta Selecionada:\nA. 0, 0, 1, 2, 3, 4, 5\nRespostas:\nA. 0, 0, 1, 2, 3, 4, 5\nB. 1, 0, 1, 2, 3, 4, 5\nC. 1, 1, 2, 3, 4, 5\nD. 0, 1, 2, 3, 4, 5\n\nFeedback da resposta:\nResposta: A resposta correta é a alternativa E.\nO programa executa a função f() de forma recursiva e sua saída será em n igual a 0. Pergunta 9\n\n0,1 em 0,1 pontos\n\nO programa abaixo deve receber uma string de caracteres e uma letra. Resultar: uma função que devolve um vetor de inteiros contendo as posições (índices no vetor da string onde a letra foi encontrada e um inteiro contendo o tamanho do vetor criado (total de letras quais encontradas).\n\n#include <stdio.h>\n#include <stdlib.h>\n\nint acha_caractere(char *str, char letra, int *pn) {\n int *indices = NULL;\n int n = 0, i;\n for (i = 0; str[i] != '\\0'; i++) {\n if (str[i] == letra) {\n indices = (int *) realloc(indices, (n + 1) * sizeof(int));\n indices[n++] = i;\n }\n }\n *pn = n;\n return indices;\n}\n\nint main() {\n int a;\n int *indices;\n printf(\"Digite um valor inteiro: \");\n scanf(\"%d\", &a);\n // funca...\n }\n printf(\"\\n\");\n system(\"pause\");\n return 0;\n} Pergunta 8\n\n0,1 em 0,1 pontos\n\nDado o programa acima o considerando as entradas 0, 1 e 5, qual será a saída apresentada para cada entrada respectivamente?\n\n#include <stdio.h>\n\nint func(int n) {\n if (n == 0)\n return 0;\n return n + func(n - 1);\n}\n\nint main() {\n int a;\n printf(\"Digite um valor inteiro:\");\n scanf(\"%d\", &a);\n // funca...\n }\n printf(\"\\n\");\n system(\"pause\");\n return 0;\n}\n\nResposta Selecionada: b. 0, 3, 6\nRespostas:\n a. 0, 1, 15\n b. 0, 3, 6\n c. 1, 1, 15\n d. 0, 3, 45\nFeedback da resposta: A resposta correta é a alternativa B.\nO programa executa a função func de forma recursiva e sua saída será em n igual a 0. Pergunta 10\n\n0,1 em 0,1 pontos\n\nO programa abaixo deveria identificar entre duas palavras qual vem antes no dicionário:\n\n#include <stdio.h>\n#include <string.h>\n\nint main()\n{\n char *a, *b;\n a = \"abacate\";\n b = \"ab\";\n if (strcmp(a, b) < 0)\n printf(\"%s vem antes de %s no dicionário\", a, b);\n else\n printf(\"%s vem depois de %s no dicionário\", a, b);\n printf(\"\\n\");\n system(\"pause\");\n return 0;\n}\n\nA alternativa apresenta o erro a:\n\nResposta Selecionada: C as variáveis \"a\" e \"b\" não precisariam ser pônteros na atribuição de valores.\nRespostas:\n a. O teste de condicional pode ser correto que.\n b. Existe falhando das chaves para identificar os blocos no condicional.\n c. As variáveis \"a\" e \"b\" não precisariam ser pônteros na atribuição de valores.\n\no programa não:\n\nFeedback da resposta: A resposta correta é a alternativa C.\nAs variáveis \"a\" e \"b\" não precisam ser ponteiros na atribuição de valores. Funcionaliza com a modificação abaixo:\n\n#include <stdio.h>\n#include <string.h>\n\nint main()\n{\n char a[] = \"abacate\";\n char b[] = \"ab\";\n if (strcmp(a, b) < 0)\n printf(\"%s vem antes de %s no dicionário\", a, b);\n else\n printf(\"%s vem depois de %s no dicionário\", a, b);\n printf(\"\\n\");\n system(\"pause\");\n return 0;\n}