Lista 1 – Fundamentos de programação em C

Propaganda
Lista 1 – Fundamentos de programação em C
1) Faça um programa em C que solicite um número inteiro e escreva o seu sucessor.
2) Faça um programa em C que solicite um número decimal e apresente o dobro deste
número.
3) Faça um programa em C que solicite dois números decimais e apresente o resultado da
multiplicação entre os números.
4) Faça um programa em C que solicite o preço de um produto e apresente o valor dele com
10% de desconto.
5) Faça um programa em C que solicite o número de uma medida em metros e imprima essa
medida em centímetros e milímetros.
6) Faça um programa que solicite o raio de uma esfera e então calcule o seu volume e a sua
área. Considere o “pi” como sendo 3.14.
V=
A=4 *
pi * r2
7) Faça um programa em C que leia dois números inteiros e apresente o resto da divisão dos
números informados.
8) Faça um programa em C que solicite um número e apresente a raiz quadrada deste número.
9) Faça um programa em C que solicite um número e apresente o cubo deste número.
10) Faça um programa em C que leia 3 notas de um aluno e apresente a média das notas deste
aluno.
11) Faça um programa em C que leia uma temperatura em graus Celsius e apresente a
temperatura em graus Fahrenheit. Formula: F = (9*C+160.0)/5.0.
12) Faça um programa em C que receba um número inteiro de segundos e apresenta a
quantidade correspondente em horas, minutos e segundos.
Exemplo: 3987 segundos corresponde a: 1 hora, 6 minutos e 27 segundos.
13) Faça um programa em C que receba um número inteiro de dias e apresenta a quantidade
correspondente em anos, meses e dias. Considere que todos os meses possuem 30 dias e que
o ano possua 360 dias.
Exemplo: 3997 dias corresponde a: 11 anos, 1 mês e 7 dias.
14) Faça um programa em C que leia no nome de uma pessoa e o ano que nasceu. O programa
deve apresentar na tela a seguinte mensagem: “[Nome da pessoa], você já viveu [Idade da
pessoa]”.
15) Faça um programa em C que solicite o valor total da compra e o valor percentual de
desconto. Apresente na tela o valor final.
16) Faça um programa em C que leia o dia, mês e ano atual e o dia, mês e ano de nascimento
do usuário. O programa deve imprimir quantos dias o usuário já viveu.
17) Uma matriz 2x2 é composta por duas linhas e duas colunas, conforme imagem abaixo:
A=|
|
Sabendo que o determinante da matriz acima pode ser calculado pela seguinte fórmula:
D = a11 x a22 – a12 x a21
Faça um programa em C que leia os elementos da matriz e então apresente na tela o seu
determinante.
Lista 2 – Estrutura de decisão
1) Faça um programa em C que leia dois números e apresente na tela o maior número
informado.
2) Faça um programa em C que leia um número e informa se ele é positivo ou negativo.
3) Faça um programa em C que leia um número e informa se ele é par ou ímpar.
4) Faça um programa em C que leia a média de um aluno e informe se ele está aprovado
(média maior ou igual a 7,0) ou reprovado (média inferior a 7,0).
5) Faça um programa em C que leia três número e apresenta na tela o maior número.
6) Faça um programa em C que leia três números e apresente na tela o resultado da
subtração entre o maior número com o menor número.
7) Faça um programa em C que leia três números e os exiba em ordem crescente(do
menor para o maior).
8) Faça um programa em C que solicite dois números e apresente o resultado da divisão.
Importante: um número não pode ser dividido por 0. O programa deve fazer essa
verificação.
9) Faça um programa em C que leia o valor total da compra e a forma de pagamento (1 –
A vista, 2 – Parcelado em duas vezes e 3 – Parcelado em 3 vezes) e apresente no final o
valor total da compra. Sabendo que para pagamento a vista há um desconto de 5%,
em duas vezes há um acréscimo de 10% e em três vezes há um acréscimo de 15%.
10) Em uma competição de natação os atletas são classificados em categorias de acordo
com a sua idade. Faça um programa que leia a idade do atleta e apresente na tela em
qual categoria ele deve competir.
Idade
Até 3 anos (inclusive)
4 a 6 anos
7 a 10 anos
11 a 13 anos
14 a 15 anos
16 a 18 anos
19 anos ou mais
Categoria
Não participa
A
B
C
D
E
Não participa
11) Considerando a tabela de INSS abaixo, faça um programa em C que leia o salário de
um funcionário e apresente na tela o valor do desconto de INSS.
Salário
% de contribuição
Até 1.247,70
8,00
De 1.247,71 até 2.079,50
9,00
De 2.079,51 até 4.159,00
11,00
OBS: Se a pessoa ganhar um salário superior a R$4.159,00 ela irá pagar de INSS 11% de
R$4.159,00
12) Utilizando a estrutura "switch-case" faça um programa que leia um número entre 1 e
12 e então apresente o mês relativo. Exemplo: 01 - Janeiro; 07 - Julho. Caso o usuário
informe um valor fora do intervalo o sistema deve apresentar uma mensagem de erro.
13) Faça um programa em C que leia dois números e apresente na tela as seguintes
opções ao usuário:
1 - Somar
2 - Subtrair
3 - Multiplicar
4 - Dividir
O sistema deve apresentar na tela o resultado da operação selecionada.
14) Faça um programa em C para calcular o salário de um funcionário. Deverão ser
lidos:
 O salário bruto;
 O número de dependentes.
