Prévia do material em texto
P) 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
D) Quando o salário bruto for R$ 1.920,00, o salário líquido será R$ 1.660,80
P) 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:
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.
P) 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:
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.
P) Analise a árvore a seguir:
Assinale a alternativa que apresenta o percurso em pré-ordem:
E) 6 2 1 4 3 5 8 7 9
P) 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
inicio
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
D) O resultado é VERDADEIRO
P) 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);
}
E) Para a entrada 9 o valor de p sera 21 e o de i sera 26
P) Analise o programa a seguir e assinale a alternativa que apresenta a saída.
A) #include <stdio.h>
B) int main () {
int lin,col, tab;
C) int mat[3][3]={2,3,6,4,5,6,9,8,7};
D) for (lin=0; lin<3; lin++) {
E) for (col=0;col<3;col++) {
F) if(lin == col) {
G) printf("%d ", mat[lin][col]);
H) }
I) }
J) }
K) printf("\n\n");
L) return 0;
M) }
N) 2 5 7
P) Analise o seguinte programa:
int a=5;
int b=3;
b=a++;
printf("%d %d\n", a, b);
Qual alternativa apresenta a saída correta?
6 5
7 6
P) A pilha segue regra de inclusão: o ultimo que entra na seguencia é o primeiro a sair, e por
isso ele é conhecido como (Last In First Out - LIFO). São definidos os comandos:
POP(p): retira o elemento no topo da pilha;
PUSH (p, n): insere um número "n" em uma estrutura de dados do tipo de pilha "p".
Considerando uma estrutura de dados tipo pilha "p", inicialmente vazia, executa-se:
PUSH (p, 1)
PUSH (p, 2)
PUSH (p, 3)
POP (p)
PUSH (p, 4)
POP (p)
POP (p)
PUSH (p, 5)
PUSH (p, 6)
PUSH (p, 7)
POP (p)
D) 6 e 12.
P) Avalie a arvore a seguir.
Assinale a alternativa que apresenta o percurso em ordem.
B) 1 2 3 4 5 6 7 8 9
P) 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;
2
1 4
3 5
7
9
8
6
}
C) Para a entrada 5, a saída será 120
P) 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:
E) 9 12
12 13
P) 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:
E) Algoritmo é a descrição de uma sequência de passos que deve ser seguida 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.
P) 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;
}
C) 1 0 0
P) 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;
}
B) 1 0 2
P) 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;
}
E) Para a entrada 6, a saída será 21
P) 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:
C) 45 4 9 0
P) Desenvolva o teste de mesa para o programa a seguir e assinale a alternativa que
apresenta a saída correta:
150
P) Dois amigos decidiram fazer uma viagem de ferias e desenvolveram um algoritmo para
determinar o gasto medio com o combustivel...
B) Quando o valor do litro de combustivel for R$ 2,00, o gasto medio com combustivel
será de R$18,00.
P) Façamos a avaliação de dois contribuintes. Um obteve renda
anual de R$ 20.000,00, e o outro de R$ 35.000,00. Caso utilizamos o programa descrito a
seguir, qual o valor devido, respectivamente, na declaração anual de imposto de renda por
esses dois contribuintes?
E) O imposto devido será R$ 2.000,00 e R$ 7.750,00, respectivamente.
P) Muitas vezes o uso de vetores e matrizes fica limitado pela necessidade desabermos
antecipadamente a quantidade de elementos que serão necessários...
B) A função malloc reserva a quantidade de bytes que é passada como parametro e
retorna o endereço em que esse espaço de memoria foi reservado.
P) Observe a árvore a seguir e assinale a alternativa que apresenta os nós percorridos para
buscar o nó 7.
A) 6 8 7
6
2 8
9 7 1 4
3 5
P) Observe a árvore a seguir. E assinale a alternativa que apresenta o percurso em pós-
ordem (pós-fixo).
1 3 5 4 2 7 9 8 6
P) 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;
}
C) Quando o valor do ingresso for R$ 15,00 o estudante pagara R$7,50
P) 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;
}
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);
P) O programa a seguir esta incompleto, pois faltam 3 linhas de códigos. O programa recebe
5 números inteiros, ordena em ordem crescente e imprime o resultado
Assinale a alternativa com os comandos que completas, respectivamente, as linhas 16 17 18.
C) tmp= valores[i]
Valores[i] = valores[j]
P) O programa a seguir executa o cadastro de 5 pessoas, destacando 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();
}
D) scanf(“%s”, &c[i].nome);
printf(“\n Telefone: %s”, c[i].telefone);
P) O programa a seguir cadastra 5 produtos. Em seguida, imprime uma lista com o código e
o nome de cada item. Por última consulta o preço de um produto por meio de seu código.
Para que o programa execute corretamente sua função, as linhas 14 e 17 devem ser
preenchidas com:
E) scanf(“%id %s %f, &produto[i].codigo, &produtos[i].nome, &produtos[i].preco);
Printf(“\n%id% ////////// produto[i].preco);
P) Para que o programa execute corretamente sua função, as linhas 14 e 24 devem ser
preenchidas com:
scanf(“%s”, c[i].nome);
Printf(“/n Telefone : %s”, c[i].telefone);
P) Na estrutura de fila, os acessos aos elementos seguem que quem entra é o primeiro que
sai (FIFO). Considerando uma estrutura de dados tipo fila “f”, inicialmente vazia:
5 6 7 8 9
P) São muito comuns, durante o processamento de um programa, situações em que pode
existir a necessidade de repetir um determinado conjunto de comandos por um certo
número de vezes. Com base nessas informações, escolha a alternativa correta:
B) Laços contados: quando se conhece previamente quantas vezes o comando composto
no interior da construção será executado.
P) 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
P) Uma vez implementada uma função de inserção, outra função importa...
A) A remoção deve ser feita sem que a lista perca a sua integridade
P) Um programa faz as seguintes operações:
Le vários caracteres no teclado, e cada caractere lido é colocado dentro de uma fila
Esvazia a fila e coloca cada elemento, um depois do outro, dentro de uma pilha
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
P) A estrutura de dados mais simples é a lista linear, uma cadeia de informações, todas com
a mesma estrutura, mais correlacionadas. Cada uma dessas estruturas é chamada de nó....
Lista linear é uma estrutura de dados na qual elementos de um mesmo tipo de dado estão
organizados de maneira sequencial. Não necessariamente, estes elementos estão
fisicamente em sequência, mas a ideia é que exista uma ordem lógica entre eles. Na
manipulação de listas, precisamos de três operações fundamentais: • inclusão; • busca; •
remoção.
P) A linguagens, em especial a linguagem C, administram a memória RAM, o espaço
disponível para nossos programas serem executados. Com base nessas informações, quais
são as diferenças entre variáveis dinâmicas e variáveis estatísticas na linguagem C?
Basicamente existem três maneiras de reservarmosespaço de memória para o
armazenamento de informações.
A primeira maneira é por meio do uso de variáveis globais (e estáticas).
A segunda maneira é usando variáveis locais. Nessa categoria, o espaço na memória existe
apenas no período em que a função que declarou a variável está sendo executada, sendo
liberado assim que a execução da função terminar.
A terceira maneira de reservar a memória é solicitar ao programa que aloque
dinamicamente um espaço na memória durante sua execução.
P) Analise a tabela a seguir: Escreva um programa em linguagem C que leia uma
temperatura em Fahrenheit e a apresente em Celsius e Reaumur:
#include <stdio.h>
int main(){
float f, c, r;
printf ("Entre com a temperatura em Fahrenheit: ");
scanf ("%f", &f);
c = (f-32)*5/9;
r = (f-32)*4/9;
printf("A temperatura convertida para Celsius e: %2.2f e para Reaumur e: %2.2f", c, r);
return 0;
}
P) 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....
O primeiro número impresso será 21.
#include <stdio.h>
int main (void){
int aux, num1, num2;
aux = 0;
num1 = 0;
num2 = 1;
while(num1 < 50000){
aux = num1 + num2;
num1 = num2;
num2 = aux;
if(aux % 3 == 0 && aux % 7 == 0)
printf("%d\n", aux);
}
return 0;
}
P) 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 dados em vários
níveis, sendo a binária quando um pai tem no máximo dois filhos.
Pré-ordem lê o nó, vai para SAE, vai para SAD.
Ordem: vai para SAE, lê o nó, vai para SAD.
Pós-ordem: vai para SAE, vai para SAD, lê o nó.
P) 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 ponteiro indicando o endereço do elemento seguinte.
LIFO = Último a entrar primeiro a sair.
FIFO = Primeiro a entrar primeiro a sair.
P) Considere a arvore a seguir, que representa uma hierarquia de executivos em uma
empresa. Liste os nome dos executivos, considerando que a arvore vai ser percorrida
seguindo o percurso infixo (ordem).
Antônio, João, Ricardo, Jose, Henrique, Maria, Vanessa, Luiz.
Se a questão solicitar Posfixo a resposta é:
Antonio, Ricardo, João, Henrique, Maria, Luiz, Vanessa, Jose.
P) Considere o fluxograma apresentado na figura a seguir. Escreva um programa em C que
faça o que o fluxograma descreve, e responda: se N é igual a 5, qual é a saída do programa?
A saida do programa é 120.
int main(){
int n, i, resp;
i=1;
resp=1;
scanf("%d", &n);
while(i<=n){
resp *= i;
i++;
}
printf("%d", resp);
return 0;
}
P) 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);
}
P) Crie um algoritimo em pseudocódigo que leia dois valores inteiros para as variaveis A e B,
efetue a troca dos valores de forma que a variavel A passe a ter o valor da variavel B e que a
variavel B passe a ter o valor da variavel A. Por fim, apresente os valores trocados.
programa pseudocodigo;
variaveis
A, B, vAux : Integer;
inicio
escreva('Informe o valor de A.');
leia(A);
escreva('Informe o valor de B.');
leia(B);
vAux := A;
A := B;
B := vAux;
escreva('O valor de X é: ', (A));
escreva('O valor de Y é: ', (B));
fim.
P) 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");
}
}
}
P) 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);
}
P) Escreva um programa que contenha uma variável do tipo “Vetor de caracteres”, com o
seguinte texto: “Universidade UNIP”. Esse programa deve mostrar o conteúdo dessa variável
na tela (“Universidade”)...
#include <stdio.h>
void linha(char *nome)
{ if(*nome){
linha(nome+1);
putchar(*nome);
printf("\n");
}}
int main()
{
linha("Universidade UNIP");
return 0;
}
P) 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;
}
P) 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;
}
P) O conceito de fila é bem mais intuitivo no dia a dia. Na estrutura de fila, como na pilha, os
acessos aos elementos também seguem uma regra fixa. Quais são os principais fundamentos
sobre a "'strutura fila?
O primeiro que entra é o primeiro que sai (FIFO). Só podemos inserir um novo elemento no
final da fila e só podemos retirar o elemento que está no inicio da fila.
P) O colégio "Esperança" precisa de um programa em linguagem C para cadastrar um aluno.
Crie esse programa utilizando estrutura de dados (struct) que armazene o nome , duas notas
e a média do aluno. Apresente o cadastro (nome, notas e média) após a entrada de todos os
dados:
#include <stdio.h>
struct esperanca {
char nome[20];
int nota;
float media;
}aluno;
int main (void){
int i, soma=0;
struct esperanca aluno;
struct esperanca notaAluno[2];
struct esperanca mediaAluno;
printf("Digite o nome do aluno: ");
scanf ("%s", aluno.nome);
for(i=1;i<=2;++i){
printf("Digite a nota %d do aluno %s: ", i, aluno.nome);
scanf("%d", ¬aAluno[i].nota);
soma += notaAluno[i].nota;
}
mediaAluno.media = soma/2;
printf("Aluno: %s\n", aluno.nome);
for(i=1;i<=2;i++){
printf("nota %d: %d\n", i, notaAluno[i].nota);
}
printf("Media: %.2f", mediaAluno.media);
return 0;
}
P) Simule a execução do programa a seguir indicando qual vai ser sua saida de tela.Se corrigir a expressção "type struct_tipo" para "typedef struct" o programa funciona, e o
resultado será "Number: 20"
P) Variáveis são declarações, portanto fazem parte do desenvolvimento de um algoritmo.
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.