UNIVERSIDADE SALGADO DE OLIVEIRA
CURSO DE ANÁLISE DE SISTEMAS
TREINAMENTO – LINGUAGEM DE PROGRAMAÇÃO C
PROF: GIULIANO PRADO DE MORAIS GIGLIO
1ª LISTA DE EXERCÍCIOS
1. Usando a função printf(), escreva um programa em C que imprima seu nome em uma linha, sua
rua e o número na segunda e sua cidade, estado e CEP na terceira linha.
2. Considere o seguinte problema: é necessário um programa em C que mostre os pagamentos
semanais brutos e líquidos de dois indivíduos. O primeiro indivíduo recebe $8.43 por hora e o
segundo indivíduo recebe $5,67 por hora. De ambos é descontado 20% do valor bruto a título de
impostos e mais 2%, após o desconto dos impostos, para benefícios médicos.
a) determine um algoritmo para converter as entradas em saídas.
b) teste o algoritmo usando os seguintes dados: o primeiro indivíduo trabalhou 40 horas na
semana e o segundo indivíduo trabalhou 35 horas.
3. Uma escola, com cursos em regime semestral, realiza duas avaliações durante o semestre e
calcula a média do aluno, da seguinte maneira: MEDIA = (P1 + 2*P2) / 3. Fazer um programa para
entrar via teclado com o valor da primeira nota (P1) e o programa deverá calcular e exibir quanto o
aluno precisa tirar na segunda nota (P2) para ser aprovado, sabendo que a média de aprovação é
igual a cinco.
4. Fazer um programa em C para efetuar a leitura um número indeterminado de números e
apresentar os números que são divisíveis por 2 e 3.
5. Exibir a soma dos números inteiros positivos do intervalo de 1 a 1000.
6. Fazer um algoritmo que leia 20 idades de pessoas. Calcule e escreva a idade média deste grupo.
7. Fazer um algoritmo que leia um conjunto de idades de pessoas. O final do conjunto de valores é
conhecido através do valor -1. Calcule e escreva a idade média deste conjunto.
8. Fazer um algoritmo que leia a nota final de 50 alunos e escreva:
a) o total de reprovados;
b) a nota média da turma;
c) a menor e maior nota da turma.
É considerado aprovado o aluno com nota final maior ou igual a 6,0.
9. Fazer um algoritmo que calcule e escreva a tabuada de 5.
10. Escreva, teste e execute um programa em C que faça o seguinte: Dado o tempo atual (horas e
minutos) em um relógio de 24Hs, adicione um número inteiro de horas e diga qual o novo
horário e quantos dias depois ele estará. (Nota: Use /24 e %24, e indique meia-noite como
0:00h, em vez de 24:00Hs.
Exemplo: 17:30 + 37 horas = 6:30, dois dias depois.
1
11. O seguinte algoritmo, descoberto por Euclides, nos dá um meio simples para determinar o maior
divisor comum (MDC) de dois inteiros positivos e:
Divida o maior número pelo menor e guarde o resto.
Divida o menor número pelo resto, e novamente guarde o resto.
Continue dividindo o resto anterior pelo resto atual até que ele seja igual a zero. Nesse ponto o
último resto não-nulo é máximo divisor comum.
Faça um programa C que implemente esse algoritmo Euclidiano.
12. Escreva um programa para mostrar as seguintes mensagens:
Digite um mês (use 1 para janeiro, etc.):
Digite um dia do mês:
a. Faça seu programa receber e armazenar um número na variável mes após mostrar a
primeira mensagem e receber e armazenar um outro número na variável dia após mostrar
a segunda mensagem. Se o mês digitado não estiver entre 1 e 12 inclusive, imprimir uma
mensagem dizendo ao usuário que o mês digitado é inválido. Se o dia digitado não estiver
entre 1 e 31, imprimir uma mensagem dizendo ao usuário que o dia digitado é inválido.
b. Que fará seu programa se o usuário digitar um número com ponto decimal para o mês?
Como você pode garantir que seus comandos if testam se um número é inteiro?
c. Em um ano não bissexto, fevereiro tem 28 dias, os meses de janeiro, março, maio, julho,
agosto, outubro e dezembro têm 31 dias e todos os outros têm 30 dias. Usando esta
informação, modifique o programa do exercício 2a para dar uma mensagem quando um dia
inválido for digitado para o mês dado. Para este programa ignore anos bissextos.
13. Todos os anos que são múltiplos de 400, ou são múltiplos de 4 e não são múltiplos de 100, são
anos bissextos. Por exemplo, como 1600 é múltiplo de 400, o ano 1600 é bissexto. Similarmente, já
que 1988 é múltiplo de 4 e não é múltiplo de 100, o ano 1988 também é bissexto.
a. Usando esta informação, escreva um programa em C que receba o ano como entrada de
dados, determine se o ano é bissexto, e dê uma mensagem apropriada dizendo se o ano
digitado é bissexto ou não.
b. Usando o código escrito no exercício 13a, refaça o exercício 12c de tal forma que anos
bissextos sejam levados em consideração.
14. Os seguintes dados foram coletados em uma recente viagem de automóvel.
2
a. Escreva um programa em C que receba a quilometragem e o consumo em litros e calcule
o consumo médio por quilômetro de cada segmento da viagem. O consumo médio é obtido
com a diferença de quilometragem entre dois abastecimentos, dividindo-a pelo número de
litros do último abastecimento.
b. Modifique o programa do exercício 14a para também calcular e mostrar o consumo médio
cumulativo ao final de cada trecho (a cada abastecimento). O consumo médio cumulativo é
calculado com a diferença entre a quilometragem de um abastecimento e a quilometragem
do início da viagem, dividindo-a pela soma dos litros de todos abastecimentos até então.
15. Para o cálculo do relatório de suas transações mensais, uma certa loja de livros mantém as
seguintes informações para cada livro em estoque:
• Número de identificação do livro;
• Quantidade em estoque no início do mês;
• Número de cópias recebidas no mês;
• Número de cópias vendidas no mês.
_
_
_
_
Escreva um programa em C que receba estes dados para cada livro e então imprima o número de
identificação e a nova quantidade em estoque, usando a relação:
Nova quantidade = Quantidade em estoque no início do mês + Número cópias recebidas no mês - Número de cópias vendidas no mês
Seu programa deve usar um laço while com uma condição de contagem fixa, de tal forma que
somente seja processada a informação para três livros.
16.
a. Escreva um programa em que você possa entrar com os seguintes valores em um vetor
chamado preços: 10.95, 16.32, 12.15, 8.22, 15.98, 26.22, 13.54, 6.45, 17.59. Depois os
dados devem ser impressos na tela.
b. Reescreva o Exercício 16a fazendo com que ele tenha uma saída assim:
10.95
8.22
13.54
16.32
15.98
6.45
12.15
26.22
17.59
17. Escreva um programa para entrada de 10 números inteiros em um vetor com o nome de fmax e
que determine o número máximo entrado. Seu programa deve conter apenas um “loop” e deve
retornar o valor máximo e o elemento do vetor em que ele está armazenado (dica: utilize o primeiro
elemento lido como máximo para depois entrar no “loop”).
b. Reescreva o exercício, mantendo o vetor e o número máximo, mas apresentando
as seguintes mensagens:
O valor máximo é:_____
Ele foi o _____ elemento digitado.
Seu programa deve colocar no lugar das linhas os valores corretos.
3
18. Escreva um programa que especifique três vetores com os nomes de preço, quantidade e
total. Cada vetor deve ser capaz de manter 10 elementos. Usando um “loop” for, preencha
os vetores preco e quantidade. O vetor total deve ser preenchido com a multiplicação do
vetor preco pelo quantidade (por exemplo, total[i]=preço[i]*quantidade[i]). Depois que você
digitar todos os dados seu programa deve imprimir a seguinte tabela:
preço
-------
quantidade
-------------
total
------
19.
a. Escreva um programa para entrada de 10 números reais em um vetor com o nome de raw.
Depois que você digitar os 10 números seu programa deve fazer 10 “loops” nesse vetor,
pegando sempre o menor número e colocando em um outro vetor chamado ordenado. Dica,
quando seu programa estiver terminado o vetor ordenado estará ordenado dos menores para
os maiores números (tenha certeza que você anulou o menor valor que foi selecionado
durante cada “loop” para que o número não seja selecionado novamente. Você precisará de
um outro for dentro do primeiro, para selecionar o menor valor por ciclo.).
20.
a. Escreva um programa que informe ao usuário quantas vogais foram digitadas em uma
seqüência cd caracteres que o usuário digitar. Seu programa deve imprimir quantas vogais
foram digitadas.
b. Adicione o programa do exercício 20a uma função que gere um gráfico dizendo quantas
vogais a, e, i, o, u foram digitadas.
a
e
i
o
u
*******
**
****
*
*****
21. Formule uma estrutura que permita guardar informação relativa a cassetes de vídeo,
nomeadamente: titulo, atores ( 3), tipo de vídeo ( ação, romance, drama, etc.), duração (minutos).
a. Escreva uma função que tendo como argumentos de entrada: o ponteiro para uma lista
simplesmente ligada, definida em 3, e a informação relativa a um vídeo, efetue a inserção de
um nó com a referida informação.
b. Escreva uma função que efetue a listagem, no CRT, dos vídeos existentes na lista.
c. Escreva uma função que verifique a existência de um vídeo na lista e devolva o ponteiro
para o nó onde se encontra o vídeo (passe a informação do vídeo em causa por argumentos
de referência).
d. Escreva uma função que aceitando como argumento: a lista resultante em a), e um inteiro
( 0, 1, 2, 3, 4) ordene a lista segundo o 1º campo, 2º campo...
e. Escreva uma função que aceitando como argumento a lista resultante em a), a inverta.
4
Download

escreva um programa em C que imprima seu nome