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