O programa deve apresentar o salário líquido conforme regra abaixo:
 Salário Líquido = Salário Bruto – Desconto INSS + (15,00 * Número de
Dependentes) + Auxílio Passagem (40,00) + Auxílio Refeição (100,00).
Tabela Incidência INSS
Salário Bruto
% INSS
Até R$ 300,00
9
R$ 300,01 - R$ 700,00
10
Acima de R$ 700,00
11
Lista 3 – Estrutura de repetição
1) Faça um programa em C que apresente a tabuada do número 3.
2) Faça um programa em C que escreva na tela todos os números entre 5 e 50.
3) Faça um programa em C que leia 50 números. Para cada número lido informar
se ele é par ou ímpar.
4) Faça um programa em C que leia 50 números e encontre o maior número
informado.
5) Faça um programa em C que leia 50 número e encontro o menor número
informado.
6) Faça um programa em C que leia 50 números e encontra a diferença entre o
maior e o menor número informado.
7) Faça um programa em C que leia 50 números e conto quantos números são
pares.
8) Faça um programa em C que leia um número e apresente na tela a tabuada deste
número.
9) Faça um programa em C que leia dois números e então apresente na tela todos
os números que estão entre os valores informados.
10) Faça um programa em C que leia dois números e então apresente na tela a soma
dos números que estão entre os valores informados.
11) Faça um programa que solicite 10 números e então apresente a média dos
números informados.
12) Faça um programa em C que calcule a média da nota dos alunos de uma classe.
O programa deve inicialmente perguntar quantos alunos existem e então solicitar
as notas para calcular a média.
13) Faça um programa em C que solicite para o usuário uma série de números
decimais. O programa deve parar de solicitar quando o usuário digitar um valor
negativo. Ao final o programa deve informar quantos números foram digitados e
qual a soma dos números. OBS: ignorar o valor negativo na contagem e na
soma.
14) Faça um programa em C que leia um número e conte por quantos números ele é
divisível. O programa deve apresentar essa informação ao final.
15) Um número primo é aquele que é divisível somente por ele mesmo ou por um.
Faça um programa em C que leia um número e informe se ele é ou não primo. O
usuário deve ter a opção de repetir quantas vezes quiser esta operação.
16) Faça um programa em C que leia um número e apresente na tela o seu fatorial.
Exemplo:
Fatorial de 5 = 5 x 4 x 3 x 2 x 1 = 120
Fatorial de 4 = 4 x 3 x 2 x 1 = 24
17) O cardápio de uma casa de lanches é dado pela tabela abaixo:
Código
Descrição
Preço
101
Misto quente
R$ 2,30
102
Hambúrguer
R$ 2,60
103
Suco natural
R$ 3,00
104
Cerveja
R$ 4,50
105
Refrigerante
R$ 3,00
Faça um programa em C, que leia os códigos dos itens adquiridos por um consumidor e
a quantidade correspondente, calcule e mostre o valor a pagar. O final da entrada do
pedido é sinalizado com um código zero.
18) Foi realizada uma pesquisa em Joinville onde se perguntou a cada um dos
entrevistados o seguinte:
 Clube de preferência (1 – JEC, 2 – AVAÍ, 3 – OUTROS);
 Salário mensal;
 Naturalidade (1 – Joinville, 2 - Outras cidades).
Faça um programa em C que mostre:
a) o número de torcedores por clube;
b) médias salariais dos torcedores do Avaí e do Jec;
c) o número de pessoas nascidas em Joinville que torcem para o Avaí;
d) o número de pessoas entrevistadas.
Obs: o número de pessoas entrevistadas é desconhecido. Ao termino da entrevista
o sistema deve perguntar se há uma nova pessoa para ser entrevistada
19) Um viajante fará uma viagem de carro entre duas cidades e ao término deseja
saber:
 Quantas vezes foram necessárias abastecer;
 Quantos litros foram consumidos para percorrer a distancia indicada;
 Quantos litros restaram no tanque após a chegada ao destino.
Faça um programa em C que leia a distância entre as duas cidades, a capacidade do
tanque e o consumo médio do veículo e calcule / mostre as informações solicitadas. O
usuário deve ter a opção de repetir quantas vezes quiser esta operação.
20) A prefeitura de uma cidade deseja fazer uma pesquisa entre seus habitantes.
Faça um programa para coletar dados sobre o salário e número de filhos de cada
habitante e após as leituras, escrever:
a) Média de salário da população
b) Média do número de filhos
c) Maior salário dos habitantes
d) Percentual de pessoas com salário menor que R$ 150,00
Obs.: O final das leituras dos dados se dará com a entrada de um “salário negativo”.
Lista 4 – Vetores
1)
Faça um programa em C que leia um vetor com 6 elementos e os mostre. Em
seguida, conte quantos elementos têm valor negativo e mostre esta informação.
2)
Faça um programa em C que leia um vetor com 10 elementos e mostre-os na
ordem inversa.
3)
Faça um programa em C que leia um vetor com 100 números e um número
qualquer. Em seguida, substitua todos os valores do vetor iguais ao número
informado por 0 e o mostre.
4)
Faça um programa em C que leia um vetor com 80 elementos e mostre o valor
do menor e maior elementos e suas posições no vetor.
5)
Faça um programa em C que leia uma série de N notas, e calcule quantas são
10% acima da média e quantas são 10% abaixo.
6)
Faça um programa em C que leia um conjunto de 30 valores numéricos inteiros
e distribua-os entre dois vetores, separando os números positivos e negativos.
Mostrar os vetores ao final do processamento.
7)
Faça um programa em C que leia um vetor com 20 elementos e o mostre. Em
seguida, troque o primeiro elemento com o último, o segundo com o penúltimo,
etc, até o décimo com o décimo primeiro e mostre o vetor assim modificado.
8)
Faça um programa em C que leia um vetor com 20 elementos e o mostra. Em
seguida, troque o primeiro elemento com o décimo primeiro, o segundo com o
décimo segundo, etc, e mostre o vetor assim modificado.
9)
Faça um programa em C que leia dois vetores com 10 elementos cada um e
calcule o produto escalar entre eles, mostrando os vetores lidos e o produto
calculado. O produto escalar é calculado da seguinte forma: cada valor do
primeiro vetor deve ser multiplicado pelo valor do elemento correspondente do
segundo vetor e os resultados devem ser somados. Exemplo:
 u = [3, 5, 2] v = [2, 1, 5] então: u · v = 3 * 2 + 5 * 1 + 2 * 5
