Prévia do material em texto
MULTIPLA ESCOLHA
1. Observe a árvore a seguir e assinale a alternativa que apresenta os nós
percorridos para buscar o nó 7.
a) 6 8 7
b) 6 7
c) 1 2 6 8 7
d) 9 8 7
e) 3 5 4 2 1 6 8 7
2. Avalie a arvore a seguir.
Assinale a alternativa que apresenta o percurso em ordem.
a) 6 2 8 1 4 7 9 3 5
b) 1 2 3 4 5 6 7 8 9
c) 1 3 5 4 2 7 9 8 6
d) 6 2 1 4 3 5 8 7 9
e) 9 8 7 6 5 4 3 2 1
3. Considere o programa a seguir e assinale a alternativa correta:
#include <stdio.h>
void main()
{
Int x, y = 1;
Printf(“Digite um numero inteiro não negativo:”);
Scanf(“%d” &x)
For (y=1 , x>1, x--)
Y += x;
Printf(“Saida %d”, y);
Return 0;
}
f) Para a entrada 3, a saída será 9
g) Para a entrada 4, a saída será 9
h) Para a entrada 5, a saída será 20
i) Para a entrada 7, a saída será 25
j) Para a entrada 6, a saída será 21
4. Analise o programa a seguir e assinale a alternativa correta:
#include <stdio.h>
Void main()
{
Int n, count, p=1, i=1;
Printf(“Digite um numero inteiro positivo: “);
Scanf(“%d”, &n);
For(count=1, count <= n, count++)
{
If(cont % 2 == 0)
p += count;
else
i += count;
}
Printf(“\nValor p: %d\n”, p);
Printf(“\nValor i: %d\n”, i);
}
a) Para a entrada 8, o valor de p sera 21 e o de i sera 16
b) Para a entrada 7, o valor de p sera 15 e o de i sera 17
c) Para a entrada 6, o valor de p sera 13 e o de i sera 26
d) Para a entrada 10, o valor de p sera 26 e o de i sera 31
e) Para a entrada 9 o valor de p sera 21 e o de i sera 26
5. O cinema “CINEUP”, apresentado a seguir, desenvolveu um programa que
determina o preço com desconto
para as entradas de cinema.
#include <stdio.h>
void main () {
float preco;
int categoria;
float preco_final;
printf("Digite o preco do ingresso: ");
scanf("%f", &preco);
printf("Selecione \n");
printf("1 - estudante \n2- Aposentado \n3 - normal\n");
printf("Digite a categoria do cliente (1/2/3)");
scanf("%d", &categoria);
switch(categoria) {
case 1;
preco_final = preco * 0.50f;
prinf("Com o desconto estudante %f\n", preco_final);
break;
case 2;
preco_final = preco * 0.70f;
prinf("Com o desconto aposentado: %f\n", preco_final);
break;
case 3;
printf("Preço sem desconto: %f\n", preco);
break
defaul;
printf("Categoria invalida!\n");
break;
}
return 0;
}
a) Quando o valor do ingresso for R$ 15,00, o estudante pagara R$ 10,00
b) Quando o valor do ingresso for R$ 15,00, o aposentado pagara R$ 10,00
c) Quando o valor do ingresso for R$ 15,00 o estudante pagara R$7,50
d) Quando o valor do ingresso for R$ 20,00 o aposentado pagara R$ 10,00
e) Quando o valor do ingresso for R$ 20,00 o estudante pagara R$ 9,00
6. O programa a seguir cadastra 5 produtos. Em seguida, imprime uma lista com o
código e o nome de cada item.
Por último, consulta o preço de um produto por meio de seu código.
#include <stdio.h>
typedef struct (
long codigo;
char nome[100];
float preco;
) Produto;
#define QUANTIDADE_DE_PROTUDOS 5
int main () {
int i;
Protudo protudos[QUANTIDADE_DE_PRODUTOS];
printf("Campos: codigo-do-produto nome preco\n");
for(i=0; (i < QUANTIDADE_DE_PRODUTOS); i++) {
printf("\nInforme os dados do produto(%i): ",i+1);
__________________________________
}
for(i=0; (i < QUANTIDADE_DE_PROTUDOS); i++) {
______________________________
}
long codigo_digitado;
printf("\nInforme o codigo do produto: ");
scanf("%1d", &codigo_digitado);
for(i=1; (i < QUANTIDADE_DE_PRODUTOS); i++){
if(produtos[i].codigo == codigo_digitado) {
printf("\nPreco: R$ %1.2f\n", produtos[i].preco);
}
}
getchar();
return 0;
}
a) scanf(“%id %s $f, produtos[i].codigo, produtos[i].nome, produtos[i].preco);
printf(“\n%id\t%s R$ %1.2f”, produtos[i].codigo, produtos[i].nome, produtos[i].preco);
b) scanf(“%id %s $f, produtos[i].codigo, produtos[i].nome, produtos[i].preco);
printf(“\n%id\t%s R$ %1.2f”, &produtos[i].codigo, &produtos[i].nome, &produtos[i].preco);
c) scanf(“%id %s $f, &produtos[i].codigo, &produtos[i].nome, &produtos[i].preco);
printf(“\n%id\t%s R$ %1.2f”, produtos.codigo, produtos.nome, produtos.preco);
d) scanf(“%id %s %f código, nome, preco);
printf(“\n%id\t%s R$ %1.2f, código, nome, preco);
e) scanf(“%id, $s $f, &produtos[i].codigo, &produtos[i].nome, &produtos[i].preco);
printf(“\n%id\t%s R$ %1.2f”, protudos[i].codigo, produtos[i].nome, produtos[i].preco);
7. Avalie o seguinte programa:
#include <stdio.h>
void main()
{
int a=9;
int b=3;
int c;
b+=a;
c=-b;
printf(“%d %d\n”, a, b);
a=b++;
printf(“%d %d\n”, a, b);
}
Assinale a alternativa que apresenta a saída correta:
a) 9 3
3 4
b) 3 12
4 5
c) 3 2
2 3
d) 12 2
2 4
e) 9 12
12 13
8. Dado o seguinte programa:
#include <stdio.h>
void main()
{
int a=45;
int b=5;
int c, d;
c = a/b;
d = a % b--;
printf(“%d %d %d %d\n”, a, b, c, d);
system(“pause”);
}
Assinale a alternativa que apresenta a saída correta:
a) 45 5 9 0
b) 45 5 3 1
c) 45 4 9 0
d) 15 5 9 0
e) 15 4 9 0
9. Uma locadora de carros tem uma regra para aluguel, a qual será apresentada no
programa a seguir:
#include <stdio.h>
#include <string.h>
int main()
{
float preconormal, descontopromo, precototal;
char dia[15], categoria[15];
printf("Digite um preço normal: ");
scanf("%f", &preconormal);
printf("Digite o dia da semana: ");
scanf("%s", dia);
printf("Digite a categoria (LANCAMENTO ou COMUM):");
scanf("%s", categoria);
if(strcmp(dia, "SEGUNDA")==0 || strcmp(dia, "TERCA")==0 || strcmp(dia, "QUINTA")==0) {
descontopromo = preconormal - (0.90 * preconormal);
}
else if (strcmp(dia, "QUARTA")==0 || strcmp(dia, "SEXTA")==0 || strcmp(dia, "SABADO")==0 ||
strcmp(dia, "DOMINGO")==0) {
descontopromo = 0;
}
if(strcmp(categoria, "LANCAMENTO")==0) {
preconormal = (preconormal * 0.90);
}
else if(strcmp(categoria, "COMUM")==0) {
preconormal = preconormal;
}
precototal = descontopromo + preconormal;
printf("PREÇO FINAL = %2f\n", precototal);
return 0;
}
Considerando o preço de R$ 80,00 para a locação, assinale a alternativa correta:
a) O preço de QUARTA para LANÇAMENTO é de R$ 72,00
b) O preço de TERÇA para LANÇAMENTO é de R$ 72,00
c) O preço de DOMINGO para COMUM é de R$ 90,00
d) O Preço de SEGUNDA para COMUM é de R$ 85,00
e) O Preço de QUINTA para LANÇAMENTO é de R$ 72,00
10. O programa a seguir executa o cadastro de 5 pessoas, destancando nome, endereço e
telefone.
Em seguida, apresenta-se todo o cadastro.
#include <stdio.h>
struct cadastro {
char nome[20];
char end[50];
char telefone[11];
};
void main () {
int i;
struct cadastro c[$];
for (i=0; i<5; i++) {
printf("\n Digite seu Nome: ");
_______________________________
printf("\n Digite seu Endereço: ");
scanf("%s", &c[i].end);
printf("\n Digite seu Telefone: ");
scanf("%s", &c[i].telefone);
}
for (i=0; i<5; i++) {
printf("\n Nome : $s", c[i].nome);
printf("\n Endereço : $s", c[i].end);
_________________________________
printf("\n\n");
}
system ("pause");
getch();
}
Para que o programa execute corretamente sua função, as linhas 14 e 24 devemser
preenchidas com:
a) scanf(“%s”, c[i].nome);
printf(“\n Telefone: %s”, c[i].telefone);
b) scanf(“%s”, &nome);
printf(“\n Telefone: %s”, telefone);
c) scanf(“%s”, c[i].nome);
printf(“\n Telefone: %s”, &c[i].telefone);
d) scanf(“%s”, &c[i].nome);
printf(“\n Telefone: %s”, c[i].telefone);
e) scanf(“%d”, &c[i].nome);
printf(“\n Telefone: %s”, c[i].telefone);
11. Avalie o programa a seguir e assinale a alternativa correta:
#include <stdio.h>
int main () {
int x, y = 1;
printf("Digite um numero inteiro nao negativo:");
scanf("%d", &x);
while(x>1){
y *=x;
x--;
}
printf("Saida %d", y);
return 0;
}
a) Para a entrada 3, a saída será 9
b) Para a entrada 2, a saída será 4
c) Para a entrada 5, a saída será 120
d) Para a entrada 4, a saída será 20
e) Para a entrada 4, a saída será 100
12. Com base no programa a seguir, considere as entradas 0, 1 e 5. Qual será a saída
apresentada para cada entrada, respectivamente?
#include <stdio.h>
int func(int n)
{
if ( n == 0)
return (1);
else
return(func(n-1)*(n-1));
}
int main () {
int a, b;
printf("Digite um valor inteiro:");
scanf("%d", &a);
b = func(a);
printf("%d \n", b);
return 0;
}
a) 0 1 5
b) 0 1 1
c) 1 0 0
d) 0 1 4
e) 0 1 3
13. Com base no programa a seguir, considere as entradas 0, 1 e 5. Qual será a saída
apresentada para cada entrada, respectivamente?
#include <stdio.h>
int func(int n) {
if (n == 0) {
return (1);
}
else {
return(n - func(n-1));
}
}
int main() {
int a, b;
printf("Digite um valor inteiro:");
scanf("%d", &a);
b = func(a);
printf("%d \n", b);
return 0;
}
a) 1 0 5
b) 1 0 2
c) 0 1 2
d) 0 1 5
e) 1 1 5
14. Cada procedimento que fazemos em qualquer momento da vida obedece a uma sequência
de ações. As ações obedecem a uma sequência lógica, procurando chegar a certo objetivo. O
computador não tem conhecimento próprio. Assim, se precisarmos de sua ajuda para atingir
um objetivo, devemos instrui-lo com um algoritmo escrito conforme uma lógica correta, a fim de
ele cumprir a tarefa que queremos. Com base nessas informações, escolha a alternativa
correta:
a) O algoritmo é um conjunto infinito de instruções de comandos de ações que tem como
objetivo a resolução de uma tarefa ou a resolução de um problema.
b) Algoritmo é uma sequência infinita de instruções ou operações cuja execução em tempo
finito, resolve um problema computacional qualquer que seja sua instancia.
c) Algoritmo são regras informais para a obtenção de um resultado ou solução de um
problema, englobando fórmulas de expressões aritméticas
d) Ação é um acontecimento que a partir de um estado inicial, após um período de tempo
infinito produz um estado final previsível e bem-definido.
e) Algoritmo é a descrição de uma sequência de passos que deve ser segui da para a realização
de uma tarefa. Algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam
numa sucessão finita de Ações
15. A linguagem C não apresenta comandos de entrada e saída. Esses comandos são feitos
por meios de funções. Existe uma biblioteca-padrão, o stdio.h. Sabendo dessas informações
escolha a alternativa correta:
a) Além dos especificadores, podemos incluir textos no formato em que são apresentados na
saída junto com os dados. Essa saída é formada pela cadeia de caracteres do formato, em que os
especificadores são substituídos pelos valores contidos nas variáveis e que não sejam
correspondentes.
b) Nos inteiros, o número que fica entre o sinal de % e o “d” determina a quantidade de dígitos
que o valor ocupara na formatação de ponto flutuante, o número antes do ponto determina o valor
de dígitos, e o número depois da virgula, a quantidade de dígitos antes da virgula.
c) Os valores digitados no teclado são capturados pela função scanf, que também pertence a
biblioteca stdio.h. Assim como o printf tem duas partes, uma que terminar o formato de leitura e a
segunda variável que não irá receber o valor digitado.
d) Para o scanf ler um valor e atribui-lo a uma variável, é necessário passar o endereço da
variável que recebera o valor digitado. O operador & retorna o endereço de uma variável.
e) Os especificadores de tipos do formato não são similares aos utilizados na função printf. A
função scanf utiliza especificadores diferentes para o tipo float e o tipo double
16. A linguagem C pertence a uma família de linguagens cujas características são:
portabilidade, modularidade, compilação separada, recursos de baixo nível, geração de código
eficiente, confiabilidade, regularidade, simplicidade e facilidade de uso. Com base nessas
informações escolha a alternativa correta:
a) A linguagem C é considerada uma linguagem de nível médio alto. Não é uma linguagem de
máquina reconhecida apenas pelo sistema operacional ou pelo processador.
b) A linguagem C pertence à classe dos programas compilados, que são escritos em texto e
passam por traduções para adequar-se ao sistema de banco de dados.
c) Como toda linguagem de programação, a linguagem C não é muito rígida na sua sintaxe.
Sintaxe são regras detalhadas para um programa possa ser executado.
d) Funções são os subprogramas em C, por sua vez, são chamados por outras funções
executando tarefas especificas. Há funções básicas que são definidas nas bibliotecas -padrão
da linguagem e outras que são desenvolvidas por terceiros, com rotinas mais especificas.
e) O compilador não ignora as quebras de linha, portanto comandos escritos em linhas
diferentes, mas separados apenas por esse recurso, para o compilador, estão na mesma linha
17. Analise o algoritimo “expressão” e identifica a saída nas alternativas a seguir:
Algoritimo “expressão”
var
a, b, c, d: inteiro
resultado: logico
início
a<-4
b<-3
c<-2
d<-1
resultado<-(a>b)e(b>c)ou((c+d*a)<(d-c*2))
escreva (“O resultado é: “, resultado)
fimalgoritimo
a) O resultado é ABCD
b) O resultado é FALSO
c) O resultado é NÃO
d) O resultado é VERDADEIRO
e) O resultado é RESULTADO
18. Um programa faz as seguintes operações:
I. Le vários caracteres no teclado, e cada caractere lido é colocado dentro de uma fila
II. Esvazia a fila e coloca cada elemento, um depois do outro, dentro de uma pilha
III. Esvazia a pilha e imprime cada elemento, um depois do outro
Caso sejam introduzidos os valores A B C D E, quais serão os valores impressos no fim?
a) E D C B A
b) A B C D E
c) A B D E C
d) E A D B C
e) C A B D E
19. A empresa “Fantasia” desenvolveu o algoritimo apresentado a seguir para calcular alguns
valores da folha de
pagamento.
Algoritimo “Salario”
var
nome: caráter
horas, salariol, salariob, descontol, descontor: real
inicio
escreva (“Digite o nome do funcionário”)
leia(nome)
escreva(“Digite a quantidade de horas trabalhadas no mês:”)
leia(horas)
salariob <- (12*horas)
descontol <- salariob * 0.085
descontor <- salariob * 0.05
salariol <- salariob – (descontol + descontor)
escreva(nome, salariob, descontol, descontor, salariol)
fimAlgoritimo
a) Quando o salário bruto for R$ 2,000,00, o salário líquido será R$ 1500,00
b) Quando o salário bruto for R$ 2,000,00, o salário líquido será R$ 1820,30
c) Quando o salário bruto for R$ 1.920,00, o salário líquido será R$ 1.500,50
d) Quando o salário bruto for R$ 1.920,00, o salário líquido será R$ 1.660,80
e) Quando o salário bruto for R$ 1.500,00, o salário líquido será R$1.100,20
20. Analise o programa a seguir e assinale a alternativa que apresenta a saída.
#include <stdio.h>
int main () {
int lin,col, tab;
int mat[3][3]={2,3,6,4,5,6,9,8,7};
for (lin=0; lin<3; lin++) {
for (col=0;col<3;col++) {
if(lin == col) {
printf("%d ", mat[lin][col]);
}
}
}
printf("\n\n");
return 0;
}
a) 2 5 7
b) 2 3 6
c) 4 5 6
d) 9 8 7
e) 6 6 7
DISCURSIVAS.
1. Desenvolva um programa em linguagem C que calcule o produto de dois números
inteiros fornecidos pelo
usuário. Utilize apenas a operação de adição.
#include <stdio.h>
int main () {
int i, n1, n2;
int x = 0;
printf("Num1: ");
scanf("%d", &n1);
printf("Num2: ");
scanf("%d", &n2);
for(i=1; i<=n2; i++)
{
x+=n1;
}
printf("Produto = %d", x);
}
2. Construa um programa em linguagem C que calcule o quociente e o resto de uma
divisão entre dois números inteiros usando somente a adição e a subtração.
#include <stdio.h>
int main () {
int a, b, q;
printf("Dividendo: ");
scanf("%d", &a);
printf("Divisor: ");
scanf("%d", &b);
while(a>=b)
{
a=a+(-b);
q++;
}
printf("Resto %d\n quociente %d", a, q);
}
3. Conceitue uma lista ligada e explique o funcionamento da pilha (Last In Firt Out LIFO) e
da fila (First In First Out – FIFO).
Uma lista ligada é um conjunto linear de nós, que segue unidirecionalmente. Cada nó é um
conjunto de dados mais um ponteido indicando o endereço do elemento seguinte.
LIFO = Último a entrar primeiro a sair.
FIFO = Primeiro a entrar primeiro a sair.
4. Conceitue uma árvore e o tipo particular, o qual é chamado arvore binária. Explique as
três formas de percorrer uma árvore (pré-ordem, ordem e pós-ordem).
Arvores são estruturas de dados que permitem a representação de de dados em vários níveis,
sendo a binária quando um pai tem no máximo dois filhos.
Pré-ordem le o nó, vai para SAE, vai para SAD.
Ordem: vai para SAE, le o nó, vai para SAD.
Pós-ordem: vai para SAE, vai para SAD, le o nó.
5. Considere a arvore a seguir, que representa uma hierarquia de executivos em uma
empresa. Liste os nomes dos executivos, considerando que a arvore vai ser percorrida
seguindo o percurso infixo (ordem).
Antônio, João, Ricardo, Jose, Henrique, Maria, Vanessa, Luiz.
6. Variáveis são declarações, portanto fazem parte do desenvolvimento de um algoritmo o.
Descreva, conforme seu conhecimento, o que são variáveis, como funcionam e como são
utilizadas.
Variável é espaço na memória que reservamos e damos um nome, o computador
armazena um valor nesse espaço e podemos chamar esse valor pelo nome da variável
ou alterar conforme necessário
7. Desenvolva um programa em linguagem C para informar o período de renovação dos
exames da carteira de habilitação. Menores de idade não possuem carteira. Até 65 anos, a
validade do documento expira a cada 5 anos; depois o exame de renovação deve ser feito a
cada 3 anos.
#include <stdio.h>
int main ()
{
int idade;
printf("Idade: ");
scanf("%d", &idade);
if(idade < 18) {
printf("Menor de idade");
}
else
{
if(idade >= 65) {
printf("Renovar de 3 em 3 anos");
}
else {
printf("Renovar de 5 em 5 anos");
}
}
}
8. Escreva um fragmento de programa em C que contenha:
•Uma estrutura de arvore binária que armazene um número inteiro e um número flutuante em cada
nó, bem como ponteiros para as duas subárvores;
• Uma função que crie esses nós.
struct arv {
int info;
struct arv* sae;
struct arv* sad; };
typedef struct arv;
Arv* cria(int c, Arv* sae, Arv* sad){
Arv* p=(Arv*)malloc(sizeof(Arv));
p->info = c;
p->sae = sae;
p->sad = sad;
return p;
}
9. A sequência de Fibonacci corresponde a sequência de números F(n) = f(n-1)+f(n-2), com
o f(0)=0 e f(1): 0, 1, 1, 2, 3, 5, 8, 13 ,21, 34, 55, 89, 144, 233....
Escreva um programa em C que imprima na tela apenas os números que pertencem a
sequência de Fibonacci, que também sejam divisíveis por 3 e por 7, e que sejam inferiores a
50000 (todas essas condições devem ocorrer simultaneamente). Os demais números não
devem ser impressos. Qual será o primeiro número impresso pelo programa.
10. Faça um programa em linguagem C que receba um número inteiro e apresente o seu
fatorial (5! = 1 * 2 * 3 * 4 *5 = 120). Crie uma função recursiva para resolver o problema.
#include <stdio.h>
int main()
{
int fat, n;
printf("Insira um valor: ");
scanf("%d", &n);
for(fat = 1; n > 1; n = n - 1)
fat = fat * n;
printf("\nFatorial: %d", fat);
return 0;
}