Baixe o app para aproveitar ainda mais
Prévia do material em texto
No ambiente Linux, não precisamos, obrigatoriamente, ter um único ambiente para editar, compilar e executar um programa codificado na linguagem C como temos no Windows. Sendo assim, qual seria a sequência para conseguirmos editar, compilar e executar um programa? Usar o terminal para digitar o código/ salvar sem se preocupar com extensão/ e digitar uma linha de comando, também no terminal, usando o compilador gcc. Usar um editor de texto para digitar o código/ salvar com extensão c/ digitar uma linha de comando no terminal, usando o compilador gcc que irá gerar o executável e executá-lo em seguida. Usar um editor de texto para digitar o código/ salvar sem se preocupar com extensão/ e digitar uma linha de comando, também no terminal, usando o compilador gcc. Usar um editor de texto para digitar o código e salvar com extensão c/ digitar uma linha de comando no terminal usando o compilador gcc para gerar o executável/ digitar o nome do executável, precedido por ./ no terminal para executá-lo. Usar um editor de texto para digitar o código e salvar com extensão c/ digitar uma linha de comando no terminal usando o compilador gcc para gerar o executável / digitar o nome do executável no terminal para executá-lo. Na Aula 1, estudamos algumas características e vantagens da linguagem C. Observe as afirmativas abaixo e assinale a opção que contem a resposta correta. I Tem boa Portabilidade. II Não pode ser modularizada. III É uma linguagem Orientada a Objetos. IV Uma linguagem que pode manipular endereços de memória. V Não possui um propósito especifico. As afirmativas II, III e IV estão corretas e as demais, erradas. As afirmativas I e IV estão corretas e as demais, erradas. As afirmativas I, IV e V estão corretas e as demais, erradas. As afirmativas IV e V estão corretas e as demais, erradas. As afirmativas II, IV e V estão corretas e as demais, erradas. Sabemos que a linguagem C apresenta várias vantagens. Quando dizemos que usamos três procedimentos básicos: sequência, seleção e iteração e que é possível gerar um executável rápido, estamos nos referindo às seguintes características na ordem: Estruturada e Rapidez Portabilidade e Estruturada Complexidade e Estruturada Portabilidade e Modularidade Rapidez e Portabilidad A Linguagem C tem algumas características importantes e uma delas é a Portabilidade, Isso significa dizer que: A linguagem possui um propósito específico. Um programa executável gerado na plataforma Windows é executado na Plataforma Linux. Com pequenas alterações, o programa poderá ser compilado em várias plataformas. Podemos dividir o programa em parte menores. Por ser considerada uma linguagem de baixo nível é mais simples migrar para outra plataforma. Qual das características abaixo NÃO pode ser atribuída á linguagem C? Complexidade porque tem muitas palavras reservadas Portabilidade Rapidez, pois gera executável compacto Modularidade Estruturada Todo programa codificado na linguagem C pode incluir uma, ou várias bibliotecas, mas existe uma que tem que estar nessa lista, na maioria das vezes, devido a necessidade da interação com o usuário.. Assinale a alternativa que apresenta essa biblioteca. iostream stdin.h stdio.h iostream.h studio.h Um Engenheiro Ambiental tinha um arquivo onde ele gostaria retirar algarismos que estavam dentro de várias cadeias de caracteres e que fossem todos convertidos para números reais, uma vez que eles representavam tamanhos de árvores. Observe as linhas abaixo e assinale a opção que contem a função que realiza essa conversão e a biblioteca a qual pertence. tolower() e ctype.h toupper() e stdlib.h atof() e stdlib.h isalpha() e stdlib.h atoi() e math.h Um Engenheiro estava testando formatação com a função printf()e incluiu a linha abaixo. printf( "%08.2f",12.3); Exibiu com seis casas na parte inteira e duas na parte decimal, totalizando 8 posições no display, deixando vazias as não usadas, exceto a posição do ponto. Exibiu com oito casas na parte inteira e duas na parte decimal, totalizando 10 posições no display, sendo que seriam seis 0 antes do número 12 e um zero depois do 3. Exibiu com cinco casas na parte inteira e duas na parte decimal, totalizando 8 posições no display, sendo que seriam três 0 antes do número 12 e um zero depois do 3 e o ponto. Exibiu com oito casas na parte inteira e duas na parte decimal, totalizando 10 posições no display, deixando vazias as não usadas Exibiu 12.3 porque o zero anula a formatação Um Engenheiro Civil precisava usar uma função que pudesse arredondar para cima, uma vez que ao compramos pisos/ azulejos sempre usamos um valor inteiro. Observe as funções abaixo e escolha a função capaz de resolver esse problema. rounder() floor() ceil() sqrt() pow() Observe o programa abaixo e selecione a resposta que mostra e/ou explica o que será exibido no display. #include int main() { printf ("O valor eh = \\n%04d ", 12); } O valor eh = em uma linha e na linha abaixo 0012 O valor eh = \n0012 O valor eh = \n 12 O valor eh = em uma linha e na linha abaixo 12 O valor eh = 000012 Um Engenheiro estava construindo um trecho de programa onde pedia que o usuário respondesse com uma letra ou um algarismo. Se o usuário não tivesse respondido, ele enviaria uma mensagem de erro. Ele sabia que precisava aprender mais alguma estrutura, mas, no momento, pensou em experimentar uma função que pudesse lhe dar um retorno. Pesquisou nas bibliotecas estudadas na aula 2 e achou. Qual o nome dessa função? isdigit() isalpha() isnotalphadigit() isspace() isalnum() Suponha que as bibliotecas necessárias foram declaradas e considere em função das respostas a numeração das linhas apresentadas entre parênteses. (L1)int main() (L2) { (L3) char vet[40]; (L4) puts("Digite o seu nome completo:"); (L5) fgets(vet); (L6) printf("%s\n", vet); (L7) system("pause"); (L8) return (0); (L9) } Analise o código e assinale a alternativa correta. Erro na (L6)- O printf não aceita a forma apresentada. Erro na (L3)- Deveria ser utilizado uma matriz. Erro na (L4)- Puts está sendo usado de forma errada. Erro na (L8)- O return é utilizado apenas em funções. Erro na (L5)- Na forma de preencher a função fgets. Escolha a opção que inclui somente nomes válidos para variáveis na linguagem C. If, nota_do_aluno_2, HOJE, _yes 2nota, a36, x#y, --j nota-2 , a36, x_y 2_ou_1, fim, *h, j i, j, int, obs Na linguagem C, uma variável pode ser classificada como LOCAL ou GLOBAL. De acordo com as características das variáveis LOCAIS, marque a alternativa ERRADA. Uma variável local só é visualizada pela função onde foi declarada. A função main() pode acessar qualquer variável local de qualquer função. Existem funções que não têm variáveis locais. As variáveis locais não podem ser acessadas de fora do escopo em que foram criadas. Duas, ou mais funções, podem declarar variáveis locais com os mesmos nomes. Um programa de cadastro deve solicitar cpf,nome e telefone de alunos até que o cpf seja igual a 0. Que estrutura em C melhor representa esta tarefa? while{ // [bloco de comandos] } do (cfp !=0); if (cpf != 0) { // [bloco de comandos] } do{ // [blocode comandos] } while (cfp !=0); for (cpf=0; cpf !=0; cpf++) { // [bloco de comandos] } do while (cfp !=0) { // [bloco de comandos] } Na programação em C como em outras linguagens, muitas vezes se faz necessário a conversão de tipos de dados, para que possamos exibir ou armazenar o resultado de uma operação da forma desejada. O nome dado a esta operação é Cast. Das opções apresentadas, marque aquela que converte e armazena corretamente o valor de uma variável n do tipo int para a variável x do tipo float utilizando o Cast. x = float n; n = (float) x; n = float x; x = (float) n; x = (int) n; Quando precisamos incrementar o valor de uma variável em C, geralmente usamos a forma contrata, com os operadores pré ou pós fixados de acordo com a necessidade. Supondo as seguintes definições e desconsiderando a necessidade do restante do programa: Int a = 5; Int b = 8; Após a execução das operações na ordem em que são apresentadas, Marque a resposta correta: a += b++; o valor de a e b são respectivamente: 9 e 13 a = ++b; o valor de a e b são respectivamente: 8 e 9 a += ++b; o valor de a e b são respectivamente: 14 e 8 a = b++; o valor de a e b são respectivamente: 8 e 9 a += b++; o valor de a e b são respectivamente: 14 e 9 Na linguagem de programação C, como em outras, na criação de programas, devemos definir os tipos de dados para nossas variáveis de acordo com o problema em questão. Das opções apresentadas qual possui apenas tipos da linguagem C, conforme o material apresentado nas aulas. char, int, real, double, void char, integer, float, real, boolean char, int, float, double, void char, int, float, double, boolean char, int, real, double, boolean Um desenvolvedor estava construindo um código que tinha quatro possibilidades de resposta válidas além de uma mensagem de erro. O dado testado era do tipo inteiro. Assinale a opção que ele escolheu. três ifs simples e um composto quatro ifs simples e um composto quatro ifs simples switch() com quatro cases e um default switch() com cinco cases O desenvolvimento de um programa precisa atender as necessidades do usuário final, para isto o desenvolvedor conta com algumas estruturas que facilitam a construção de seu código fonte. Uma delas é a estrutura condicional if. Das opções apresentadas marque a qual melhor define esta estrutura. Compara os valores de algumas variáveis dependendo do resultado permite que o programa possa fazer um caminho diferente repetidamente. Compara os valores de algumas variáveis e dependendo do resultado permite que o programa siga por caminhos diferentes. Testa uma expressão e dependendo do resultado permite que o programa siga por caminhos diferentes. Compara os valores possíveis para uma variável e dependendo do resultado permite que o programa siga por caminhos diferentes. Testa uma condição e dependendo do resultado permite que o programa siga por caminhos diferentes repetidamente. Existe sempre uma dúvida por parte do desenvolvedor se escolhe switch() ou if quando está usando a Linguagem C. Sabemos que existem algumas exigências para se usar o switch(). Analise as opções abaixo e assinale a opção correta. I Qualquer tipo pode ser usado. II Somente o tipo vetor de char que Não pode ser usado. III Não pode ser usado intervalo tipo: 1..3 em um case. IV Sempre será obrigatório usar o comando break; ao final de um case. V Quando o valor digitado não estiver presente em nenhum dos cases, irá para a opção default, caso exista. III e V são verdadeiras II, IV e V são verdadeiras I, III, IV e V são verdadeiras II, III e IV são verdadeiras I, III e IV são verdadeiras Assinale a alternativa que apresenta APENAS os exemplos de operadores relacionais. =, > e || <, > e >= &&, >= e || +, - e * &&, || e ~ Na construção de programas na linguagem C, precisamos tomar muito cuidado com a sintaxe das expressões condicionais, para que não tenhamos resultados inesperados. Supondo que as variáveis foram devidamente declaradas e levando em conta apenas a linha de código apresentada, dentre as opções qual apresenta erro na sintaxe para a linguagem C. if (a > 0) { a = 2;} if (a > 0) {a = 2;} else {b= 2;} if (x > 0) a = 2 else b = 2 ; if x > 0 { a = 2;} if (a > 0) {a = 2;} else if (b < 10) {b= 2;} Na construção de programas na linguagem C, precisamos utilizar os operadores relacionais para montar nossas expressões relacionais. Supondo que as variáveis foram devidamente declaradas, dentre as opções apresentadas qual não apresenta uma expressão relacional correta na linguagem C. x > ( a + b ) x == ( a + b ) x >= ( a + b ) x = ( a + b ) x <= ( a + b ) Estrutura de repetição, na ciência da computação, é uma estrutura de desvio do fluxo de controle presente em linguagens de programação que realiza e/ou repete diferentes algoritmos/ações dependendo se uma condição é verdadeira ou falsa, em que a expressão é processada e transformada em um valor booleano. Analise o código abaixo e identifique a opção que demonstra o que será exibido na tela: int main(int argc, char *argv[]) { int i = 0; int j = 5; do{ printf("%d", i++); }while(++i <= j--); system("PAUSE"); return 0; } 024 1234 34 123 345 Leia com atenção as afirmativas abaixo e escolha a opção correta. I A estrutura do for, por definição, é ideal quando o número de repetições for conhecido II A estrutura do for testa ao final enquanto a estrutura while testa no início III A estrutura while pode simular a estrutura do for e a estrutura do... while IV A estrutura do for sem nenhum parâmetro, só com os ; dentro dos parênteses e com um if no corpo da repetição, pode simular a estrutura while V Tanto a estrutura do...while quanto a estrutura while, testam no início Somente I e V estão corretas Somente I, II, III e V estão corretas Somente I, III e IV estão corretas Somente I, III e V estão corretas Somente II, III e V estão corretas A linguagem C possui comandos para repetir uma sequência de instruções. Estas estruturas de repetição, também conhecidas como laços (do inglês loops). Dao o código abaixo, qual opção que demonstra o que será exibido na tela? int main(int argc, char *argv[]) { int i = 0; int j = 5; do{ printf("%d", i++); }while(j-- <= ++i ) system("PAUSE"); return 0; } 024 135 012345 12345 0 As estruturas de repetição são essenciais no desenvolvimentos de programas na linguagem C. Dado o programa abaixo, identifique a opção que demonstra o que será exibido na tela: int main(int argc, char *argv[]) { int i = 0; int j = 5; while(++i <= --j){ printf("%d ", i); } system("PAUSE"); return 0; } 1 2 1 2 3 4 5 1 2 3 0 1 2 3 4 5 0 1 2 A instrução while é usada quando não sabemos quantas vezes um determinado bloco de instruções precisa ser repetido. Com ele, a execução das instruções vai continuar até que uma condição seja verdadeira. A condição a ser analisada para a execução do laço de repetição deverá retornar um valor booleano Dado o código abaixo, qual opção que demonstra o que será exibido na tela? int main(){ int cont=1; int tam = 3; while( cont <=tam ){ while( cont++ <=tam ) printf("%d ",cont); cont++; } system("PAUSE");return 0; } 3 4 5 1 2 2 3 4 5 1 2 3 2 3 4 Qual dos comandos abaixo permite que um bloco de comandos seja executado enquanto a variável num seja diferente de 0? enquanto (num > 0) for (i = num; i > 0; i++) while (num != 0) for ( i = 0; i == num; i++) while (num == 0) Observe as afirmativas abaixo sobre o terminador nulo e assinale a opção correta. I Devemos sempre acrescentar mais uma posição ao vetor de char quando ele for dimensionado; II Ele deve ser incluído ao final de todo vetor independente do tipo; III O terminador nulo é identificado pelo caracter \0; As afirmativas I e III são verdadeiras. Todas as afirmativas são verdadeiras As afirmativas II e III são verdadeiras Somente a afirmativa I é verdadeira Somente a III é verdadeira A linguagem C, ao contrário de outras linguagens de programação, não possui um tipo de dados correspondente às strings; no lugar, usam-se vetores e ponteiros Qual das opções abaixo está correta? Em C, strings são vetores de caracteres terminados pelo caractere nulo ('/end'). Em C, strings são vetores de caracteres terminados pelo caractere nulo ('\end') Em C, strings são vetores de caracteres terminados pelo caractere nulo ('{0}'). Em C, strings são vetores de caracteres terminados pelo caractere nulo ('/0'). Em C, strings são vetores de caracteres terminados pelo caractere nulo ('\0'). A linguagem C permite a inicialização de vetores junto com sua declaração. Dada as alternativas abaixo, selecione a que está incorreta: char valores[] = {'A', 'B', 'C', 'D'}; int valores[5] = {10, 15, 20, 25, 30}; int valores[] = {10, 15, 20, 25, 30}; char valores = "ABCD"; char valores[5] = {'A', 'B', 'C', 'D'}; A linguagem C é rica em funções que permitem efetuar operações simples e complexas. Existem várias funções para leitura de dados, entre elas podemos destacar: - Função que é usada, sem problemas, para ler variáveis simples, aceitando espaço, mas não tem nenhum controle sobre o números de caracteres armazenados. - Função que é usada, sem problemas, para ler variáveis simples, numéricas ou char de um caracter, e para vetores dos tipos citados. Entretanto, apresenta limitação para vetor de char, uma vez que abandona ao encontrar um espaço. - Função que lê todos os caracteres, inclusive espaços, mas especifica em um dos parâmetros o máximo de caracteres que poderá ser armazenado. Identifique a opção abaixo que corresponde as funções descritas na ordem acima: fgets, gets e scanf scanf, gets e fgets scanf, fgets e gets gets, scanf e fgets gets, fgets e scanf Um dos problemas que assola a computação é o de segurança. Dentre várias soluções existentes, a criptografia é uma área que tem avançado muito nos dias de hoje. Uma empresa para criptografar seus textos, efetua a leitura de textos com até 80 caracteres e a partir de uma chave numérica os embaralha. Exemplo: texto: "ABCDEFGHIJ" chave: 42153 saída: "EBCAFDGHIJ" Dado o trecho de programa abaixo, identifique qual das opções completa o mesmo para este fim. void main(){ char vetor[10]={'A','B','C','D','E','F','G','H','I','J'}; int i; char aux; int chave[5] = {4,2,1,5,3}; for(i = 0; i <5 ; i++){ vetor [i] = vetor[chave[i]]; vetor[chave[i]]= aux; aux = vetor[i]; } for(i = 0; i <10 ; i++){ printf("%c",vetor[i]); } system("PAUSE"); } for(i = 0; i <5 ; i++){ vetor[i] = vetor[chave[i]]; vetor[chave[i]] = vetor [i]; } for(i = 0; i <10 ; i++){ printf("%c",vetor[i]); } system("PAUSE"); } for(i = 0; i <5 ; i++){ vetor[i] = aux; vetor[chave[i]] = vetor [i]; aux = vetor[chave[i]]; } for(i = 0; i <10 ; i++){ printf("%c",vetor[i]); } system("PAUSE"); } for(i = 0; i <5 ; i++){ aux = vetor[i]; vetor [i] = vetor[chave[i]]; vetor[chave[i]]= aux; } for(i = 0; i <10 ; i++){ printf("%c",vetor[i]); } system("PAUSE"); } for(i = 0; i <5 ; i++){ aux = vetor[0]; vetor [0] = vetor[chave[i]]; vetor[chave[i]]= aux; } for(i = 0; i <10 ; i++){ printf("%c",vetor[i]); } system("PAUSE"); } Assim como nas variáveis, podemos inicializar os vetores assim que declaramos. Sabendo-se que existe um vetor de 3 posições do tipo inteiro, qual das opções abaixo correspondo a correta forma de se declarar e inicializar este vetor? int numeros[2] = [ 0, 1, 2]; int numeros[3] = ( 0, 1, 2); int numeros[3] = { 0, 1, 2}; integer numeros[3] = [ 0, 1, 2]; int numeros(2) = { 0, 1, 2}; Para resolver um determinado problema um programador escreveu um código para trabalhar com um vetor conforme apresentado na questão: int vetn[3][2]; for (int i=0; i < 3; i++){ for (int j=0; j < 2; j++){ vetn[i][j] = i + j; } } Desconsiderando a necessidade do programa completo e levando em conta apenas o código descrito, das opções apresentadas, qual afirmativa está correta. Serão armazenados os valores 0,1,2,2,3,3. Serão armazenados os valores 0,0,1,1,2,2. O trecho apresentado possui erro e nenhum valor será armazenado. Serão armazenados os valores 0,1,1,2,2,3. O trecho apresentado possui erro e apenas um valor será armazenado. Para resolver um determinado problema um programador escreveu um código para trabalhar com um vetor conforme apresentado na questão: float vetn[20]; for (int i=0; i < 20; i++){ vetn[i] = ( i+1) * 0.1; i = i + 2; } Desconsiderando a necessidade do programa completo e levando em conta apenas o código descrito, das opções apresentadas, qual afirmativa está correta. Serão armazenados 20 valores reais. O segundo valor armazenado será o 0.2. O terceiro valor armazenado será o 0.6. O vigésimo valor armazenado será o 2.0. Serão armazenados 7 valores reais. Considere que todas as bibliotecas necessárias foram declaradas. int main() { int mat[3][3], i, j, det; puts("Codigo que calcula o determinante de uma matriz 3x3\n"); ____{ puts("Digite os elementos da matriz\n"); ____(i=0;i<3;i++) ____(j=0;j<3;j++) scanf("%d", &mat[i][j]); fflush(stdin); det= (mat[0][0]*mat[1][1]*mat[2][2]) + (mat[0][1]*mat[1][2]*mat[2][0]) + (mat[0][2]*mat[1][0]*mat[2][1]) - ((mat[0][1]*mat[1][0]*mat[2][2]) + (mat[0][0]*mat[1][2]*mat[2][1]) + (mat[0][2]*mat[1][1]*mat[2][0])); printf("\ndet=%d\n", det); } ____ (det==0); system("pause"); return (0); } Complete as lacunas do código da maneira correta para que o programa funcione corretamente. while-for-do-for do-while-for-for do-if-else-while do-for-for-while do-if-for-while Admitindo-se que deseja ler o nome e o sobrenome de 5 pessoas para um matriz(char nomes[5][20]), identifique qual das opções abaixo realizará corretamente: for(i = 0; i<5; i++) fgets(nomes[i], 20, stdin); for(i = 0; i<20; i++) fgets(nomes[i], 5, stdin); for(i = 0; i<5; i++) scanf("%s" , nomes [i]); for(i = 0; i<5; i++) scanf("%s" , &nomes [i]); for(i = 0; i<5; i++) fgets(nomes[i], 5, stdin); As matrizes, assim como os vetores, são muito importantes para facilitar o trabalho de um programador, por isso é extremamente importante saber como utiliza-la. Assinale a alternativa em que há uma matriz bidimensional, do tipo inteiro, com 10 linhas e 20 colunas, declarada de forma correta. matrizExemplo float[20][10]; float matrizExemplo[20][10]; matrizExemplo int[10][20]; int matrizExemplo[10][20]; int matrizExemplo[10,20];Um recurso extremamente poderoso em linguagem C são vetores e matrizes. Ambos podem ser inicializados no ato da sua declaração. Em função da inicialização, identifique a opção incorreta. char mensagem [] = "Linguagem de Programação I"; char nomes [4][10] = { "Oswaldo", "Gisele", "Giovanna", "Giulianna" }; int matriz1[][2] = { 1,2,2,4,3,6,4,8,5,10 }; int matriz2 [3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; char nome [10] = { O, s, w, a, l, d , o, \0 }; O chefe do departamento do pessoal da Empresa YYY gostaria de declarar matrizes bidimensionais para armazenar nomes dos 20 funcionários e 14 salários de cada um deles. Assinale a linha onde a declaração atende ao que ele deseja. char nomes[20]; float salarios[19][13]; char nomes[20][31]; float salarios[20][14]; char nomes[20][31]; float salarios[20][20]; char nomes[19][31]; float salarios[19][13]; float nomes[20][31], salarios[20][14]; Função em C onde são colocados todos os comandos e outras funções que desejamos que sejam executadas begin systema("pause") main() return end Os alunos foram desafiados pelo professor para construir uma linha em linguagem C que pudesse exibir no display o algarismo da casa das dezenas simples de um número dado na chamada das funções. O professor disse que eles não precisavam fazer nenhuma proteção, mas deixou claro que tinham que usar somente as duas funções que foram disponibilizadas para eles. Observe os protótipos abaixo e os comentários sobre o que cada função retorna e depois escolha a opção que possibilita o que foi pedido, supondo que o número seja : 987234. Função 1: int retornaUltimo(int num); /* Retorna o algarismo da casa das unidades simples*/ Função 2: int retornaDezenas(int num); /* Retorna o número de dezenas de um número */ Observe o programa abaixo e escolha a opção que apresenta o que retorna da função chamada. Nada retorna porque o nome do vetor da função main é diferente do nome do vetor da função descobre O valor retornado corresponde ao deslocamento mais um em relação ao endereço base da variável que contem o menor número O menor número é retornado O valor retornado corresponde ao índice da variável que contem o menor número O maior número é retornado A língua portuguesa realmente é surpreendente. Além de rica em fonemas e vocabulário, possui muitas curiosidades. Entre elas o conceito de palíndromo, que é uma palavra ou um número que se lê da mesma maneira nos dois sentidos como, por exemplo, OVO. Dado o código abaixo, qual das opções complementa o programa para identificar este curioso conceito? int ePalindromo(char vet[],int tam); void main(int argc, char *argv[]) { char texto[] = "arara"; int i; if(ePalindromo(texto, strlen(texto))) printf("Eh palindromo"); else printf("Nao eh palindromo"); system("PAUSE"); } int ePalindromo(char vet[],int tam){ int i; int aux=1; for(i=0; i < tam-1; i++){ if(vet[i]!=vet[tam-i]){ aux = 0; break; } } return aux; } int ePalindromo(char vet,int tam){ int i; int aux=1; for(i=0; i < tam-1; i++){ if(vet[i]!=vet[tam-i]){ aux = 0; break; } } return aux; } int ePalindromo(char vet[],int tam){ int i; int aux=1; for(i=0; i < tam/2; i++){ if(vet[i]!=vet[tam-i]){ aux = 0; break; } } return aux; } int ePalindromo(char vet[],int tam){ int i; int aux=1; for(i=0; i < tam/2; i++){ if(vet[i]!=vet[tam-1-i]){ aux = 0; break; } } return aux; } int ePalindromo(char vet[],int tam){ int i; int aux=1; for(i=0; i < tam; i++){ if(vet[i]!=vet[tam+1-i]){ aux = 0; break; } } return aux; } Existem basicamente dois tipos de variáveis que podem ser declaradas em um código: variáveis locais e variáveis globais. Para que um programador possa escolher a melhor maneira de declarar as variáveis em seu programa é necessário que ele tenha domínio sobre elas. Assinale a alternativa que contém apenas características das variáveis globais. Declaradas fora do escopo de todas as funções e não poderá ser manipulado por qualquer função. Declaradas fora do escopo de todas as funções e poderá ser manipulado por qualquer função. Declaradas dentro do escopo de todas as funções e não poderá ser manipulado por qualquer função. Declaradas dentro do escopo de todas as funções e poderá ser manipulado por qualquer função. Declaradas fora ou dentro do escopo de todas as funções e não poderá ser manipulado por qualquer função. Observe a linha abaixo e diga qual será o resultado obtido: result = fprintf(arq,"Linha %d\n",i); Se a função fprintf for executada com sucesso, devolve o número de caracteres gravados. Se a função NÃO for executada com sucesso, retorna a constante BOF. Se a função fprintf for executada com sucesso, devolve o número de caracteres gravados. Se a função NÃO for executada com sucesso, retorna a constante EOF. Se a função fprintf for executada com sucesso, devolve a constante EOF. Se a função NÃO for executada com sucesso, retorna o número de caracteres gravados. Se a função fprintf NÃO for executada com sucesso, devolve o número de caracteres gravados. Se a função for executada com sucesso, retorna a constante EOF. Se a função fprintf for executada com sucesso, devolve os caracteres gravados. Se a função NÃO for executada com sucesso, retorna a constante EOF. Na definição de estruturas, funções, variáveis, etc. devemos seguir suas respectivas Sintaxes. Das opções apresentas, qual é SINTAXE correta da definição de um vetor bidimensional. tipo nome_matriz[numero_colunas][numero_linhas]; tipo nome_vetor[numero_colunas][numero_linhas]; tipo nome_matriz[numero_linhas][numero_colunas]; nome_matriz[numero_linhas][numero_colunas]; tipo nome_matriz[][]; A linguagem C possui vários modos de abertura de arquivo. Para tanto, correlacione as colunas abaixo: i. "r" ii. "w" iii. "a" iv. "r+" v. "w+" vi. "a+" ( ) Abrir um arquivo texto para gravação. Os dados serão adicionados no fim do arquivo ("append"), se ele já existir, ou um novo arquivo será criado, no caso de arquivo não existente anteriormente ( ) Cria um arquivo texto para leitura e gravação. Se o arquivo existir, o conteúdo anterior será destruído. Se não existir, será criado. ( ) Abre um arquivo texto para leitura. O arquivo deve existir antes de ser aberto. ( ) Abre um arquivo texto para gravação e leitura. Os dados serão adicionados no fim do arquivo se ele já existir, ou um novo arquivo será criado, no caso de arquivo não existente anteriormente ( ) Abrir um arquivo texto para gravação. Se o arquivo não existir, ele será criado. Se já existir, o conteúdo anterior será destruído. ( ) Abre um arquivo texto para leitura e gravação. O arquivo deve existir e pode ser modificado. Dentre as opções abaixo é correto afirmar: vi, ii, iv, iii, v, i vi, i, ii, iii, v, iv iii, v, i, vi, ii, iv iii, ii, iv, vi, v, i vi, v, i, iii, ii, iv Para a manipulação de arquivos na linguagem C, primeiro precisamos abrir o mesmo. Sabendo-se que o arquivo tem o nome de arquivo.txt, que foi associado com a variável de nome: arq, e que é do tipo binário, avalie cada uma das afirmativas e marque a que faz a abertura para ler dados do arquivo corretamente seguindo as regras da linguagem. arq = fopen("texto.txt", "r"); arq = fopen("arquivo.txt", "rb"); arquivo = fopen("arquivo.txt ", "ab"); arquivo = fopen("arquivo.txt","r"); arquivo = fopen("texto.txt ", "rb"); Na manipulação de arquivos na linguagem C, podemos utilizar várias funções da linguagem. Cada uma delas tem um propósito específico. Das afirmativas apresentadas qual define melhor e corretamente qual a finalidade da função fprintf() . Função que fecha um arquivo. Função que detecta o fim do arquivo. Funções para gravar um caractere. Funções para gravar uma linha. Funções para gravação formatada. Para a manipulação de arquivos na linguagem C, primeiro precisamos abrir o mesmo. Sabendo-se que o arquivo tem o nome de texto.txt, que foi associado com a variável de nome: arq, e que é do tipo texto, avalie cada uma das afirmativas e marque a que faz a abertura para ler e/ou gravar dados no fim do arquivo corretamente seguindo as regras da linguagem. arq = fopen("texto.txt", "a+"); arquivo = fopen("material.dat", "r+"); arquivo = fopen("material.dat", "w+"); arquivo = fopen("material.dat", "a+"); arq = fopen("texto.txt", "w"); Para se fazer procuras e acessos randômicos em arquivos usa-se a função fseek(). Esta move a posição corrente de leitura ou escrita no arquivo de um valor especificado, a partir de um ponto especificado. Seu protótipo é: int fseek (FILE *fp,long numbytes,int origem); int fseek (FILE fp,long numbytes,int origem); real fseek (FILE *fp,long numbytes,int origem); int *fseek (FILE *fp,long numbytes,int origem); void fseek (FILE *fp,long numbytes,int origem); O protótipo de fread() é: signed fread (void *buffer, int numero_de_bytes, int count, FILE *fp); unsigned fread (int *buffer, int numero_de_bytes, int count, FILE *fp); unsigned fread (void *buffer, int numero_de_bytes, int count, FILE *fp); int fread (void *buffer, int numero_de_bytes, int count, FILE *fp); void fread (void *buffer, int numero_de_bytes, int count, FILE *fp); O protótipo da função fwrite() é: int fwrite(void *buffer,int numero_de_bytes,int count,FILE *fp); signed fwrite(void *buffer,int numero_de_bytes,int count,FILE *fp); real fwrite(void *buffer,int numero_de_bytes,int count,FILE *fp); void fwrite(void *buffer,int numero_de_bytes,int count,FILE *fp); unsigned fwrite(void *buffer,int numero_de_bytes,int count,FILE *fp); Observe o programa abaixo e escolha a opção que descreve o que ele faz. Lê dados de um arquivo binário e armazena na Memória Principal em uma matriz unidimensional, exibindo depois na tela. Lê dados de um arquivo texto e armazena na Memória Principal em uma matriz unidimensional, exibindo depois na tela. Lê dados do teclado e armazena na Memória Principal em uma matriz unidimensional. Depois abre um arquivo do tipo texto para escrita e, se for possível, grava os dados no arquivo. Lê dados do teclado e armazena na Memória Principal em uma matriz unidimensional. Depois abre um arquivo do tipo binário para escrita e, se for possível, grava os dados no arquivo. Lê dados do teclado e armazena na Memória Principal em uma matriz unidimensional. Depois abre um arquivo do tipo binário para escrita e leitura e, se for possível, grava os dados no arquivo. Observe o programa abaixo e escolha a opção que exibe a saída que ele produz. Nessa análise, considere os caracteres de controle \n e \t e atenção especial à função fgets(). Um engenheiro elétrico desenvolveu um programa para que possa, entre outras funções, ler de um arquivo txt dados coletados durante um dia de um usina elétrica. Cada arquivo é salvo seguindo o modelo abaixo: ddmmaaaa.txt (onde tem dd( digita o dia com dois algarismos), mm(digita o mês com dois algarismos) e aaaa(ano com 4 algarismos). O chefe dele quando deseja fazer uma consulta, clica no executável e escolhe a opção leitura e quando lhe é perguntado, digita o nome do arquivo conforme falado acima. Para que isso seja possível, deverá estar presente na função consulta() uma das linhas abaixo. Selecione-a. fp=fopen(nomeArq, "w"); fp=fopen("nomeArq", "a"); " fp=fopen(ddmmaaaa.txt, "w+"); fp=fopen(nomeArq, "r"); fp=fopen("ddmmaaaa.txt", "r");
Compartilhar