10)
Faça um programa em C que leia dois vetores com 10 elementos cada.
Considerando cada vetor como sendo um conjunto, crie um terceiro vetor que
seja a união dos dois primeiros e o mostre.
11)
Faça um programa em C que leia dois vetores com 10 elementos cada.
Considerando cada vetor como sendo um conjunto, crie um terceiro vetor que
seja a intersecção dos dois primeiros e o mostre.
12)
Faça um programa em C que leia dois vetores com 10 elementos cada.
Considerando cada vetor como sendo um conjunto, crie um terceiro vetor que
seja a diferença (elementos do primeiro vetor que não existem no segundo vetor)
dos dois primeiros e o mostre.
13)
Faça um programa em C que leia dois vetores com 10 elementos cada. Em
seguida, crie um terceiro vetor, que seja a soma dos dois primeiros, e um quarto,
que seja a diferença entre os dois primeiros, e os mostre.
14)
Faça um programa em C que leia um vetor com 6 elementos, que é o resultado
de um sorteio da Sena. Em seguida leia outro vetor, também com 6 elementos,
que é a aposta de um apostador. Comparar os vetores e ao final mostrar a aposta,
o resultado e o número de acertos do apostador.
15)
Faça um programa em C que leia um vetor A com 10 componentes distintos
inteiros e um vetor B com 5 componentes distintos inteiros e verifique se as seguintes
afirmações são verdadeiras ou falsas:
a) O vetor B está totalmente contido no vetor A;
b) O vetor B está parcialmente contido no vetor A, isto é, existe alguma
componente de B em A;
c) O vetor B não está nada contido no vetor A, isto é, não existe nenhuma
componente de B no vetor A.
16)
Faça um programa em C que leia um vetor com 15 elementos e o mostre. A
seguir, ordene os elementos em ordem crescente e os mostre novamente.
Lista 5 – Matrizes
1)
Faça um programa em C que leia duas matrizes 3 X 3 e gere uma terceira matriz
com a soma dos elementos correspondentes de cada matriz.
2)
Faça um programa em C que leia uma matriz 4 X 4 e encontre o menor valor
contido na matriz e sua posição.
3)
Faça um programa em C que leia uma matriz 6 X 4 e a mostre. Em seguida,
calcule e mostre uma matriz modificada 6 X 5, sendo que os elementos da 5ª
coluna são formados com o produto dos elementos da mesma linha.
4)
Faça um programa em C que leia uma matriz 5 X 5 e a mostre. Em seguida,
troque a segunda linha pela quinta e a primeira coluna pela quarta. Ao final,
mostre a matriz resultante.
5)
Uma empresa fabrica dois tipos de produtos, com os preços R$ 500,00 e R$
650,00, respectivamente. Faça um programa em C que leia uma planilha
contendo a quantidade vendida de cada produto por mês (considere apenas
um ano). Em seguida, mostre as seguintes informações:
a) Mês com maior faturamento;
b) Mês com maior quantidade de produtos vendidos;
c) A média anual de venda de cada produto .
6)
Faça um programa em C que leia uma matriz 3 X 2 e a mostre. Em seguida,
determine e mostre sua transposta. (linha vira coluna e coluna vira linha)
7)
Faça um programa em C que leia uma matriz quadrada de ordem 4 e um
número qualquer. Em seguida, multiplique a diagonal principal por este
número e mostre a matriz multiplicada.
8)
Faça um programa em C leia duas matrizes de reais, com respectivos tamanhos
5 x 4 e 4 x 6, e imprima a matriz resultante A x B (multiplicação das matrizes),
de tamanho 5 x 6.
9)
Faça um programa em C que leia duas matrizes 3 X 2 e mostre, em formato
bidimensional, a matriz resultante da seguinte regra:

