·

Análise e Desenvolvimento de Sistemas ·

Programação

Send your question to AI and receive an answer instantly

Ask Question

Preview text

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}