Baixe o app para aproveitar ainda mais
Prévia do material em texto
PERGUNTA 1 1. Existem duas formas para a criação de vetores: a primeira consiste em uma definição que não utiliza efetivamente ponteiros (tal como: “ int vet[5]; ”) e a segundo através da utilização de ponteiros (como por exemplo, “ int *vet; ”). Para essa questão, assinale com “V” a(s) linha(s) de código que apresentar o acesso correto à uma posição de um vetor instanciado como ponteiro e, com “F” a(s) linha(s) que apresentar uma codificação errada. Suponha que se deseja acessar a posição 3: ( ) y = (*vet)[3] ( ) y = vet[3] ( ) y = *(vet+3) ( ) y = *(vet+sizeof(int)*3) Assinale a alternativa que apresente a sequência que você julgue ser a correta. F, V, V, F. V, V, V, F. F, F, F, V. F, F, V, F. V, F, F, V. 1 pontos PERGUNTA 2 1. Suponha que existe, em um arquivo textual, uma matriz 4x4 que relaciona os custos de um certo produto A (linhas) combinado com um produto B (colunas) como ilustra o exemplo a seguir: 00 03 06 02 03 00 04 07 06 04 00 01 02 07 01 00 O produto não poderá ser combinado com ele mesmo. Por exemplo, combinando-se o produto dois com o produto três, teremos o valor 01. Cada valor de custo é representado, sempre, por dois caracteres e separados por um espaço em branco. Analise o código a seguir que imprima, na tela, o custo da combinação solicitada pelo usuário e preencha as lacunas. #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char linha[30],custoStr[3]; int prodA,prodB,i=0; FILE *arq; arq=fopen("matrizcustos.txt","___"); if(arq==NULL) { printf("Erro de abertura de arquivo origem."); return 0; } printf("Produto A (de 0 a 3):"); scanf("%d",&prodA); printf("Produto B:(de 0 a 3): "); scanf("%d",&prodB); for(;i<=prodA;i++) ____(linha,30,arq); printf("linha selecionada: %s\n",linha); strncpy(custoStr,&linha[___],2); custoStr[3]='\x0'; fclose(arq); printf("Custo = %d",atoi(custoStr)); return 0; } Assinale a alternativa que você julgue ser a correta. . r ; fputs ; prodB*3 . . rb ; fgets ; prodB*3 . . w ; fgets ; prodB*3 . . r ; fgets ; prodB*3 . . r ; fgets ; prodB . 1 pontos PERGUNTA 3 1. Define-se como palíndromo a palavra que tem a mesma grafia e leitura caso seja lida da esquerda para a direita ou da direita para a esquerda. Por exemplo, as palavras “anilina” e “reviver” são palíndromos. Para essa questão, suponha o código apresentado abaixo: #include <stdio.h> #include <string.h> int main() { char str[20]="reviver",palind=1; int tam = strlen(str); int i=0; cont = ____; for(; i ___ cont; i++,cont--) { if(____) { palind=0; break; } cont--; } if(palind) printf("%s eh palindromo.\n",str); else printf("%s nao eh palindromo.\n",str); return 0; } Escolha a alternativa que tenha a sequência correta de preenchimento das lacunas: . tam ; <= ; str[i]!=str[cont] . . tam-1 ; <= ; str[i]!=str[cont] . . tam-1 ; <= ; str[i]==str[cont] . . tam-1 ; < ; str[i]==str[cont] . . tam-1 ; < ; str[i]!=str[cont] . 1 pontos PERGUNTA 4 1. Um ponteiro para ponteiro denota uma variável que armazena um valor através de uma dupla indireção. Sendo assim, um ponteiro referência um outro ponteiro que, por sua vez, aponta para um valor específico. Para essa questão, analise o código a seguir: #include <stdio.h> int main() { int a = 10, *pont, **pontpont; pont = &a; pontpont = &pont; a = 12; printf("pont = %d\t pontpont: %d\n", *pont,**pontpont); return 0; } Assinale a alternativa que apresenta os valores impressos pela função “ printf() ”. 12 12. .10 10. .12 10. .10 12. .11 11. 1 pontos PERGUNTA 5 1. Uma string pode ser representada uma estrutura homogênea (vetor) para o armazenamento de uma sequência de caracteres. Em C/C++, as strings são iniciadas na posição 0 do vetor e são finalizadas pelo caractere nulo ('\x0'). Para essa questão, suponha que existe uma string carregada em uma variável denominada “str”. Dadas as sequências de código a seguir, assinale, com “R” aquela (s) que proporciona (m) a remoção do conteúdo de uma certa posição e, com “N”, a (s) que apresentam algum erro de sintaxe ou de lógica. Suponha a posição a ser retirada = 4. ( ) i=4; do { str[i]=str[i+1]; i++; } while(str[i]!='\x0'); ( ) i=4; while(i>=0) { str[i]=str[i+1]; i--; } ( ) for(i=4;i>=0;i--) str[i]=str[i+1]; ( ) i=4; for(;str[i]!='\x0';i++) str[i]=str[i+1]; Assinale a alternativa que apresenta a sequência correta. R; R; N; R. R; N; R; N. N; R; R; N. N; R; N; R. R; N; N; R. 1 pontos PERGUNTA 6 1. Para a manipulação de um arquivo, deve-se antes, realizar a sua abertura através do comando “ fopen()”. Tal comando permite associar o nome físico do arquivo assim como a sua forma de abertura. Para essa questão, analise as linhas de código a seguir: FILE *arq; arq = fopen(“arquivo.dat”,”wb+”); Assinale a alternativa que você julgue ser a correta. Será aberto um arquivo binário “arquivo.dat” permitindo-se operações de leitura e de escrita. Sempre será criado um arquivo novo, destruindo o conteúdo caso já exista um arquivo com o mesmo nome. Será aberto um arquivo binário “arquivo.dat” permitindo-se operações de leitura e de escrita. Caso o arquivo não exista, será criado um arquivo novo. Caso exista, o seu conteúdo será mantido. Será aberto um arquivo binário “arquivo.dat” permitindo-se operações de escrita. Sempre será criado um arquivo novo, destruindo o conteúdo caso já exista um arquivo com o mesmo nome. Será aberto um arquivo textual “arquivo.dat” permitindo-se operações de leitura e de escrita. Sempre será criado um arquivo novo, destruindo o conteúdo caso já exista um arquivo com o mesmo nome. Será aberto um arquivo textual “arquivo.dat” permitindo-se operações de escrita. Sempre será criado um arquivo novo, destruindo o conteúdo caso já exista um arquivo com o mesmo nome. 1 pontos PERGUNTA 7 1. Na programação em C, podemos encontrar duas formas distintas de se abrir um arquivo (textual ou binária) aliadas aos modos que esse arquivo será manipulado. Para essa questão, analise o código a seguir, que manipula um arquivo binário, e preencha a lacuna corretamente. . . . FILE *arq; int codigo; char buffer[35]="algo a ser escrito no arquivo\n"; arq=fopen("exercicio.dat","____"); if(arq==NULL) { printf("Erro de abertura do arquivo.\n"); return 0; } ... if(!fread(&codigo,sizeof(int),1,arq)) //caso o arquivo ainda esteja vazio codigo=0; else codigo++; ... if(!fwrite(&codigo,sizeof(int),1,arq)) printf("erro na gravacao do codigo.\n"); else if(!fwrite(buffer,35,1,arq)) printf("Erro na gravacao do buffer.\n"); fclose(arq); . . . Considerando que, caso o arquivo não exista, será criado um novo e caso exista, os dados deverão ser mantidos, assinale a alternativa que corresponda ao preenchimento da lacuna. a+. ab+. wb+. rb+. w+. 1 pontos PERGUNTA 8 1. Uma das vantagens de um arquivo binário consiste na possibilidade do uso direto de registros (estruturas de dados). Sendo assim, pode-se gravar ou recuperar, com apenas uma operação, todos os dados inseridos em tal estrutura de dados. Para essa questão, analise o trecho de código a seguir e preencha as lacunas. TSTRUCT ts; . . . arq=fopen("registros.dat","rb+"); if(arq==NULL) { printf("Erro de abertura do arquivo.\n"); return 0; } ________; //posicionar no início do arquivo printf("Item a ser localizado: "); scanf("%d",&item); while(1) { ________; //ler a estrutura if(________) //testar se foi encontrado o final de arquivo break; if(ts.item==item) { //manipulação do registro encontrado... Assinale a alternativa que você julgue conter a sequência correta do preenchimento das lacunas. rewind(arq) ; fread(&ts,sizeof(TSTRUCT),1,arq) ; feof(arq) . fseek(arq,0,SEEK_END); fread(&ts,sizeof(TSTRUCT),1,arq) ; feof(arq) . rewind(arq) ; fwrite(&ts,sizeof(TSTRUCT),1,arq) ; feof(arq) . rewind(arq) ; fread(&ts,sizeof(TSTRUCT),1,arq) ; eof(arq) . rewind(arq) ; fgets(&ts,sizeof(TSTRUCT),1,arq) ; feof(arq) . 1 pontos PERGUNTA 9 1. Quando se implementa uma fução, devemos seguir a sintaxe da linguagem de programação utilizada e, também, realzar a definição de sua interface de acordo com as nossas necessidades. Para essa questão, suponha o trecho de código a seguir: #include <stdio.h> //arquivo header para a funcao printf() #include <stdlib.h> //arquivo header para as funcoes srand() e rand() #include <time.h> //arquivo header para a funcao time() ___ func1(int ___x, ___ a) { ___x=rand()%a; return ___x*(rand()%5); } int main() { int aleat,ret; int a=10; srand(time(NULL)); //iniciacao do gerador de numeros aleatorios for(int i=0; i<10;i++) { ret=func1(__aleat,a); printf("valor aleatorio gerado %d: %d (limitado %d) - ret funcao: %d.\n", i,aleat,a,ret); } return 0; } Escolha a afirmativa que contém o resultado da impressão pela função “ printf ” e os trechos a serem inseridos nas lacunas: .int ; * ; deixar em branco ; * ; * ; & . .int ; * ; deixar em branco ; * ; deixar em branco ; & . .int ; * ; deixar em branco ; * ; * ; deixar em branco . .int ; deixar em branco ; deixar em branco ; deixar em branco ; deixar em branco ; deixar em branco. .int ; * ; * ; * ; * ; & . 1 pontos PERGUNTA 10 1. Um programa consiste em criar uma sequência lógica de instruções de modo que possam ser manipuladas informações representadas na forma de variáveis. Em linguagens tipadas, como é o caso de C/C++, toda variável deve ser declarada associando à um tipo de dados. Dadas as declarações abaixo em C/C++, assinale com “C” a(s) que você julgue estar corretamente declarada(s) e, com “E” a(s) errada(s): ( ) int a; b; ( ) unsigned char x, y[10]; ( ) int a, char b; ( ) int [10] x; ( ) float a; int b; Assinale a alternativa que contenha a ordem correspondente à sua marcação. E; C; C; E; C. E; C; E; E; E. C; C; E; E; C. E; C; E; E; C. E; C; E; C; C.
Compartilhar