Se i ≤ j  C(i, j) = A(i, j), senão  C(i, j) = B(i, j).
Onde C = matriz resultante, A = matriz 1 e B = matriz 2.
10)
Faça um programa em C que leia uma matriz 5 X 5 e calcule e mostre a soma
dos elementos abaixo da diagonal principal da matriz, incluindo os elementos
da própria diagonal principal.
Lista 6 – Cadeia de caracteres
1)
Faça um programa em C que leia uma string de no máximo 80 posições e
apresente as seguintes informações:
a) Tamanho da string
b) Quantidade caracteres números
2)
Faça um programa em C que leia duas strings e informe o tamanho de cada string
acompanhado de uma frase que diga se as duas strings são iguais ou diferentes.
3)
Faça um programa em C que leia um nome e em seguida o mostre de trás para
frente utilizando somente letras maiúsculas. O programa não pode permitir que
sejam informados números.
4)
Faça um programa em C que leia duas strings, sendo a primeira o nome de uma
pessoa, e a segunda seu sobrenome. Concatenar essas strings em uma terceira
string, obedecendo o seguinte formato: sobrenome, vírgula, espaço, primeiro
nome. Apresentar a string concatenada.
5)
Faça um programa em C que leia uma quantidade indeterminada de nomes, e
apresente o primeiro nome considerando ordem alfabética.
6)
Faça um programa em C que receba uma string como parâmetro e imprima
quantas palavras (separadas por espaço em branco) o mesmo contém.
Lista 7 – Funções
1) Escreva um programa em C que leia 5 valores inteiros e imprima para cada um
o seu correspondente valor absoluto. Para obter o valor absoluto do número
utilize a função “Absoluto” especificada abaixo:
Nome: Absoluto
Descrição: Retorna o valor absoluto do número fornecido.
Entrada: int n
Saída: (int) O respectivo valor absoluto de n.
Observação:
-O valor absoluto de 10 é 10.
-O valor absoluto de -10 é 10.
2) Escreva um programa em C que leia um número indeterminado de valores que
representam raios de círculos. Para cada valor informado imprimir a área e seu
perímetro. O programa será encerrado ao ser fornecido para o raio um valor
negativo. Para obter o valor da área do círculo o programa deverá chamar a
função “AreaCirculo”. Para obter o valor do seu perímetro o programa deverá
chamar a função “CompCircunferencia”.
Nome: AreaCirculo
Descrição: Retorna a área do círculo.
Entrada: float Raio
Saída: (float) A área do círculo
Nome: CompCircunferencia
Descrição: Retorna o comprimento da circunferência (perímetro).
Entrada: float Raio
Saída: (float) O comprimento da circunferência
3) Escreva um programa em C para ler 5 pares de valores (considere que serão
informados apenas valores positivos). Para cada par lido deve ser impresso o
valor do maior elemento do par ou a frase "Eles são iguais" se os valores do par
forem iguais. Para obter o maior elemento do par utilize a função
“MaiorNumero”.
Nome: MaiorNumero
Descrição: Retorna o maior elemento entre 2 valores positivos. Se eles forem iguais
deve ser retornado o valor -1.
Entrada: (int) Dois valores positivos.
Saída: (int) O maior deles ou -1 se eles forem iguais.
Observação: Considere que os valores de entrada são sempre positivos.
4) Escreva um programa em C para ler 5 números inteiros positivos (utilize a
função “LePositivo”). Para cada valor lido escrever a soma dos inteiros de 1 ao
número informado. O resultado do cálculo desse somatório deve ser obtido
através da função “Somatorio”.
Nome: LePositivo
Descrição: Faz a leitura de um valor. Se ele for negativo ou zero, a leitura deve ser
repetida até que o valor lido seja positivo.
Entrada: Nenhuma.
Saída: (int) o valor lido.
Nome: Somatório
Descrição: Calcula o somatório dos inteiros de 1 ao número fornecido como entrada.
Entrada: (int) Número limite do somatório.
Saída: (int) O valor do somatório.
5) Escreva um programa em C que leia 5 números inteiros positivos (utilizar
“LePositivo”). Para cada número informado escrever a soma de seus divisores
(exceto ele mesmo). Utilize a função “SomaDivisores” para obter a soma.
Nome: SomaDivisores
Descrição: Calcula a soma dos divisores do número informado (exceto ele mesmo).
Entrada: Um número inteiro e positivo.
Saída: A soma dos divisores.
Exemplo: Para o valor 8: 1+2+4 = 7
6) Escreva um programa em C que imprima na tela os números primos existentes
entre 1 e 100. Para verificar se um número é primo utilize a função “EhPrimo”.
Nome: EhPrimo
Descrição: Verifica se um número é o ou não primo.
Entrada: (int) um número inteiro.
Saída: (int) 1 se o número de entrada for primo e 0 caso contrário.
7) Escreva um programa em C que leia 5 pares de valores positivos (“LePositivo”).
Imprima se os elementos de cada par são números amigos (ou não). Dois
números A e B são amigos se a soma dos divisores de A excluindo A é igual a B
e a soma dos divisores de B excluindo B é igual a A. Para verificar se dois
números são amigos utilize a função “SaoAmigos”.
Nome: SaoAmigos
Descrição: retorna 1 se os 2 números de entrada forem amigos, 0 caso contrário.
Entrada: (int) Dois números inteiros positivos.
Saída: (int) 1 se os dois números são amigos, 0 caso contrário.
Observação: Utilize a função SomaDividores do exercício anterior.
Exemplo:
220 e 284 são amigos, pois:
220: 1+2+4+5+10+11+20+22+44+55+110=284
284: 1+2+4+71+142=220
1184 e 1210 também são amigos.
8) Escreva um programa que leia as medidas dos lados de 5 triângulos. Para cada
triângulo imprimir a sua classificação (Não é triângulo, Triângulo Equilátero,
Isósceles ou Escaleno).O programa deve aceitar apenas valores positivos para as
medidas dos lados (utilizar “LePositivo”). Para obter o código da classificação
utilize a função “TipoTriangulo”.
Nome: TipoTriangulo
Descrição: A partir das medidas dos lados de um triângulo, verifica o tipo do triângulo.
Entrada: (int) 3 valores
Saída: (int) 0 se não formam um triângulo.
1 se for um triângulo equilátero.
2 se for um triângulo isósceles.
3 se for um triângulo escaleno.
Para verificar se as medidas formam um triângulo chamar a função EhTriangulo.
Nome: EhTriangulo
Descrição: Verifica se as 3 medidas informadas permitem formar um triângulo. Para
formar um triângulo é necessário que a medida de cada lado seja menor que a soma dos
outros 2.
Entrada: (int) 3 valores.
Saída: (int) 1 se os 3 valores formarem um triângulo e 0 caso contrário.
9) Para evitar erros de digitação em números de grande importância, como código
de uma conta bancária, geralmente se adiciona ao número um dígito verificador.
Por exemplo, o número 1841 é utilizado normalmente como 18414, onde o 4 é o
dígito verificador. Ele é calculado da seguinte forma:
a) Cada algarismo do número é multiplicado por um peso começando de 2 da direita
para a esquerda.
Para cada algarismo o peso é acrescido de 1. Soma-se os produtos obtidos.
1x5 + 8x4 + 4x3 + 1x2 = 51
b) Calcula-se o resto da divisão desta soma por 11:
51 % 11 = 7
c) Subtrai-se de 11 o resto obtido:
11 - 7 = 4
d) Se o valor obtido for 10 ou 11, o dígito verificador será o 0, nos outros casos, o dígito
verificador é o próprio valor encontrado.
Escreva um programa que leia um número indeterminado de valores inteiros de 1 a 999.
Para cada número imprima o seu correspondente dígito verificador. O programa é
encerrado ao ser fornecido um número fora da faixa estabelecida (1 a 999). Para obter o
valor do dígito verificador utilize a função “CalculaDigito”.
Nome: CalculaDigito
Descrição: Calcula o dígito verificador de um número.
Entrada: (int) Um valor inteiro.
Saída: (int) O dígito verificador do número.
10) Escreva um programa em C que leia um número indeterminado de valores
inteiros de 10 a 9999 onde o último algarismo representa o seu dígito verificador
e imprima para cada número uma mensagem indicando se ele está correto ou
não. O programa é encerrado ao ser fornecido um número fora da faixa
estabelecida (10 a 9999). Utilize a função “DigitoCorreto” para verificar se o
número está correto.
Nome: DigitoCorreto
Descrição: Retorna 1 se o valor de entrada possui o dígito verificador correto e 0 caso
contrário.
Entrada: (int) Um número inteiro.
Saída: (int) 1 se o número possui o dígito verificador correto ou 0 caso contrário.
Utilizar as funções abaixo: ObtemDigito e ObtemNumero.
Nome: ObtemDigito
Descrição: Separa o último algarismo (a unidade) do número.
Entrada: (int) Um número inteiro
Saída: (int) O valor da unidade do número (o último algarismo)
Ex: Para a entrada 1823 a saída será 3
Nome: ObtemNumero
Descrição: Separa o número do dígito verificador.
Entrada: (int) Um número inteiro.
Saída: (int) O número sem o valor da unidade.
Ex: Para a entrada 1823 a saída será 182
Lista 8 – Estrutura
1) Defina uma estrutura que irá representar bandas de música. Essa estrutura deve
ter o nome da banda, que tipo de música ela toca, o número de integrantes e em
que posição do ranking essa banda está dentre as suas 5 bandas favoritas.
a) Crie um looping para preencher as 5 estruturas de bandas criadas no exemplo
passado. Após criar e preencher, exiba todas as informações das bandas/estruturas.
b) Crie uma função que peça ao usuário um número de 1 até 5. Em seguida, seu
programa deve exibir informações da banda cuja posição no seu ranking é a que foi
solicitada pelo usuário.
c) Crie uma função em C que peça ao usuário um tipo de música e exiba as bandas com
esse tipo de música no seu ranking.
d) Crie uma função que peça o nome de uma banda ao usuário e diga se ela está entre
suas bandas favoritas ou não.
e) Agora junte tudo e crie uma aplicação em que exibe um menu com as opções de
preencher as estruturas e todas as opções das questões passadas.
2) Seja uma estrutura para descrever os carros de uma determinada revendedora,
contendo os seguintes campos:
 Marca: string de tamanho 15
 Ano: inteiro
 Cor: string de tamanho 10
 Preço: real
