Baixe o app para aproveitar ainda mais
Prévia do material em texto
Exercícios - Questões Objetivas Apresentação 05 - Subrotinas 1. Analise os procedimentos a seguir e marque qual está declarado CORRETAMENTE: a) imprimeMenor (inteiro a, inteiro b) { se (a < b) imprima (a); senão imprima (b); } b) imprimeMenor (inteiro a, inteiro b) { se (a < b) retorne (a); senão retorne (b); } c) imprimeMenor (a, b) { se (a < b) imprima (a); senão imprima (b); } d) imprimeMenor (inteiro x, inteiro y) { se (a < b) imprima (a); senão imprima (b); } e) imprimeMenor (inteiro a, inteiro b) { inteiro a, b; se (a < b) imprima (a); senão imprima (b); } 2. Qual fragmento de código chama o procedimento do exercício anterior corretamente? a) inteiro a, b; leia (a, b); imprimeMenor (inteiro a, inteiro b); b) inteiro a, b; leia (a, b); imprimeMenor (a, b); c) inteiro a, b; imprimeMenor (leia (a), leia (b)); d) imprimeMenor (inteiro x, inteiro y); e) inteiro a, b, menor; leia (a, b); menor imprimeMenor (a, b); 3. Considere o algoritmo a seguir e marque qual será sua saída se as entradas forem 3.14 e 1.54, respectivamente. lerDados (real x, real y) { leia (x); leia (y); } principal { real x, y; x 0.00; y 2.34; lerDados (x, y); imprima (“x é: ” x “e y é “y); } a) x é -3.14 e y é 3.88 b) x é 3.14 e y é 2.34 c) x é 3.14 e y é 1.54 d) x é 0.00 e y é 2.34 e) x é 3.14 e y é -1.54 4. Assinale a saída do algoritmo a seguir, considerando 7 como entrada. inteiro função (inteiro x) { inteiro i, aux; aux 1; para (i 1; i < x; i i + 1) faça { aux aux*i; } retorne (aux); } principal { inteiro num, aux; leia (num); aux função (num); imprima (“Resultado é: “aux); } a) Resultado é: 7 b) Resultado é: 5040 c) Resultado é: 120 d) Resultado é: 720 e) Resultado é: 21 5. Qual a saída do algoritmo em C a seguir? void calculo (int *a, int *b) { *a = *a * 2; *b = *b + 5; } int main() { int x = 2, y = 12; calculo(&x, &y); printf("%d e %d", x, y); return 0; } a) 2 e 12 b) 12 e 2 c) 17 e 4 d) 17 e 5 e) 4 e 17 6. Analise o procedimento e sua chamada: void media (float nota1, float nota2, float nota3, char opcao) { float media; if (opcao == ‟A‟) media=((nota1+nota2+nota3)/3); if (opcao == ‟P‟) media=((nota1*5+nota2*3+nota3*2)/10); printf("Media = %.2f \n",media); } media (60, 80.6, x, y); Sabendo que a saída foi 80.10, os valores de x e y são, respectivamente: a) 99 e P b) 99.7 e A c) 99.70 e S d) 84.7 e P e) 99.7832 e A 7. Considerando que uma pessoa tem ICM (índice de massa corporal) 27.8, de acordo com o procedimento a seguir, ela é: void classifica (float IMC) { if (IMC < 18,5) printf ("A seguir do peso. \n"); else if (IMC <= 25) printf ("Peso normal. \n"); else if (IMC <= 30) printf("Acima do Peso. \n"); else printf("Obeso. \n"); } a) Obeso b) A seguir do Peso c) Acima do Peso d) Saudavel e) Peso normal 8. Observe atentamente o algoritmo a seguir e indique a linha onde está o erro: 1. #include <stdio.h> 2. #include <stdlib.h> 3. float calculaMedia (float n1, float n2, float m) 4. { 5. *m = (n1+n2)/2; 6. return *m; 7. } 8. int main() 9. { 10. float nota1, nota2, media; 11. 12. printf ("Digite nota 1: "); 13. scanf ("%f", ¬a1); 14. printf ("Digite nota 2: "); 15. scanf ("%f", ¬a2); 16. 17. media = calculaMedia(nota2, nota1, &media); 18. printf("Media e': %.2f", media); 19. 20. return 0; 21. } a) Linha 3 b) Linha 17 c) Linha 18 d) Linha 6 e) Linha 5 9. Uma pessoa tem 21 anos, 5 meses e 20 dias de idade, isso equivale a quantas semanas de idade de acordo coma função? inteiro idadeEmSemanas (inteiro ANOS, inteiro MESES, inteiro DIAS) { inteiro TOTAL; TOTAL ANOS*365+MESES*30+DIAS; TOTAL (TOTAL div 7); retorne (TOTAL); } a) 7835 semanas b) 1305 semanas c) 1119.28 semanas d) 119 semanas e) 1119 semanas 10. Considerando o algoritmo em C a seguir e, primeiro, as entradas 2, 10 e 5, e em segundo as entradas 9, 3 e 6, marque a alternativa que representas as saídas do algoritmo. Considere as entradas respectivas. #include <stdio.h> #include <stdlib.h> int funcaoXYZ (int X, int Y, int *Z) { int i; if (X > Y && Y > *Z) { *Z = X * Y; } else { if (Y > *Z && *Z > X) Y = X + *Z; else { if (*Z > X && *Z > Y) { for (i=0; i < 3; i++) { X++; *Z = *Z - 1; } } else { for (i=0; i < 4; i++) { Y--; Z++; } } } } if (*Z%2 == 0) X*=2; else Y+=13; return (X + Y + *Z); } int main() { int A, B, C; printf ("Digite valor de A: "); scanf ("%d", &A); printf ("Digite valor de B: "); scanf ("%i", &B); printf ("Digite valor de C: "); scanf ("%i", &C); printf("Valor de Retorno e': %d", funcaoXYZ(A, C, &B)); printf("\nValores de A, B e C sao: %d, %d e %d", A, B, C); return 0; } a) Valor de Retorno é: 30 Valores de A, B e C sao: 2, 10 e 5 Valor de Retorno é: 78 Valores de A, B e C sao: 9, 3 e 6 b) Valor de Retorno é: 35 Valores de A, B e C sao: 2, 7 e 5 Valor de Retorno é: 75 Valores de A, B e C sao: 9, 54 e 6 c) Valor de Retorno é: 30 Valores de A, B e C sao: 2, 7 e 5 Valor de Retorno é: 30 Valores de A, B e C sao: 2, 7 e 5 d) Valor de Retorno é: 30 Valores de A, B e C sao: 2, 7 e 5 Valor de Retorno é: 78 Valores de A, B e C sao: 9, 54 e 6 e) Valor de Retorno é: 45 Valores de A, B e C sao: 2, 10 e 5 Valor de Retorno é: 78 Valores de A, B e C sao: 2, 54 e 5 Apresentação 06 - Vetores 1. Observando os fragmentos de código, são maneiras de se declarar um vetor, EXCETO: a) inteiro notas [10]; b) int x; scanf (“%d”, &x); int vetor [x]; c) float vet [50]; d) #define TAM 30 int main() { int números [TAM]; e) principal { constanteinteiro H 15; real s[H]; 2. Considerando os fragmentos de código a seguir, todos representam o mesmo vetor de 5 posições, onde todas elas tem o valor 0 (zero). Aumentando o tamanho do vetor para 20, qual maneira de inicializar o vetor começa a se tornar a mais inviável para um programador? a) int vet[5], i; for (i=0; i<5; i++) vet[i] = 0; b) int vet[5] = {0, 0, 0, 0, 0}; c) int vet[5]; vet[0] = 0; vet[1] = 0; vet[2] = 0; vet[3] = 0; vet[4] = 0; d) int vet[5] = {0}; e) int vet[5], i; while (i < 5) { vet[i] = 0; i = i + 1; } 3. Considerando o vetor a seguir, qual será o valor de vet[0], vet[1], vet[7], vet[5] evet[10], respectivamente: 2 6 1 9 32 78 1 67 0 23 a) 2, 6, 67, 78 e não existe. b) Não existe, 2, 1, 32 e 23. c) Não existe, 6, 67, 78 e não existe. d) 2, 6, 67, 78 e 23. e) 2, 6, 78, 67 e não existe. 4. Quais serão as saídas do fragmento de código em C a seguir: Int vet[10] = {10,12,9,5,7,4,3,2,13,11}; int i; for (i = 0; i < 9; i++) { if(vet[i]+vet[i+1] > 10) printf("%d ",vet[i]); } a) 10 12 9 5 7 2 13 11 b) 10 12 9 7 13 11 c) 10 12 9 7 13 d) 10 12 9 3 2 13 e) 10 12 9 5 7 2 13 5. Quais serão as saídas do fragmento de código a seguir: inteiro vet[10], i; para (i 0; i ≤ 9; i i + 1) faça { n[i] i; } para (i 0; i ≤ 9; i i + 1) faça { n[i] (n[i] * i) + 1; imprima(n[i]); } a) 1 2 5 10 17 26 37 50 65 b) 1 1 4 9 16 25 36 49 64 81 c) 0 1 4 9 16 25 36 49 64 81 d) 0 2 5 10 17 26 37 50 65 82 e) 1 2 5 10 17 26 37 50 65 82 6. Quais será a saída do fragmento de código em C a seguir. int vet[10] = {9,12,9,5,13,4,3,1,13,14}; int i; for (i = 0; i < 9; i++) if (vet[i] > vet[i+1]) printf ("%d, ",i+1); a) 9, 5, 4, 1, b) 2, 3, 5, 6, 7 c) 1, 2, 4, 5, 6 d) 2, 3, 5, 6, 7, 8 e) 9, 5, 4, 1 7. Observe o algoritmo em C a seguir, qual a condição que deve ser colocada no lugar de “????????” para que a ordenação do vetor fique correta para qualquer entrada. #include <stdio.h> #include <stdlib.h> #define tamanho 10 void ordena (int vet[], int tam) { int i,j,aux; for(??????????????) { for(j=tam-1; j>i; j--) { if(vet[j]<vet[j-1]) { aux=vet[j]; vet[j]= vet[j-1]; vet[j-1]=aux; } } } } int main() { int vetor[tamanho],i; printf("Informe %d valores para seu vetor: ",tamanho); for(i=0;i<tamanho;i++) scanf("%d",&vetor[i]); printf("O vetor ordenado e':\n"); ordena(vetor,tamanho); for(i=0;i<tamanho;i++) printf("%d ", vetor[i]); return 0; } a) (i=0; i <= (tam-2); i++) b) (i=0; i <= (tam); i++) c) (i=0; i <= (tam-1); i++) d) (i=tam; i <= (-2); i--) e) (i=(tam-5); i <= (tam-2); i++) Apresentação 07 - Vetores de Caracteres 1. São maneiras corretas de inicializar um vetor de caracteres, EXCETO: a) char str[5] = {„c‟,‟a‟,‟s‟,‟a‟,‟s‟}; b) char str[5] = “casa”; c) caracter nome[30]; nome “Jose”; d) caracter cidade[30]; leia (cidade); e) char str[50]; scanf (“%s”, str); 2. Observe os fragmentos de código a seguir e julgue-os como C (correto) ou I (incorreto). char palavra[ ] = “algoritmo”; char palavra[ ]; palavra[ ] = “algoritmo”; char palavra[20]; palavra = “algoritmo” a) C – C – C b) C – I – C c) C – I – I d) I – C – I e) I – I – I 3. A linguagem de programação C possui uma biblioteca para trabalhar com strings (ou vetores de caracteres), dentre algumas funções dessa biblioteca temos, gets(), puts() e strlen(). O que cada uma dessas funções faz, respectivamente? a) Imprime a string, lê a string e retorna o tamanho da string. b) Lê a string, imprime a string e retorna o tamanho da string. c) Lê a string, imprime a string e copia uma string para outra. d) Apaga a string, imprime a string e lê a string. e) Imprime a string, apaga a string, e lê a string. 4. Qual será a saída do algoritmo a seguir? principal { inteiro i 8; caracter frase[30]; frase “Estamos_ciente_da_materia”; enquanto ( i <= 17 ) faça { imprima (frase[i]); i i + 1; } } a) Estamos_ciente_da_materia b) ciente_da_materia c) Estamos_ciente_da d) ciente_da_ e) mos_ciente_da_mat 5. Qual será a saída do algoritmo em C a seguir? #include <stdio.h> #include <stdlib.h> #include <string.h> int contc(char str[], char c) { int tam,i,cont=0; tam=strlen(str); for(i=0;i<tam;i++) { if (str[i]==c) cont++; } return cont; } int main() { char texto[ ] = "Estamos Aqui Para Acompanhar Voce"; int x; x = 0; x = contc (texto, 'a'); printf("%d",x); return 0; } a) 0 b) 7 c) 6 d) 3 e) 5 6. Analise o algoritmo em C a seguir, e marque qual será a saída. Dica: procure informações sobre a biblioteca <ctype.h>. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> void stringup(char destino[], char origem[]) { int tamanho,i; tamanho=strlen(origem); for(i=0;i<tamanho;i++) { destino[i]=toupper(origem[i]); } destino[i]='\0'; } int main() { char s1[20],s2[20]="QuaLqueR.. Coisa?"; stringup(s1,s2); printf("%s",s1); return 0; } a) qualquer.. coisa? b) Qualquer.. coisa? c) qUAlQUEr.. cOISA? d) QuaLqueR!! Coisa. e) QUALQUER..COISA? 7. O algoritmo em C a seguir foi criado para ler uma string e um tamanho, com isso ele copia todos os caracteres da string lida até o tamanho lido para uma segunda string, em seguida, como saída, mostra o que foi copiado. Porém, temos um problema, o algoritmo não está funcionando corretamente. Analise o algoritmo e marque a linha em que ele está ERRADO 1. #include <stdio.h> 2. #include <stdlib.h> 3. 4. void copiaAte(char destino[], char origem[], int num) 5. { 6. int i; 7. 8. for(i=0;(i<num)||(origem[i]!='\0');i++) 9. { 10. destino[i]=origem[i]; 11. } 12. 13. destino[i]='\0'; 14. } 15. 16. int main( ) 17. { 18. char s1[80], s2[80]; 19. int d; 20. printf ("Digite uma frase:\n"); 21. gets (s1); 22. printf ("Quantos digitos quer copiar?\n"); 23. scanf ("%d", &d); 24. copiaAte (s2, s1, d); 25. printf("\nCopiou: "); 26. puts(s2); 27. return 0; 28. } a) Linha 4 b) Linha 8 c) Linha 10 d) Linha 24 e) Linha 21 Gabarito Apresentação 05 - Subrotinas: 1. A 2. B 3. C 4. D 5. E 6. B 7. C 8. A 9. E 10. D Apresentação 06 - Vetores Numéricos: 1. B 2. C 3. A 4. E 5. E 6. B 7. A Apresentação 07 - Vetores de Caracteres: 1. E 2. B 3. B 4. D 5. E 6. E 7. B
Compartilhar