Baixe o app para aproveitar ainda mais
Prévia do material em texto
NOTA: 10 PERGUNTA 1 Em C standard , uma das funções usadas para a impressão de conteúdo na tela é o printf . Tal comando permite adequar a impressão ao tipo e ao formato da informação a ser exibida. Suponha que o usuário deseja realizar uma impressão no seguinte formato: “Valor da média = 3.21 - valor do caracter 'A' na tabela ASCII = 65 (hexa= 41)” Supondo que existam as seguintes variáveis instanciadas: float media=3.21043891; carac = 'A'; Preencha os espaços do comando com os formatos corretos: printf(“Valor da média = __ - valor do caracter '__' na tabela ASCII = __ (hexa= __)”,media,carac,carac,carac); Agora assinale a alternativa que contenha as marcações corretas. .%.2d ; %c ; %d; %x. .%.2f ; %c ; %d; %d. .%.2f ; %d ; %d; %x. .%.2f ; %c ; %d; %x. .%.2f ; %c ; %c; %c. 1 pontos PERGUNTA 2 Na interface das funções, podemos encontrar as variáveis passadas por valor e as variáveis passadas por referência. Para essa questão, analise as afirmativas abaixo: I – Na passagem por valor, as modificações realizadas internamente à função não impactam sobre o valor da variável na origem da chamada da função. II – Na passagem por referência, qualquer alteração dentro da função, automaticamente altera o valor da variável na origem pois ambas possuem o mesmo endereço de memória. III – No código: “ func(int a , float *b)”, a variável “ a” é passada por referência enquanto que a variável “ b” é passada por valor. IV – Para realizar modificações ou acessar o conteúdo de variáveis passadas por referência, deve-se usar variável precedida pelo sinal “ &” para indicar o seu conteúdo. Por exemplo, na função “ func(int a , float *b)”, para se instanciar a variável “ b”, dentro do código, usaremos, por exemplo: “ &b = 5;”. Escolha a alternativa abaixo que você julgue ser a correta: .Apenas as afirmativas II e II estão corretas. .Apenas a afirmativa III é falsa. .Apenas as afirmativas III e IV são corretas. .Todas as afirmativas são corretas. . Apenas a afirmativa IV é falsa. 1 pontos PERGUNTA 3 Para a manipulação de arquivos temos que, inicialmente, realizar a instanciação do ponteiro do arquivo por intermédio da operação de abertura. Para tanto, usa-se a função “ fopen()” passando como parâmetros o nome físico do arquivo e o modo de abertura. Para essa questão, suponha que o programa em questão, tenha em seu código, as seguintes linhas: if(! fread (&item,sizeof(tipo_do_item),1,arq)) return -1; ... if(! fwrite (&item,sizeof(tipo_do_item),1,arq)) return -2; ... Levando em conta as linhas de código acima, o fato de que o arquivo binário deve existir previamente e as suas informações deverão ser mantidas, selecione a opção que contém a forma de abertura adequada. . arq=fopen("arq.dat","a+"); . . arq=fopen("arq.dat","w+"); . . arq=fopen("arq.dat","wb+"); . . arq=fopen("arq.dat","r+"); . . arq=fopen("arq.dat","rb+"); . 1 pontos PERGUNTA 4 Sobre um ponteiro, além as operações de instanciação, podem ser realizadas operações aritméticas, como a soma e a subtração. Aplicar operações de soma ou subtração implicam no deslocamento do ponteiro. Para essa questão, suponha o seguinte código: #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int i=0,max; char *charvet; charvet=(char *)malloc(10*sizeof(char)); if(charvet==NULL) { printf("Erro de alocacao.\n"); return 0; } strcpy(charvet,"abcdefgh"); max=strlen(charvet); for(;i<max; i++) { if(i%2) printf("%c ",*charvet); charvet++; } free(charvet); return 0; } Assinale a alternativa que apresenta os valores impressos pela função “ printf ”. .a b c d e f g h. .a c e g. .b d. b d f h. .a c. 1 pontos PERGUNTA 5 Uma alocação dinâmica de memória consiste em alocar uma certa região de memória para receber informações de um certo tamanho que poderá variar ao longo do processamento do programa. Para essa questão, enumere as linhas de código a seguir de modo a representar a sequência correta que deverá ser programada: 1 para a primeira linha de código que deverá ocorrer, 2 para a segunda e assim por diante: ( ) vetor = (int *) malloc(sizeof(int)); ( ) int *vetor; ( ) free(vetor); ( ) if(vetor==NULL) return; ( ) *(vetor+i) = 5; Assinale a alternativa que apresenta a sequência correta. 2, 4, 5, 3, 1. 2, 1, 3, 5, 4. 1, 2, 3, 4, 5. 2, 1, 5, 3, 4. 2, 3, 5, 1, 4. 1 pontos PERGUNTA 6 Na linguagem de programação C, podemos encontrar dois tipos básicos de arquivos: os arquivos binários e os arquivos texto. A forma de diferenciação, em relação à manipulação, consiste no uso de formas de abertura e funções específicas. Para essa questão, assinale, nas afirmativas abaixo, com (B) caso relacione-se aos arquivos binários e, com (T) caso relacione-se aos arquivos textuais. ( ) Para manipular o arquivo, usa-se as funções “ fread()” e “ fwrite()”. ( ) É totalmente legível caso seja aberto em editores de texto do tipo “bloco de notas”. ( ) Por exemplo, uma informação numérica, ocupa neste tipo de arquivo, uma quantidade de bytes compatível com a quantidade de dígitos de seu valor. ( ) Neste tipo de arquivo, tende-se a gastar menos espaço de armazenamento pois cada variável gasta exatamente o seu tamanho ocupado na memória principal; valor do retorno da função “ sizeof()”. Assinale a alternativa que apresente a sequência correta. B, T, T, B. T, B, B, T. B, T, B, T. T, B, T, B. B, B, T, B. 1 pontos PERGUNTA 7 Recursividade é uma técnica que permite a escrita de códigos de forma mais sucinta porém faz uso de forma mais massivo da pilha de memória. Para essa questão, analise o código a seguir: #include <stdio.h> int f(int a, int b) { if(!b)return a; return f(b, a % b); } int main() { int x=3, y=10; printf("%d",f(x,y)); } Escolha a opção correta: .O código calcula o MDC (Máximo Divisor Comum) usando o algoritmo de Euclides. .O código calcula o MMC (Mínimo Múltiplo Comum) usando o método da fatoração. .O código calcula a mediana entre os dois números. .O código calcula o número de arranjos estatísticos de Ax,y. .O código calcula o número de combinações estatísticas de xCy. 1 pontos PERGUNTA 8 Em algumas situações, como inversão de vetores, surge a necessidade de implementar uma função que realiza a troca de dois elementos entre si, ou seja, o elemento “ vet[i] ” recebe o valor de “ vet[j] ” e “ vet[j] ” recebe o valor de “ vet[i] ”. Sendo assim, pode-se codificar uma função que realizará exatamente essa permuta. Para essa questão, considere o código apresentado a seguir: #include <stdio.h> #include <string.h> void swap(char __c1, char __c2) { char tmp; tmp = __c1; __c1 = __c2; __c2 = tmp; } void Ordena(char str[]) { for(int i=0; i < strlen(str)-1; i++) for(int j=i+1; j < strlen(str); j++) if(str[i]>str[j]) swap(__str[i],__str[j]); } int main() { char str[11]="icbjdgfeah"; printf("Vetor original: %s\n",str); Ordena(str); printf("Vetor ordenado: %s\n",str); return 0; } Assinale a opção abaixo que contenha os elementos para preencher as lacunas (nas opções abaixo, o símbolo ”_” significa deixar a lacuna sem preenchimento): . & ; & ; * ; * ; * ; * ; & ; & . . * ; * ; * ; * ; * ; * ; & ; & . . * ; * ; _ ; _ ; _ ; _ ; & ; & . . * ; * ; * ; * ; * ; * ; _ ; _ . . _ ; _ ; _ ; _ ; _ ; _ ; _ ; _ . 1 pontos PERGUNTA 9 Na computação, existem várias formas de representação numérica, dentre as quais, podemos citar as representações decimal, hexadecimal, octal e binária. Para realizar a conversão, por exemplo, de um valorformatado na base decimal para uma base K , basta realizar divisões sucessivas por K e coletar o último quociente e todos os restos das divisões em ordem inversa. Suponha a necessidade de criar uma função recursiva para a conversão de um número na base decimal para a representação binária (base 2). Para essa questão, suponha o trecho a seguir: #include <stdio.h> void Dec2Bin(int n) { if(__) printf("%d",n); else { ___; ___; } } int main() { Dec2Bin(14); return 0; } Assinale a opção abaixo que contenha os trechos de código para preencher as lacunas: . n<2 ; printf("%d",n%2) ; Dec2Bin(n / 2) . . n<2 ; Dec2Bin(n / 2) ; printf("%d",n%2) . . n==0 ; Dec2Bin(n / 2) ; printf("%d",n%2) . . n<2 ; Dec2Bin(n % 2) ; printf("%d",n/2) . . n<2 ; printf("%d",n/2) ; Dec2Bin(n % 2) . 1 pontos PERGUNTA 10 Denomina-se como matriz esparsa aquela que a quantidade de elementos não nulos é mínima. Sendo assim, para economia de recursos de memória, aloca-se apenas os campos que possuem valores representativos. Para essa questão, analise as afirmativas abaixo e classifique com “S” aquelas que podem contribuir para a implementação de matriz esparsa e, com “N”, aquelas que não podem. ( ) Podemos implementar matriz esparsa como uma matriz de ponteiro para ponteiro. Cada linha de ponteiros aponta para um vetor de ponteiros, onde cada célula é uma estrutura composta pelos campos: valor e número da coluna. ( ) A matriz NxM é representada por um vetor com N*M células, onde cada célula é um registro composto pelos campos: linha, coluna e valor. ( ) A matriz é formada por uma estrutura estática, independentemente do número de elementos nulos. ( ) A matriz esparsa pode ser representada por uma matriz de ponteiro para ponteiro onde cada linha aponta para uma coluna alocada dinamicamente cujo tamanho é em função da quantidade dos elementos não nulos. Assinale a alternativa que apresenta a sequência que você considera correta. S, S, N, S. N, S, S, N. S, N, N, S. N, S, N, S. S, N, S, N.
Compartilhar