a) Escrever a definição da estrutura carro.
b) Declarar o vetor “vetcarros” do tipo da estrutura definida acima, de tamanho 20 e
global.
Crie um menu para:
c) Definir um bloco de programa para ler o vetor “vetcarros”.
d) Definir um bloco de programa que receba um preço e imprima os carros (marca, cor
e ano) que tenham preço igual ou menor ao preço recebido.
e) Defina um bloco de programa que leia a marca de um carro e imprima as informações
de todos os carros dessa marca (preço, ano e cor).
f) Defina um bloco de programa que leia uma marca, ano e cor e informe se existe ou
não um carro com essas características. Se existir, informar o preço.
3) Seja uma estrutura para descrever os livros de uma loja, contendo os seguintes
campos:
Título: string de tamanho 15;
Autor: string de tamanho 20
Estilo: string de tamanho 10
Código: inteiro
Preço: real
a) Escrever a definição da estrutura livro;
b) Declarar uma variável global para armazenar 50 livros;
c) Criar uma função que leia um livro. A função deve receber como entrada a posição
em que será armazenado o livro.
d) Criar uma função que imprime os dados do livro. A função deve receber a posição
que o livro está armazenado.
e) Fazer um programa utilizando as funções acima que solicite os 50 livros e então os
imprima na tela.
4) Elaborar um algoritmo que auxilie no controle de uma fazenda de gado que
possuí um total de 2000 cabeças de gado. A base de dados é formada por um
conjunto de estruturas (registros) contendo os seguintes campos referente a cada
cabeça de gado:
 código: código da cabeça de gado,
 leite: número de litros de leite produzido por semana,
 alim: quantidade de alimento ingerida por semana - em quilos,
 nasc: data de nascimento - mês e ano,
 abate: ‘N’ (não) ou ‘S’ (sim).
O campo nasc. é do tipo struct data que por sua vez, possui dois campos:
o mês
o ano
Elaborar funções para:
a) Ler a base de dados (código, leite, alim, nasc.mês e nasc.ano), armazenado em
um vetor de estruturas.
b) Preencher o campo abate, considerando que a cabeça de gado irá para o abate
caso:
 tenha mais de 5 anos, ou;
 produza menos de 40 litros de leite por semana, ou;
 produza entre 50 e 70 litros de leite por semana e ingira mais de 50 quilos de
alimento por dia.
Crie o menu de opções para:
c) Devolver a quantidade total de leite produzida por semana na fazenda.
d) Devolver a quantidade total de alimento consumido por semana na fazenda.
e) Devolver a quantidade total de leite que vai ser produzido por semana na
fazenda, após o abate.
f) Devolver a quantidade total de alimento que vai ser consumido por semana na
fazenda, após o abate.
g) Devolver número de cabeças de gado que iram para o abate.
h) Sair do programa.
5) Seja um algoritmo para controlar os produtos do estoque de um supermercado.
Para cada produto, tem-se os seguintes campos:
nome: string de tamanho 15
setor: caracter
quantidade: inteiro
preço: real //preço por unidade do produto
Escrever a definição da estrutura produto.
b) Declarar o vetor estoque do tipo da estrutura definida acima, de tamanho 100 e
global.
a)
Crie um menu para:
c) Definir um bloco de instruções para ler o vetor estoque.
d) Definir um bloco de instruções que receba um setor e devolva o número de
diferentes produtos desse setor.
e) Definir um bloco de instruções que calcule e devolva o total em estoque de
produtos do supermercado.
f) Sair do Programa.
6) Seja um sistema destinado a controlar despesas e dados de um condomínio de
apartamentos. Os dados de cada apartamento são armazenados em um vetor de
estruturas. Para cada apartamento tem-se os seguintes dados:
 nome (do responsável)
 número (do apartamento)
2
 área (em m )
 número de moradores
 valor (a ser pago no mês)
Definir a estrutura acima.
b) Declarar um vetor de estruturas (global), supondo que o condomínio tem 40
apartamentos.
a)
Crie um menu para:
c) Escrever um bloco de instruções responsável por ler o vetor acima, exceto o
campo valor.
d) Escrever um bloco de instruções que retorne a área total do condomínio.
e) Escrever um bloco de instruções que receba a área total do condomínio; leia o
total de despesas do mesmo e calcule para cada apartamento o valor a ser pago
no mês. Esse valor é proporcional à área do apartamento.
f) Fazer um bloco de instruções para imprimir os dados do apartamento que tem o
maior número de moradores. Em caso de haver mais de um, imprimir todos.
g) Escrever um bloco de instruções para sair do programa.
Lista 9 – Recursividade
1) Vários algoritmos em computação usam a técnica de “Dividir para Conquistar”:
basicamente eles fazem alguma operação sobre todos os dados, e depois dividem
o problema em sub-problemas menores, repetindo a operação. Uma equação de
recorrência típica para esse tipo de algoritmo é mostrada abaixo. Faça um
programa em C para resolver essa equação de recorrência.
T(n) = 2T(n/2) + n;
T(1) = 1;
2) O máximo divisor comum (MDC) de dois números inteiros x e y pode ser
calculado usando-se a seguinte definição recursiva:
Faça um programa em C que calcule o MDC usando a definição acima.
3) Pode-se calcular o resto da divisão, MOD, de x por y, dois números inteiros,
usando-se a seguinte definição:
Faça um programa em C que calcule o MOD usando a definição acima.
4) Pode-se calcular o quociente da divisão, DIV, de x por y, dois números inteiros,
usando-se a seguinte definição:
Faça um programa em C que calcule o DIV usando a definição acima.
5) A função de Ackermann é definida para valores inteiros e não negativos m e n
da seguinte forma:
Faça um programa em C que calcule função de Ackermann usando a definição acima.
6) Escreva uma função recursiva em C que calcule o número de grupos distintos
com k pessoas que podem ser formados a partir de um conjunto de n pessoas. A
definição abaixo da função Comb(n,k) define as regras:
7) Faça uma função recursiva que calcule e retorne o fatorial de um número inteiro
N.
8) Faça uma função recursiva que calcule e retorne o N-ésimo termo da sequência
Fibonacci. Alguns números desta sequência são: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,
89...
9) A multiplicação de dois números inteiros pode ser feita através de somas
sucessivas. Proponha um algoritmo recursivo Multip_Rec(n1,n2) que calcule a
multiplicação de dois inteiros
Lista 10 – Ponteiros
1) Qual das instruções abaixo é correta para declarar um ponteiro para inteiro?
a) *int pti;
b) *pti;
c) &i;
d) int_pti pti;
e) int *pti;
2) Seja a seguinte sequência de instruções em um programa C:
int *pti;
int i = 10;
pti = &i;
Qual afirmativa é falsa?
a) pti armazena o endereço de i
b) *pti é igual a 10
c) Ao se executar *pti = 20; i passará a ter o valor 20
d) Ao se alterar o valor de i, *pti será modificado
e) pti é igual a 10
3) Na sequência de instruções abaixo:
float f;
float *pf;
pf = &f;
scanf("%f", pf);
a) Efetuamos a leitura de f
b) Não efetuamos a leitura de f
c) Temos um erro de sintaxe
d) Deveríamos estar usando &pf no scanf
e) Nenhuma das opções anteriores
4) Um ponteiro pode ser usado para dizer a uma função onde ela deve depositar o
resultado de seus cálculos. Escreva uma função hm que converta minutos em
horas-e-minutos. A função recebe um inteiro mnts e os endereços de duas
variáveis inteiras, digamos h e m, e atribui valores a essas variáveis de modo que
m seja menor que 60 e que 60*h + m seja igual a mnts. Escreva também uma
função main que use a função hm.
5) Faça um programa em C usando ponteiros que leia 5 números mostre em ordem
crescente. O programa deverá chamar a função ordena. Esta função irá receber o
endereço da memória dos 5 valores (n1, n2, n3, n4 e n5) e irá alterar seus valores
deixando os valores ordenados a partir do n1.
6) Escreva uma função mm que receba um vetor inteiro v[0..4] e os endereços de
duas variáveis inteiras, digamos min e max, e deposite nessas variáveis o valor
de um elemento mínimo e o valor de um elemento máximo do vetor. Escreva
também uma função main que use a função mm.
DICA: Declarar a função da seguinte forma:
void mm(int *v, int *min, int *max) {
…
}
Lista 11 – Alocação dinâmica de memória
1) Faça um programa em C utilizando alocação de memória dinâmica que solicite o
total de provas realizadas. As provas deverão ser armazenadas em um vetor de
números reais dinâmico. O programa deverá ler as notas e então calcular a média
das notas.
2) Para o programa anterior, além de calcular a média o programa deve passar a
informar quantas notas foram acima da média, abaixo da média e exatamente
igual a média.
3) Continuando o exercício anterior, o programa deverá armazenar em um vetor
dinâmico todas as notas acima da média, abaixo da média e igual a média. O
programa deverá exibir ao usuários essas informações.
4) Faça um programa em C que declare a estrutura “Livro”. A estrutura será
composta pelo Titulo do livro, escritor, número de paginas e ano de publicação.
Este programa deverá conter um vetor dinâmico da estrutura livro. Os livros
deverão ser inseridos pelo usuário um a um e sempre que for concluído o
cadastro de um livro o sistema deve perguntar se o usuário deseja inserir um
novo livro. Ao final o programa deve exibir o total de livros inseridos.
5) Para o programa anterior, além de exibir o total de livros inseridos o programa
deverá agora exibir o(s) livro(s) mais antigo(s) (titulo e autor), o(s) livro(s) com
o maior número de página.
6) Acrescentar na estrutura do programa 5 o preço do livro e fazer com que o
usuário digite essa informação no momento de inserir um livro. Além das saídas
anteriores, o programa deverá agora informar o(s) livro(s) mais caro(s) (titulo e
autor).
7) Elaborar um programa em C que auxilie no controle de uma fazenda de gado. A
quantidade de gados será determinada pelo usuário e por isso será armazenado
em uma variável com alocação dinâmica. A base de dados é formada por um
conjunto de estruturas (registros) contendo os seguintes campos referente a cada
cabeça de gado:
 código: código da cabeça de gado,
 leite: número de litros de leite produzido por semana,
 alim: quantidade de alimento ingerida por semana - em quilos,
 nasc: data de nascimento - mês e ano,
 abate: ‘N’ (não) ou ‘S’ (sim).
O campo nasc. é do tipo struct data que por sua vez, possui dois campos:
o mês
o ano
Elaborar funções para:
a) Ler a base de dados (código, leite, alim, nasc.mês e nasc.ano), armazenado em
um vetor de estruturas.
b) Preencher o campo abate, considerando que a cabeça de gado irá para o abate
caso:
 tenha mais de 5 anos, ou;
 produza menos de 40 litros de leite por semana, ou;
 produza entre 50 e 70 litros de leite por semana e ingira mais de 50 quilos de
alimento por dia.
Crie o menu de opções para:
a)
b)
c)
d)
Inserir novo gado.
Devolver a quantidade total de leite produzida por semana na fazenda.
Devolver a quantidade total de alimento consumido por semana na fazenda.
Devolver a quantidade total de leite que vai ser produzido por semana na
fazenda, após o abate.
e) Devolver a quantidade total de alimento que vai ser consumido por semana na
fazenda, após o abate.
f) Devolver número de cabeças de gado que iram para o abate.
g) Sair do programa.
Lista 12 – Pilha
1) Utilizando pilhas, faça um programa em C que armazene 10 números. O
programa deve ir solicitando números para o usuário até que a pilha esteja cheia.
Após inserir os 10 valores o sistema deve imprimir os elementos da pilha.
2) Utilizando pilhas, faça um programa em C que armazene 10 números. O
programa deve dar a opção para o usuário inserir um valor na pilha e também
remover um valor da pilha. Caso o usuário tente inserir um valor que excede o
tamanho da pilha o sistema deve exibir que a pilha está cheia. Caso o usuário
tente remover um valor da pilha e ela esteja vazia o sistema deve informar que a
pilha está vazia.
3) Continuando o exercício anterior, faça com que o programa apresente a opção de
exibir os valores da pilha. Selecionando essa opção o sistema deve exibir os
números digitados.
4) Faça um programa em C que armazene em uma estrutura o modelo, placa e ano
de um carro. O programa deve criar uma pilha capaz de armazenar até 10 carros
e ter a função incluir novo elemento, excluir ultimo e listar todos os registros.
Lista 13 – Fila
1) Utilizando o conceito de fila simples, faça um programa em C que armazene até
10 valores na fila. O programa deve ter a opção de incluir novo elemento,
excluir ou ainda listar os elementos da fila. O programa deverá verificar se a fila
está cheia ao incluir um novo elemento ou então se está vazia ao excluir um
elemento.
2) Faça o programa anterior utilizando fila simples dinâmica.
3) Faça o programa 1 utilizando fila simples reordenada.
4) Faça o programa 1 utilizando fila circular.
5) Elaborar um programa que controle o estoque de uma empresa. O programa
deve conter um menu com as seguintes opções:
1 – Exibir estoque;
2 – Dar entrada no estoque;
3 – Remover item do estoque.
Regras:
Capacidade do estoque é infinita;
Para cada entrada no estoque deve-se armazenar o número da nota fiscal e a
quantidade comprada;
Para remover o item do estoque deve-se informar apenas a quantidade. Deve ser
removido do mais antigo para o mais atual;
Validar se há produto em estoque antes de remover;
Para exibir o estoque deve-se listar a nota fiscal e a quantidade de itens daquela
nota disponível.
Exemplo:
Lista 14 – Lista simplesmente encadeada
1) Utilizando o conceito de lista simplesmente encadeada, faça um programa em C
que armazene em uma estrutura o RA do aluno, nome do aluno e a sua média. O
programa deve ter a opção de incluir novo aluno, excluir ou ainda listar os
alunos da lista.
2) Continuando o exercício 1, faça com que o aluno seja inserido em ordem
alfabética.
3) Continuando o exercício 2, faça com que ao excluir um aluno o sistema pergunte
qual o RA do aluno que ele deseja excluir e exclua o aluno selecionado.
4) Continuando o exercício 3, faça com que o sistema não permita incluir dois
alunos com o mesmo RA.
5) Continuando o exercício 4, faça com que o programa informe uma mensagem de
usuário não existente no momento da exclusão caso o aluno que o usuário tente
excluir não exista.
6) Com base no exercício 1, faça com que o aluno seja inserido em ordem
crescente de nota.
Lista 15 – Lista duplamente encadeada
1) Utilizando o conceito de lista duplamente encadeada, faça um programa em C
que armazene em uma estrutura o RA do aluno, nome do aluno e a sua média. O
programa deve ter a opção de incluir novo aluno, excluir ou ainda listar os
alunos da lista.
2) Continuando o exercício 1, faça com que o aluno seja inserido em ordem
alfabética.
3) Continuando o exercício 2, faça com que ao excluir um aluno o sistema pergunte
qual o RA do aluno que ele deseja excluir e exclua o aluno selecionado.
4) Continuando o exercício 3, faça com que o sistema não permita incluir dois
alunos com o mesmo RA.
5) Continuando o exercício 4, faça com que o programa informe uma mensagem de
usuário não existente no momento da exclusão caso o aluno que o usuário tente
excluir não exista.
6) Com base no exercício 1, faça com que o aluno seja inserido em ordem
crescente de nota.
Lista 16 – Lista circular
1) Utilizando o conceito de lista circular, faça um programa em C que armazene em
uma estrutura o RA do aluno, nome do aluno e a sua média. O programa deve
ter a opção de incluir novo aluno, excluir ou ainda listar os alunos da lista.
2) Continuando o exercício 1, faça com que o aluno seja inserido em ordem
alfabética.
3) Continuando o exercício 2, faça com que ao excluir um aluno o sistema pergunte
qual o RA do aluno que ele deseja excluir e exclua o aluno selecionado.
4) Continuando o exercício 3, faça com que o sistema não permita incluir dois
alunos com o mesmo RA.
5) Continuando o exercício 4, faça com que o programa informe uma mensagem de
usuário não existente no momento da exclusão caso o aluno que o usuário tente
excluir não exista.
6) Com base no exercício 1, faça com que o aluno seja inserido em ordem
crescente de nota.
Download