You are on page 1of 32

Linguagem de Programao C

Lista de Exerccios

Variveis, entrada e sada


Exerccios de Fixao
1) Faa um programa que imprima o produto entre
35 e 47.
2) Faa um programa que imprima a mdia
aritmtica entre os nmeros 12, 25 e 53.

11) Faa um programa que leia 2 nmeros e


imprima uma mensagem dizendo se so iguais ou
diferentes.
12) Faa um programa que leia 2 nmeros e
imprima uma mensagem dizendo o maior deles.
Suponha que os nmeros sero diferentes.

3) Faa um programa que leia 2 nmeros da


entrada e imprima o seu produto.

13) Faa um programa que leia 2 nmeros e


imprima uma mensagem dizendo o maior deles.
Detalhe: se os nmeros forem iguais, imprima uma
mensagem avisando ao usurio.

4) Faa um programa que leia 2 nmeros da


entrada e imprima a sua mdia aritmtica.

14) Faa um programa que leia 2 nmeros e os


imprima em ordem crescente.

5) Faa um programa que leia 2 nmeros da


entrada e imprima o resto da diviso inteira de um
pelo outro.

15) Faa um programa que leia 2 nmeros e os


imprima em ordem decrescente.

6) Faa um programa que leia um nmero da


entrada e imprima o seu antecedente e o seu
sucessor.
7) Faa um programa que leia um valor de conta
de restaurante, representando o gasto realizado pelo
cliente e imprima o valor total a ser pago,
considerando que o restaurante cobra 10% para o
garom.
8) Faa um programa que leia um valor de hora e
informe quantos minutos se passaram deste o incio
do dia.

16) Faa um programa que leia 3 nmeros e


imprima o menor deles.
17) Faa um programa que leia 3 nmeros e os
imprima em ordem crescente.
18) Faa um programa que leia 3 nmeros e os
imprima em ordem decrescente.
19) Faa um programa que leia 3 nmeros e
imprima o valor intermedirio, entre o menor e o
maior nmero. Suponha que os nmeros sero
diferentes.
20) Faa um programa que leia 3 nmeros e
imprima uma das seguintes mensagens:
todos os nmeros so iguais;
todos os nmeros so diferentes ou
apenas dois nmeros so iguais.

Tomada de deciso
Exerccios de Fixao
9) Faa um programa que leia da entrada um
nmero e imprima o seu valor absoluto (sem o sinal).
10) Faa um programa que leia um nmero e
imprima uma mensagem dizendo se par ou impar.

21) Faa um programa que leia trs notas de um


aluno, calcule sua mdia aritmtica e imprima uma
mensagem dizendo se o aluno foi aprovado,
reprovado ou dever fazer prova final. O critrio de
aprovao o seguinte:
aprovado (mdia 7);

Lembre-se sempre
A Sorte Ajuda aos Competentes

Pgina 1 de 32
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br

Linguagem de Programao C
reprovado (mdia < 3) e
prova final ( 3 mdia < 7).
22) Faa um programa que leia a idade de uma
pessoa e informe sua classe eleitoral:
no eleitor (abaixo de 16 anos);
eleitor obrigatrio (entre 18 e 65 anos) e
eleitor facultativo (entre 16 e 18 anos e acima dos
65 anos).
23) Faa um programa que leia um horrio no
sistema de 24 horas e imprima este horrio no
sistema de 12 horas.
Exemplo: 22:32 10:32 pm
Obs.:
0:00 12:00 am
6:00 6:00 am
12:00 12:00 pm

nmeros naturais de 0 at limite pulando de incr.


Suponha que limite e incr so maiores que zero.
Exemplo:
valores lidos:
10 (limite) 3 (incr)
impresso:
0 3 6 9
32) Faa um programa que leia um nmero da
entrada e imprima os nmeros mpares menores do
que este nmero. Exemplo:
valor lido: 7

impresso: 1 3 5

33) Faa um programa que leia um nmero da


entrada (num) e imprima os num primeiros nmeros
pares. Exemplo:
valor lido: 6
impresso: 2 4 6 8 10 12
34) Faa um programa que imprima a tabuada de 5
no formato:

Repetio

5x1=5
5 x 2 = 10

Exerccios de Fixao

... ... ...

24) Faa um programa que imprima os nmeros de


1 a 100.

5 x 10 = 50

25) Faa um programa que imprima os nmeros de


100 a 1, nesta ordem.

35) Faa um programa que leia um nmero da


entrada e imprima a tabuada deste nmero. Suponha
que o nmero lido da entrada maior que zero.

26) Faa um programa que imprima os nmeros


pares no intervalo de 1 a 300.

36) Faa um programa que imprima as tabuadas dos


nmeros de 1 a 10.

27) Faa um programa que imprima os nmeros de


64 a 256.

37) Faa um programa que imprima os nmeros de


1 a 100 e o valor de seu somatrio.

28) Faa um programa que imprima os nmeros


mpares no intervalo de 531 a 750.

38) Faa um programa que leia um nmero da


entrada (num), imprima os nmeros de 1 a num e o
seu somatrio.

29) Faa um programa que leia um nmero da


entrada e imprima os nmeros naturais de 0 at este
nmero. Suponha que o nmero lido da entrada ser
maior que zero.

39) Faa um programa que imprima a soma dos


nmeros pares entre 25 e 100.

30) Faa um programa que leia um nmero da


entrada e imprima os nmeros naturais de 0 at este
nmero, pulando de dois em dois. Suponha que o
nmero lido da entrada ser maior que zero.
31) Faa um programa que leia um nmero da
entrada (limite), um incremento (incr) e imprima os

40) Faa um programa que leia um nmero da


entrada (num) e imprima a soma dos nmeros pares
entre 1 e num. Suponha que num ser maior que
zero.
41) Faa um programa que leia um nmero da
entrada (num) e imprima o somatrio dos num
primeiros nmeros mpares.

Lembre-se sempre
A Sorte Ajuda aos Competentes

Pgina 2 de 32
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br

Linguagem de Programao C
42) Faa um programa que leia um intervalo da
entrada (incio e fim) e imprima os nmeros naturais
neste intervalo. Exemplo:
valores lidos:
5 9
impresso:
5 6 7 8 9
43) Faa um programa que leia um intervalo da
entrada (incio e fim) e imprima os mltiplos de 5
entre eles. Exemplo:
valores lidos:
3 17
impresso:
5 10 15
Observao: o que acontece se fim for menor
que incio? Seu programa continua funcionando?
44) Faa um programa que leia um intervalo da
entrada (incio e fim) e um nmero (num). O
programa deve imprimir os mltiplos de num entre
incio e fim. Exemplo:
valores lidos:
1 15 3 (num)
impresso:
3 6 9 12 15
Observao: o que acontece se fim for menor
que incio? Seu programa continua funcionando?
45) Faa um programa que leia um intervalo da
entrada (incio e fim) e imprima os nmeros pares
entre incio e fim e seu somatrio. Exemplo:
valores lidos:
3 15
impresso:
4 6 8 10 12 14
Soma = 54
46) Faa um programa que leia um nmero (num)
da entrada e imprima os mltiplos de 3 e 5 ao mesmo
tempo no intervalo de 1 a num. Exemplo:
valor lido:
47
impresso:
15 30 45
47) Faa um programa que leia um nmero da
entrada, calcule e imprima o seu fatorial. Lembre-se
que:
n! = n x (n -1) x (n - 2) x ... x 1
0! = 1 e 1! = 1

49) Faa um programa que leia um nmero da


entrada (num), a seguir leia num nmeros da entrada
e imprima o maior deles. Suponha que todos os
nmeros lidos sero positivos. Exemplo:
valores lidos:
3
17 4 22
impresso:
O maior nmero lido foi 22.
50) Faa um programa que leia um nmero da
entrada (num), a seguir leia num nmeros da entrada
e imprima o maior deles. Exemplo:
valores lidos:
4
-3 -5 -15 -4
impresso:
O maior nmero lido foi -3.
51) Faa um programa que leia um nmero da
entrada (num), a seguir leia num nmeros da entrada
e imprima o maior, o menor e soma dos nmeros
lidos.
52) Faa um programa que leia uma seqncia de
nmeros terminada por 0 e imprima o maior, o menor
e a mdia aritmtica dos nmeros. O nmero 0 (zero)
no faz parte da seqncia. Exemplo:
valores lidos:
impresso:

20 -3 4 - 7 1 0
Maior = 20
Menor = -7
Mdia = 3

53) Faa um programa que leia uma seqncia de


nmeros terminada por 0 e imprima o nmero que for
mltiplo de sua posio na seqncia.
valores lidos:
3 7 8 16 5 0
posio:
1 2 3 4 5
impresso:
3 16 5
54) Faa um programa que leia uma seqncia de
nmeros terminada por 0 e imprima a mdia
aritmtica dos mpares e a soma dos pares.
55) Faa um programa que calcule e imprima o
valor de 25. Dica: 2 5 = 2 x 2 x 2 x 2 x 2.

56) Faa um programa que leia dois nmeros da


48) Faa um programa que leia um nmero da
entrada (X e Y) e calcule XY . Suponha que X e Y so
entrada (num), a seguir leia num nmeros da entrada
positivos.
e os imprima. Exemplo:
57) Faa um programa que calcule o produto de 2
valores lidos:
5
nmeros lidos da entrada (num1 e num2) atravs do
3 10 12 2 1
impresso:
3 10 12 2 1
Lembre-se sempre
Pgina 3 de 32
A Sorte Ajuda aos Competentes
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br

Linguagem de Programao C
mtodo de somas sucessivas. Suponha que num1 e
num2 so positivos. Exemplo:
valores lidos:
impresso:
dica:

3 4
12
3 x 4 = 3 + 3 + 3 + 3 = 12

58) Faa um programa que leia 2 nmeros da


entrada e imprima o resto da diviso inteira do
primeiro pelo segundo usando subtraes sucessivas.
59) Faa um programa que calcule o resultado de
num1
num2

utilizando

algoritmo

de

subtraes

sucessivas. num1 e num2 devem ser lidos da


entrada. Informe ao usurio caso a diviso no seja
exata. Exemplo:
valores lidos:
6 3
impresso:
2
dica:
6-3 =3-3=0
(2 subtraes)
60) Faa um programa que imprima os termos de
uma P.A., sendo lidos da entrada: o primeiro termo
(a 0), a razo (r) e o nmero de elementos (num).
61) Faa um programa que imprima os termos de
uma P.G., sendo lidos da entrada: o primeiro termo
(a 0), a razo (q) e o nmero de elementos (num).
62) Faa um programa que leia um nmero da
entrada e imprima uma mensagem dizendo se o
nmero soluo da equao 2x2 - 7x + 3 = 0.
63) Escreva um algoritmo que leia uma seqncia de
50 nmeros naturais e imprima o maior nmero da
seqncia mltiplo de 2 e de 3 ao mesmo tempo.
64) Faa um programa que imprima os 10 primeiros
termos da srie de Fibonacci.
Observao: a 0 = 1, a 1 = 1 e a n = a n - 1 + a n - 2.
65) Faa um programa que leia um nmero (num)
da entrada e imprima os num primeiros termos da
srie de Fibonacci.
66) Faa um programa que leia um nmero da
entrada e imprima os termos da srie de Fibonacci
menores que este valor.

67) Faa um programa que calcule

I , onde N e
I= N

K so lidos da entrada.
68) (Prova 1 - 96/1) Faa um programa que imprima
a tabela de converso de graus Celsius-Fahrenheit
para o intervalo desejado pelo usurio. O programa
deve solicitar ao usurio o limite superior, o limite
inferior do intervalo e o decremento.
Frmula de converso: C = 5(F - 32) /9
Exemplo:
valores lidos:
68 50 15
impresso:
Fahrenheit
Celsius
68
20
53
11

Exerccios Propostos
69) (Prova 1 - 95/2) A srie de RICCI gerada da
seguinte forma: os dois primeiros termos so
fornecidos pelo usurio, a partir da, os termos so
gerados como a soma dos dois termos anteriores, ou
seja, ai=ai-1+ai-2 para i3.
Escreva um programa que imprima os N (N
lido e >= 2) primeiros termos da srie de RICCI. O
programa deve imprimir, tambm a soma dos termos
impressos.
70) (Prova 1 - 96/1) A srie de FETUCCINE
gerada da seguinte forma: os dois primeiros termos
so fornecidos pelo usurio; os termos seguintes so
gerados como a soma ou subtrao dos dois termos
anteriores, ou seja:
a i = ai -1 + a i -2 ==> para i mpar
a i = ai -1 - ai -2 ==> para i par
Escreva um programa que imprima os N (N
lido e maior ou igual a 2) primeiros termos da srie de
FETUCCINE. O programa deve imprimir, tambm
a soma dos termos impressos.
71) (Prova 1 - 96/2) Uma telenovela de grande
sucesso tem o seu final previsto para o dia 1 o de
novembro. Sabe-se que neste dia ser revelado nome
do personagem responsvel por inmeros
assassinatos ocorridos no decorrer da trama. No
entanto, no dia 1o de outubro (um ms antes do

Lembre-se sempre
A Sorte Ajuda aos Competentes

Pgina 4 de 32
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br

Linguagem de Programao C
trmino da novela), um funcionrio da emissora conta
para dois amigos o desfecho do ltimo captulo. Com
isto, no dia 1o de outubro, 3 pessoas sabem do
desfecho da novela. Supondo que cada nova pessoa
a saber do final da novela contar para duas novas
pessoas no dia seguinte (e para mais ningum),
mais 4 pessoas estaro envolvidas ao final do dia 2
de outubro (7 pessoas at este dia). No dia 3 de
outubro, j sero 15 pessoas.
Faa um programa para ajudar o dono da
emissora a decidir se deve demitir o funcionrio
fofoqueiro: se ao trmino do dia 25 de outubro mais
de 20000 (vinte mil) pessoas estiverem sabendo do
final da novela, o funcionrio dever ser demitido.
72) Faa um programa que calcule o M.M.C entre
dois nmeros lidos da entrada.
73) Faa um programa que calcule o M.D.C entre
dois nmeros lidos da entrada.
74) Faa um programa que calcule e imprima os
termos da srie

XN
, onde X e N devem ser lidos da
N!

entrada.
75) Faa um programa que calcule o resultado de
0

(1) I , onde N lido da entrada.


I

I= N

76) Escrever um algoritmo para escrever na sada


todos os nmeros (inteiros e positivos) entre 10 e 100
tais que:
No terminem em zero;
Se o dgito da direita for removido, o nmero
restante divisor do nmero original.
Exemplos:
39: 3 divisor de 39
48: 4 divisor de 48

a quantidade, soma e mdia aritmtica dos valores


dentro do intervalo;
a quantidade, soma e mdia aritmtica dos valores
fora do intervalo.
Exemplo:
valores lidos:
5 3 18 7 22 50
impresso:
3 est dentro do intervalo
18 est fora do intervalo
7 est dentro do intervalo
22 est fora do intervalo
50 est fora do intervalo
2 valores dentro do intervalo,
soma = 10 e mdia = 5
3 valores fora do intervalo,
soma = 90 e mdia = 30
78) Repare a seguinte caracterstica do nmero
3025:
30 + 25 = 55
e
552 = 3025
Faa um programa que leia uma srie de valores
(nmeros inteiros de 4 algoritmos, um de cada vez) e
diga se possuem a mesma caracterstica (repare que
3025 / 100 = 30 c/ resto 25). O programa termina
quando for lido um valor menor que 1000 ou maior
que 9999.
79) Uma das maneiras de se conseguir a raiz
quadrada de um nmero subtrair do nmero os
mpares consecutivos a partir de 1, at que o
resultado da subtrao seja menor ou igual a zero. O
nmero de vezes que se conseguir fazer a subtrao
a raiz quadrada exata (resultado 0) ou aproximada
do nmero (resultado negativo).
Exemplo: Raiz de 16
16 - 1 = 15 - 3 = 12 - 5 = 7 - 7 = 0

A raiz de 16 4.
80) Faa um programa que leia um conjunto de
pedidos de compra e calcule o valor total da compra.
Cada pedido composto pelos seguintes campos:

77) Dados N valores (inteiros e positivos) na


entrada, escrever um algoritmo que teste quais
nmero do pedido;
valores esto dentro e quais esto fora do intervalo
data do pedido (dia, ms, ano);
{1, 2, ..., 15}, escrevendo na sada o valor e a
preo unitrio do item e
mensagem correspondente. O primeiro valor a ser
quantidade.
lido na entrada N e N no um dos valores a
O programa dever processar novos pedidos
serem testados. Alm disso, obter:
Lembre-se sempre
Pgina 5 de 32
A Sorte Ajuda aos Competentes
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br

Linguagem de Programao C
at que o usurio digite 0 (zero) como nmero do
pedido.
81) Refaa o exerccio anterior, sendo que s sero
processados os pedidos cujo valor seja maior que R$
1000,00.
82) Refaa o exerccio 1 de modo que sejam
processados somente os pedidos realizados nos anos
de 1994 e 1996. Ao final do processamento o
programa dever indicar qual ano teve maior volume
de compras.
83) Faa um programa que leia um nmero
indeterminado de cartes contendo cada um a idade
de uma pessoa e o sexo (0 - masculino, 1 feminino). O ltimo carto (que no entrar nos
clculos) contm o valor da idade igual a zero.
Calcule e imprima a idade mdia destas pessoas,
quantas pessoas do sexo feminino esto na faixa dos
18 aos 25 anos e o nmero total de pessoas do sexo
masculino.
84) Faa um programa que leia o preo de compra e
o preo de venda de 100 mercadorias. O programa
dever imprimir quantas mercadorias proporcionam:
lucro < 10 %
10 % <= lucro <= 20 %
lucro > 20 %
85) Faa um programa que leia as seguintes
informaes sobre uma turma:

nmero da turma;
nmero de aulas dadas;
nmero de alunos inscritos.
Deve ser lido tambm para cada aluno inscrito
o seu nmero de faltas.
O programa deve imprimir o percentual de
faltas para cada aluno e ao final do processamento o
total de alunos reprovados por falta (25% de faltas).
86) Faa um programa que leia o salrio bruto dos
500 funcionrios de uma empresa, calcule o imposto
retido e o salrio liquido para cada um deles. Ao
final do relatrio o programa dever imprimir os totais
de salrio bruto, salrio lquido e imposto retido.
O imposto retido dever ser calculado de
acordo com a seguinte tabela:

Faixa de salrio
salrio < 1000,00
1000,00 <= salrio < 10000,00
10000,00 <= salrio < 25000,00
salrio >= 25000,00

Imposto
0
10 %
15 %
20 %

87) Faa um programa que leia um conjunto de


valores inteiros positivos e cujo ltimo valor -1.
Dentre os valores lidos, o programa deve imprimir:
o menor valor dentre os maiores que 100 e
menores que 1000;
a mdia desses valores dentre os maiores que 100
e menores que 1000;
a soma desses valores dentre os maiores que 100
e menores que 1000;
a soma de todos os valores lidos.
Observaes:
o valor -1 no deve ser considerado para nenhum
clculo.
se nenhum valor estiver dentro do intervalo, o
programa deve imprimir apenas uma mensagem
para o usurio explicando o ocorrido.
88) As disciplinas do ciclo bsico do nosso curso
possuem cdigos 108X, onde X pode variar de 0 a 9.
Faa um programa que leia, para cada aluno, a sua
matrcula (um inteiro de 1 a 2000), o cdigo da
disciplina, o cdigo da turma (de 1 a 8) e a mdia
final do aluno em cada disciplina. O programa deve
imprimir, para a disciplina LTP1:
o nmero de alunos da turma 1;
a melhor mdia de alunos das turmas 1, 2, 3, 4 e
5;
o total das mdias maiores que 7 das turmas 6, 7,
e 8.
Observaes:
A disciplina LTP1 possui cdigo 1081 e 8 turmas.
Considere um total de 2000 alunos e que todos os
alunos cursaram todas as disciplinas (10).
Os dados de um aluno sero digitados em
seqncia, ou seja, ser lida a matrcula do aluno e,
em seguida, todas as informaes sobre ele.
Exemplo:

Lembre-se sempre
A Sorte Ajuda aos Competentes

Pgina 6 de 32
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br

Linguagem de Programao C
Matrcula do aluno: 33
Cdigo da disciplina: 1086
Cdigo da turma: 5
Mdia Final: 8
Cdigo da disciplina: 1082
Cdigo da turma: 1
Mdia Final: 6

... ... ... ...


Cdigo da disciplina: 1085
Cdigo da turma: 4
Mdia Final: 3
89) Faa um programa que calcule e imprima o CR
do perodo para os alunos do P15. Para cada aluno, o
programa dever ler:
nmero da matrcula;
quantidade de disciplinas cursadas;
notas em cada disciplina.
Alm do CR de cada aluno, o programa deve
imprimir o melhor CR dos alunos que cursaram 5 ou
mais disciplinas.
Observaes:
o fim da entrada de dados marcado por uma
matrcula invlida (matrculas vlidas: de 1 a
5000);
o CR do aluno igual a mdia aritmtica de suas
notas.
90) Faa um programa que controle o saldo bancrio
de um cliente. O programa l o valor do saldo
anterior e em seguida l as operaes realizadas na
conta. As operaes podem ser as seguintes:
Saque em dinheiro (cdigo 10);
Depsito (cdigo 33);
Pagamento de cheque (cdigo 4).
O programa l o cdigo das operaes e realiza
as atualizaes na conta, imprimindo uma mensagem
ao usurio caso seu saldo se torne negativo.
O programa deve continuar a leitura at que o
cdigo da operao seja zero. Cdigos diferentes dos
definidos devem ser ignorados.
Ao final do processamento o programa deve
imprimir o saldo atual do cliente.

91) Uma biblioteca deseja fazer uma anlise sobre a


consulta a seu acervo. Faa um programa que leia o
cdigo de um livro, o nmero de exemplares e para
cada um deles o nmero de emprstimos. O
programa deve imprimir o total parcial de
emprstimos para cada livro, e ao final deve imprimir
o cdigo do livro mais emprestado pela biblioteca. A
entrada de dados termina com um cdigo de livro
negativo.
92) Uma empresa classifica seus funcionrios em 3
nveis de acordo com um ndice de produtividade. So
eles: (1) Excelente, (2) Bom e (3) Regular. Cada
nvel acrescenta um abono ao salrio base do
funcionrio, de acordo com a seguinte tabela:
Excelente
80 % do salrio base
Bom
50 % do salrio base
Regular
30 % do salrio base
O programa deve ler a matricula do
funcionrio, seu salrio base, seu nvel de abono e
imprimir o salrio a ser pago. O programa deve
fornecer tambm a matrcula do funcionrio de maior
abono e a mdia do abono para os funcionrios
classificados como Regular.
O programa termina ao ler um valor de
matrcula negativo.
93) A TELERJ deseja calcular as contas telefnicas
de seus assinantes atravs do computador. A
cobrana de seus servios feita da seguinte
maneira:
1. Tarifa bsica
telefone residencial (cdigo 1): R$ 7,00
telefone comercial (cdigo 2): R$ 20,00
2. Servio local:
R$ 12,00 por pulso excedente (acima de 90
pulsos)
3. Servio despertador:
R$ 5,00 por vez.
Na entrada de dados teremos:
cdigo do assinante;
tipo do telefone (comercial ou residencial);
nmero de pulsos registrados para chamadas
locais e

Lembre-se sempre
A Sorte Ajuda aos Competentes

Pgina 7 de 32
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br

Linguagem de Programao C
nmero de servios de despertador prestados.
Faa um programa que leia os dados de um conjunto
de assinantes (o cdigo do assinante igual a zero
encerra a entrada de dados), calcule e imprima:
para cada assinante, o total de sua conta;
valor da maior conta e o cdigo do assinante que
a pagou;
o valor mdio arrecadado por assinante no ms.
94) Faa um programa que ajude o DETRAN a
saber o total de recursos que sero arrecadados com
a aplicao de multas de trnsito.
O programa deve ler as seguintes informaes para
cada motorista:
o nmero da carteira de motorista (de 1 a 4327);
o nmero de multas;
o valor de cada uma das multas.
Deve ser impresso o valor da dvida para cada
motorista e ao final da leitura o total de recursos
arrecadados (somatrio de todas as multas). O
programa dever imprimir tambm o nmero da
carteira do motorista que obteve o maior nmero de
multas.
O programa termina ao ler a carteira de
motorista de valor 0. Valores invlidos de carteira de
motorista no devem ser processados, embora suas
multas devam ser lidas.
95) Faa um programa que implemente o jogo da
senha (para 2 pessoas):
a) o jogador 1 digita uma senha (valor inteiro entre 0
e 100) sem o conhecimento do jogador 2
b) o jogador 2 tem 5 chances para descobrir a senha
c) a cada tentativa do jogador 2, o programa deve
avisar se o valor digitado maior, menor ou igual
a senha
d) se o jogador 2 acertar a senha, o programa no
deve pedir mais nenhuma tentativa

senha 43 e valor digitado 44


b) ao final do jogo, se for o caso, enviar a
mensagem Voc perdeu. Tente novamente depois
c) no permita que o jogador 1 digite valores fora da
faixa esperada (entre 0 e 100)
d) ao final de uma partida, permita ao usurio jogar
novamente

97) (Prova 1 - 95/2) Faa um programa que calcule


quantos litros de gasolina so usados em uma viagem,
sabendo que um carro faz 10 Km/litro. O usurio
fornecer a velocidade do carro e o perodo de tempo
que viaja nesta velocidade, para cada trecho do
percurso. Ento, usando as frmulas distncia =
tempo X velocidade e litros consumidos = distncia /
10, o programa computar, para todos os valores no
negativos de velocidade, os litros de combustvel
consumidos. O programa dever imprimir a distncia
e o nmero de litros de combustvel gastos naquele
trecho. Dever imprimir, tambm, o total de litros
gastos na viagem. O programa pra quando for
digitado um valor negativo de velocidade.
98) Escreva um algoritmo que leia valores de venda
de discos, CDs e fitas K7s de uma loja em um dia e
desconte a comisso do vendedor (3%) e o repasse
ao fornecedor (50%) para gerar o ganho da loja na
venda de cada pea. O programa dever gerar uma
listagem contendo o valor da venda, a comisso, o
repasse e o ganho da loja para cada venda,
totalizando os valores ao final. Os dados da entrada
terminam com o valor de venda igual a 0 (zero).
99) (Prova 1 - 96/2) Faa um programa que calcule
o imposto de renda de um grupo de contribuintes,
considerando que:
a) os dados de cada contribuinte (CIC, nmero de
dependentes e renda bruta anual) sero fornecidos
pelo usurio via teclado;
b) para cada contribuinte ser feito um abatimento de
R$ 600 por dependente;
c) a renda lquida obtida diminuindo-se o abatimento
com os dependentes da renda bruta anual;
d) para saber quanto o contribuinte deve pagar de
imposto, utiliza-se a tabela abaixo:
RENDA LQUIDA
IMPOSTO
at R$ 1000
0% (isento)

96) Faa as seguintes alteraes no jogo da senha


(uma de cada vez):
a) se o valor digitado em uma tentativa tiver uma
diferena igual a 1 para a senha, o programa deve
avisar que T QUENTE!. Exemplos:
senha 43 e valor digitado 42
Lembre-se sempre
A Sorte Ajuda aos Competentes

Pgina 8 de 32
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br

Linguagem de Programao C
de R$ 1001 a R$ 5000
acima de R$ 5000

15%
25%

e) o valor de CIC igual a zero indica final de dados;


f) o programa dever imprimir, para cada
contribuinte, o nmero do CIC e o imposto a ser
pago;
g) ao final, o programa dever imprimir o total do
imposto arrecadado pela Receita Federal e o nmero
de contribuintes isentos;
h) leve em considerao o fato do primeiro CIC
informado poder ser zero.
100) (Prova 1 - 96/1) Responda as questes abaixo,
baseado no algoritmo:
#include <stdio.h>
void main (void)
{
int x, w, y, z;
scanf (%d%d%d%d, &w, &x, &y, &z);
if (w>=x)
{
while (y>0)
{
y = y - 1;
if (y>w)
{
printf (local 1);
while (z<11)
{
z = z + 3;
if (z>x)
z = 15;
printf (local 2);
}
}
printf (local 3);
}
}
printf (local 4);
while (w>x)
{
w = w - 5;
printf (local 5);
}
}

b) 7, 2, 4, 0
c) 3, 3, 5, 0
d) -1, -3, 4, 0
101) (Prova 1 - 96/2) Faa um programa que leia um
conjunto de notas de prova (0 a 10) de um conjunto
de turmas. O programa dever ler a quantidade de
turmas e, para cada turma:

o cdigo da turma (inteiro positivo)


a quantidade de notas a serem lidas (inteiro
positivo)
as notas da turma (inteiro positivo)
O programa dever imprimir:
a mdia aritmtica das notas de cada turma
a maior nota de todas as turmas e o cdigo da
turma a que ela pertence
102) (Prova 2 - 94/1) Sabe-se que o produto de dois
nmeros inteiros pode ser obtido atravs de
sucessivas multiplicaes (por 2), divises (por 2) e
somas. Enquanto um dos nmeros dividido por 2, o
outro multiplicado por 2. Quando o resultado da
diviso for mpar, o outro nmero correspondente
(resultado da multiplicao) acumulado; caso
contrrio, passa-se para a prxima multiplicao e
diviso. Quando o resultado da diviso for 0 (zero), o
valor acumulado corresponder ao resultado final.
Exemplo:
Primeiro
Segundo
Valor
nmero
nmero
acumulado
37
mpar
41
41
37:2=18 par
41x2=82
41
18:2=9 mpar
82x2=164
41+164=205
9:2=4 par
164x2=328
205
4:2=2 par
328x2=656
205
2:2=1 mpar
656x2=1312 205+1312=1517
1:2=0 fim
Resultado =
1517
a) Faa uma funo que receba como parmetros 3
nmeros inteiros e retorne a soma do segundo com o
terceiro, caso o primeiro seja mpar; seno, retorna o
terceiro.
b) Usando a funo do item a), faa um programa
que leia dois nmeros inteiros e calcule seu produto
atravs do mtodo especificado.

Escreva exatamente o que ser impresso pelo


algoritmo acima para cada entrada abaixo:
a) 2, 4, -15, -3
Lembre-se sempre
A Sorte Ajuda aos Competentes

Pgina 9 de 32
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br

Linguagem de Programao C
103) (Prova 1 - 97/1) Faa um programa em C que
calcule e imprima a mdia e a varincia das notas de
todos os alunos inscritos em LTP1. As notas devem
ser lidas via teclado. O fim da leitura marcado por
uma nota negativa. A mdia e a varincia so
calculadas da seguinte forma:
media =

Valor da funo
no ponto
Passo

notas

...

numero _ de _ alunos

var iancia =

(notas

numero _ de _ alunos

A rea formada
pela soma dos
retngulos sob a
curva

media 2

Observar que (notas2) (notas)2 !!!!!!!!


104) (Prova 2 - 94/2) Devido s confuses dos
programadores do TRE, a Justia Eleitoral resolveu
contrat-lo para realizar a apurao das eleies.
Faa um programa que leia o cdigo dos
candidatos e informe o nmero de votos recebidos
por cada um, bem como o candidato mais votado.
Voc sabe que 100 candidatos disputam uma
vaga. E que a entrada termina assim que for lido um
candidato de cdigo negativo.
Exemplo:
Entrada: 0 0 1 2 2 -1
Sada:
0 3 votos
1 1 voto
2 2 votos
O candidato 0 foi eleito.
105) (Prova 2 - 96/1) Faa um programa em
linguagem C que calcule o valor da rea sob uma
curva y = 1/x entre dois pontos. Tais pontos devero
ser fornecidos pelo usurio assim como o passo. O
valor da integral indica a rea sob a curva, entre duas
coordenadas X. Por exemplo, seja o grfico a seguir:

106) (Prova 1 - 97/1) Faa um programa em C


que permita a uma empresa atacadista de cimento
controlar os pedidos de compra e o estoque do
produto. O programa inicialmente ir ler do teclado a
quantidade de sacos de cimento disponveis no
estoque da empresa (tipo inteiro) e o preo de cada
saco (tipo real). Em seguida, o programa processar
os pedidos de compra dos clientes da empresa.
As informaes a serem lidas do teclado, para
cada pedido, so as seguintes:
cdigo do cliente (tipo inteiro)
quantidade de sacos de cimento a serem
comprados (tipo inteiro)
Um pedido s poder ser aceito se a
quantidade de sacos disponveis no estoque for maior
ou igual quantidade de sacos do pedido e se a
quantidade de sacos do pedido no ultrapassar 10%
(dez por cento) do total de sacos disponveis no
estoque.
Se o pedido for aceito, o programa dever
imprimir o cdigo do cliente, a quantidade de sacos
pedidos e o valor do pedido, alm de subtrair do
estoque a quantidade de sacos vendidos.
Se o pedido for rejeitado, as mensagens
Estoque insuficiente ou Ultrapassado o mximo
permitido devero ser exibidas no vdeo, conforme o
motivo da rejeio do pedido.
Ao final dos pedidos, que ser detectado
quando o cdigo do cliente for zero ou o estoque
mnimo de cem sacos for atingido, dever ser
impressa a quantidade de sacos em estoque.

Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 10 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
107) (Prova 1 - 97/1) Faa um programa em C
que gerencie as contas correntes dos 1000 clientes
do Banco Oir Cup, um banco talo-anglo-franco-lusonipo-brasileiro. O programa dever ler, para cada
cliente, o cdigo do cliente (tipo inteiro), saldo
anterior (tipo real) e as movimentaes da conta.
Cada movimentao composta por um cdigo (tipo
caractere, C, D ou F, indicando Crdito, Dbito ou
Fim das movimentaes deste cliente) e um valor
(tipo real). Dever ser impresso, para cada cliente, o
seu cdigo e o saldo atual (aps o processamento das
movimentaes). Ao final, dever ser impresso o
total de dinheiro em caixa no banco (soma dos
saldos de todos os clientes) e o cdigo do cliente que
possui o maior saldo.
Observao: o menor saldo possvel de R$ 1000
negativo.

Seleo mltipla

Pplaneta =

PTerra
* g planeta
10

110) Faa um programa que , dada a idade de um


nadador, classifique-o em uma das seguintes
categorias:
Categoria
Infantil A
Infantil B
Juvenil A
Juvenil B
Senior

Idade
5 a 7 anos
8 a 10 anos
11 a 13 anos
14 a 17 anos
maiores de 18 anos

111) Em uma eleio presidencial, existem quatro


candidatos. Os votos so informados atravs de
cdigo. Os dados utilizados para a escrutinagem
obedecem seguinte codificao:
1, 2, 3, 4 = voto para os respectivos candidatos;
5 = voto nulo;
6 = voto em branco;

Exerccios de Fixao
108) Faa um programa que implemente uma
mquina de calcular com operaes +, -, *, / e %,
atravs da leitura de dois operandos numricos
inteiros e do operador (tipo caracter), no formato:
operando1 operador operando2. Verifique casos de
operaes que no podem ser realizadas (antes de
oper-las).
109) Escreva um programa que leia um peso na
Terra e o nmero de um planeta e imprima o valor do
seu peso neste planeta. A relao de planetas e dada
a seguir juntamente com o valor das gravidades
relativas em relao Terra.
#
Gravidade relativa
Planeta
1
0,37
Mercrio
2
0,88
Vnus
3
0,38
Marte
4
2,64
Jpiter
5
1,15
Saturno
6
1,17
Urano
Para calcular o peso no planeta use a frmula:

Elabore um programa que calcule e imprima:


total de votos para cada candidato;
total de votos nulos;
total de votos em branco;
percentual dos votos em branco e nulos sobre o
total;
situao do candidato vencedor sobre os outros
dois, no caso, se ele obteve ou no mais votos que
os outros dois somados.
Como finalizador do conjunto de votos, tem-se o valor
0.
112) Faa um programa que calcula a rea de
determinadas figuras geomtricas. O programa
dever apresentar um menu com as seguintes
opes:
1.
2.
3.
4.

quadrado ( lado 2 )
retngulo (comprimento * largura)
crculo (3,14 * raio 2 )
trapzio ((base maior + base menor) * altura /
2)

De acordo com a opo, o programa deve pedir os


Lembre-se sempre
Pgina 11 de
32
A Sorte Ajuda aos Competentes
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br

Linguagem de Programao C
valores necessrios para realizar o clculo. Utilize o
comando switch.

classe

nvel

113) Faa o chins do programa abaixo, mostrando


exatamente o que seria impresso se fossem digitados
os seguintes caracteres na entrada: EVA e ADAO#

1
2
3
4
5

excelente
bom
mdio
regular
precisa treinar
mais
te cuida
tsktsk

#include <stdio.h>
void main (void)
{
char ch;
int i = 0;

6
7

while ((i<=10) && (ch=getch())!=#)


{
switch (ch)
{
case A:
case O:
i++;
putchar (E);
break;
case :
putchar (!);
case L:
i = i +2;
putchar ($);
break;
default:
putchar (?);
i++;
}
}
printf (\nAcabou);
}

114) (Prova 1 - 95/2) Uma equipe de vlei paga aos


seus jogadores, alm do salrio, um valor adicional ao
salrio mensal (bicho) que funo da produtividade
de cada um.
Essa produtividade paga de acordo com a
tabela a seguir:

valor
adicional
+100%
+80%
+50%
+30%
+10%
+5%
nada

Faa um programa que, dados o salrio e o


cdigo da classe de um jogador, calcule e imprima o
seu salrio final e o nome da sua classe (nvel).
115) (Prova 3 - 96/1 Um aluno de LTP1 escreveu
esta funo em uma das listas. Ajude o professor a
corrigir (como voc gostaria que eu corrigisse a sua
prova) apontando os sete erros. Esta funo
implementa uma calculadora, retornando -1 se a
operao no puder ser realizada ou 0 (zero) em
caso contrrio. O resultado da operao ser
armazenado em *op1. Rescreva corretamente
apenas as linhas erradas, identificando-as pelo seu
nmero.
1. void calc (float op1, float op2,
2.
char *operador)
3. {
4.
int aux;
5.
while (operador)
6.
{
7.
case +:
8.
*op1 = *op1 + op2;
9.
break;
10.
case -:
11.
*op1 = *op1 - op2;
12.
break;
13.
case *:
14.
*op1 = *op1 * op2;
15.
break;
16.
case /:
17.
if (*op2 != 0)
18.
*op1 = *op1 / op2;
19.
else
20.
aux = -1;
21.
return aux;
22. }
23.}

Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 12 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
caracteres
codificados
POLAR/ZENIT.

Caracteres
Exerccios de Fixao
116) Faa um programa que imprima as letras
minsculas do alfabeto e seus respectivos cdigos
decimais da tabela ASCII.
117) Faa um programa que leia uma seqncia de
caracteres terminada por # e imprima o nmero de
caracteres lidos.
118) Faa um programa que leia uma seqncia de
caracteres terminada por um <Enter> (linha de
texto) e imprima a quantidade de caracteres lidos.
119) Faa um programa que leia uma seqncia de
caracteres terminada por um <Enter> (linha de
texto) e os imprima novamente na tela com exceo
dos caracteres de espao em branco que no devem
ser impressos.
120) Faa um programa que leia uma seqncia de
caracteres terminada por um <Enter> (linha de
texto) e imprima a quantidade de vogais, a quantidade
de consoantes e a quantidade de caracteres no
letras encontrados. Considere apenas as letras
minsculas.
121) Faa um programa que leia uma seqncia de
caracteres terminada por um <Enter> (linha de
texto) e imprima a quantidade total de caracteres
lidos e a porcentagem de caracteres do tipo letra
encontrados.
122) Faa um programa que leia uma linha de texto
da entrada e imprima o nmero de letras maisculas
e o nmero de letras minsculas encontradas.
123) Durante a segunda guerra mundial, havia
necessidade de codificao das mensagens
transmitidas, para isso eram necessrios cdigos
secretos, um desses cdigos era o POLAR/ZENIT,
que consistia em trocar as ocorrncias da letra P pela
letra Z e vice-versa, as letras O pelas letras E, e
vice-versa, e assim por diante. Faa um programa
que leia uma linha de texto da entrada e imprima os

segundo

cdigo

124) Faa um programa que leia uma linha de texto e


imprima o nmero de palavras que compe a linha.
Considere que cada palavra esta separada por
exatamente um nico caracter de espao.
125) Faa um programa que leia um caracter e uma
linha de texto e imprima a posio do caracter na
linha a cada vez que ele for digitado. O caracter pode
aparecer mais de uma vez na linha.
126) Faa um programa que leia uma seqncia de
linhas de texto (um texto) terminada com uma linha
vazia e imprima a quantidade total de caracteres
lidos.
127) Faa um programa que leia uma seqncia de
linhas de texto terminada com uma linha vazia e
imprima a quantidade de caracteres da maior linha do
texto.
128) Faa um programa que leia uma seqncia de
linhas de texto terminada com uma linha vazia e
imprima a quantidade mdia de caracteres
encontrados em cada linha.
129) Faa um programa que procure por um
determinado caracter em um texto (conjunto de
linhas), lido da entrada, indicando os nmeros das
linhas em que o caracter aparecer e tambm a
respectiva posio em cada linha (em nmero de
caracteres). O caracter pode aparecer mais de uma
vez em uma linha.
130) Faa um programa que leia uma seqncia de
linhas de texto e imprima os caracteres lidos
novamente na tela com exceo dos caracteres de
espao em branco, que no devem ser impressos.
131) Faa um programa que leia um texto (conjunto
de linhas) e imprima a quantidade de vogais, a
quantidade de consoantes e a quantidade de
caracteres no letras encontrados. Considere apenas
as letras minsculas.

Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 13 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
132) Faa um programa que leia um texto da entrada
e converta os caracteres maisculos em minsculos.

nmero de vezes que o caractere se repete e o


caractere a ser repetido.

133) Faa um programa que leia um texto da entrada


e converta os caracteres maisculos para minsculos
e vice-versa.

Exemplo:
texto compactado:
texto descompactado:

134) Faa um programa que leia trs caracteres


numricos (0 a 9) da entrada e imprima o nmero
inteiro correspondente usando printf com formato
%d . Lembre-se que voc deve compor o nmero,
o primeiro caracter ser a centena, o segundo a
dezena e o terceiro a unidade.
135) Faa um programa que leia um texto da entrada
e imprima o nmero de palavras encontradas no
texto.

Exerccios Propostos
136) Faa um programa que calcule o resultado de
uma expresso aritmtica lida da entrada. A
expresso ter um nmero indetermin ado de termos
envolvendo as operaes de soma, subtrao, diviso
e multiplicao. No leve em considerao a
precedncia dos operadores. proibido o uso
da funo scanf para a leitura dos operadores e
operandos. Exemplo: 10 + 5 * 2 = 30
137) Faa um programa em C que leia quatro
caracteres da entrada padro (representado um
nmero na base 16) e um caracter representando um
sinal e imprima o valor numrico decimal
correspondente. O caracter que representa o sinal
(+ ou -) pode aparecer em qualquer parte do
nmero. Os demais caracteres sero dgitos (0, 1,
2, ..., 9) ou letras maisculas (A, B, C, D,
E, F). Para facilitar assuma que o usurio ir
digitar exatamente o que o programa espera ler.

Exemplo: 110-B 4363


138) (Prova 4 - 96/1) Faa um programa que leia
uma linha (terminada por <Enter>) com um texto
compactado e a imprima de forma descompactada.
Ao aparecer no texto o caractere @, significa que
os dois caracteres seguintes so, respectivamente, o

x@3ux@5a
xuuuxaaaaa

139) (Prova 2 - 94/1) Faa um programa que leia da


entrada padro (teclado) uma seqncia de
caracteres, terminada pelo caractere #' ' e imprima
quantos caracteres, quantas palavras e quantas
frases foram lidas.
Observaes: Para facilitar, considere que: cada
frase delimitada por ?' ', '!'ou '.'; cada palavra
delimitada por '\n', '\t' ou espao; no existem
espaos antes e depois de um sinal de pontuao;
cada palavra separada das demais por um nico
espao; o texto comea por uma letra; no existem
sinais de pontuao consecutivos.
140) (Prova 3 - 96/2) O programa abaixo funciona
como esperado? Justifique sua resposta.
#include <stdio.h>
#include <conio.h>
void main (void)
{
int i;
char nome[10];
for (i = 0; i < 10; i++)
nome[i] = getche ();
puts (nome);
}

141) (Prova 1 - 97/1) Faa um programa em C que


leia uma linha de texto e substitua cada vogal lida por
N vogais iguais, onde N representa o nmero de
vogais lidas at ento. Para os demais caracteres, o
programa deve imprimir apenas o prprio caractere.
Considere que o usurio digitar apenas caracteres
minsculos. O programa dever imprimir, ao final, o
percentual de consoantes em relao ao total de
caracteres digitados. Exemplo:
Texto lido: apenas um exemplo!!!!!!!
Impresso: apeenaaas uuuum
eeeeexeeeeeemplooooooo!!!!!!!
Percentual: 33.333333

Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 14 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
142) (Prova 4 - 96/2) Faa um programa que
compacte um texto lido segundo o seguinte algoritmo:
a) se houver de 3 a 9 caracteres repetidos, o
programa dever imprimir o caracter @ seguido
do nmero de caracteres repetidos e do caracter
repetido,
b) se no houver mais do que trs repeties, o
prprio caracter dever ser impresso tantas vezes
quanto ele apareceu,
c) se houver mais do que 9 repeties, o programa
dever imprimir seqncias semelhantes a do item
a at totalizar o nmero de repeties necessrias
(ver exemplo da letra k).
Exemplo:
Entrada de dados:
abcccdeeeee
fghhhhhhhhhh
ijkkkkkkkkkkkkkkklm
Sada de dados:
ab@3cd@5e
fg@9hh
ij@9k@6klm
143)
a) Faa uma funo que leia um valor, em
algarismos romanos (considere vlidos apenas os
algarismos I, V e X), e o converta para seu
nmero decimal correspondente, devolvendo o
valor calculado. O nmero em romanos ser lido
como uma seqncia de caracteres terminada
com um <Enter>.
b) Faa uma funo que receba 2 valores decimais e
um operador (+, -, *, /) e calcule o resultado da
operao.
c) Faa um programa, utilizando as funes dos itens
anteriores, que leia 2 (dois) nmeros em
algarismos romanos e um operador (+, -, *, /) e
calcule o resultado da operao.

Funes
Exerccios de Fixao
144) Faa uma funo que:

a) receba um inteiro (de um dgito) como parmetro


e retorne o caractere correspondente.
b) receba um caractere como parmetro e retorne o
seu correspondente em maisculo (se minsculo)
ou o prprio caractere.
c) receba um caractere como parmetro e retorne o
seu correspondente em minsculo (se maisculo)
ou o prprio caractere.
d) receba um caractere como parmetro e retorne o
seu correspondente cdigo ASCII (inteiro).
e) receba um caractere como parmetro e retorne
verdadeiro (1) se for letra e falso (0), caso
contrrio.
f) receba um caractere como parmetro e retorne
verdadeiro (1) se for dgito e falso (0), caso
contrrio.
g) receba um caractere como parmetro e retorne
verdadeiro (1) se for espao e falso (0), caso
contrrio.
h) receba um caractere como parmetro e retorne
verdadeiro (1) se for letra maiscula e falso (0),
caso contrrio.
i) receba um caractere como parmetro e retorne
verdadeiro (1) se for letra minscula e falso (0),
caso contrrio.
j) retorne o resultado de um nmero elevado a
outro (ambos recebidos como parmetros).
k) retorne o resto da diviso inteira de um nmero
por outro.
145) Faa uma funo que receba um caracter como
parmetro e retorne 1 caso seja uma consoante e 0
em caso contrrio.
146) Faa uma funo que receba um caracter como
parmetro e retorne 1 caso seja uma vogal e 0 em
caso contrrio.
147) Faa uma funo que receba um nmero inteiro
como parmetro e retorne seu valor absoluto.
148) Faa uma funo que receba um nmero inteiro
como parmetro e retorne 1 se sua raiz quadrada
exata e 0 em caso contrrio. A funo de retornar,
atravs de um parmetro passado por referncia, o
valor aproximado da raiz.

Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 15 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
149) Faa uma funo que receba um caracter como
parmetro por referncia. Se o caracter for uma letra
minscula, a funo deve convert-la para maiscula.
A funo deve retorna 1 se o caracter for uma letra
e 0 em caso contrrio.

b)
void main (void)
{
int v[6]={0, 10, 20, 40, 50, 60},y;
float x, z;

150) Faa uma funo que receba um caracter como


parmetro por referncia. Se o caracter for um
digito, a funo deve convert-lo para o seu
respectivo valor numrico. Lembre-se 0 caracter
diferente de 0 numrico. A funo deve retorna 1 se
o caracter for um dgito e 0 em caso contrrio.

...
...
...
x = f (10);
g (x, &y);
g (z, &v[4]);
z = h (v[5], v);
...

...

...

151) (Prova 3 - 96/2) Faa os prottipos (apenas!!)


das funes f(), g() e h() utilizadas pela funo
main() abaixo:
void main (void)
{
int v[6]={0,10,20,40,50,60}, y;
float x, z;
x = f (10);
g (x, &y);
g (z, &v[4]);
z = h (v[5], v);
...
...
...
}

152) (Prova 3 - 97/1) Faa os prottipos (apenas!!)


das funes abaixo, baseado nas informaes dadas:
a)
void main (void)
{
int a, b[10];
char d, e[10];
float g, h[10];

153) (Prova 3 - 97/1) Faa as funes necessrias


para que os programas abaixo funcionem conforme o
esperado:
a)
#include <stdio.h>
void main (void)
{
int a, b, c, erro;
scanf (%d%d, &a, &b);
c = divide (a, b, &erro);
if (erro)
printf (Erro: diviso por
zero\n);
else
printf (%d dividido por %d =
%d\n, a, b, c);
}

b)

... ... ....


faz_tudo (a, &d, &g);
g = faz_nada (a, b[1], b);

#include <stdio.h>
void main (void)
{
int v[5]={1, 2, 3, 4, 5}, i, j;
printf (\nDigite as posies do vetor
que devem ser trocadas);
scanf (%d%d, &i, &j);
troca (v, i, j);

no_sei (3.14, g, h[2], &h[3]);


e[a] = ta_certo ();
...

...

....

for (i=0; i<5; i++)


printf (%d\n, v[i]);
}

Exerccios Propostos
154) Elabore uma funo que retorne o reverso de
um nmero inteiro, por exemplo 932 239.
Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 16 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
155)
a) Faa uma funo chamada fatorial que deve
receber um valor inteiro como parmetro e
retornar o fatorial deste nmero.
b) Faa um programa que calcule o valor da
combinao de n elementos r a r. A frmula da
combinao a seguinte: C nr =

n!
. Leia
r ! (n r ) !

os valores de n e r da entrada e use a funo do


item anterior para calcular o resultado.
156) Construa uma funo que, dado um nmero de
conta corrente com trs dgitos, retorne o seu dgito
verificador, o qual calculado da seguinte maneira:
Exemplo: nmero da conta: 25678
Somar o nmero da conta com o seu inverso: 256
+ 652 = 908;
multiplicar cada dgito pela sua ordem posicional e
somar este resultado: 9 0 8
9
0
8
x1
x2
x3

9
+
0 +
24 = 33
o ltimo dgito deste resultado o dgito
verificador da conta (33 3).

decimal correspondente. obrigatrio o uso da


funo anterior. Voc pode fazer esta questo
mesmo que no tenha feito a anterior.
c) Seja a funo main abaixo:
void main (void)
{
int a, b, c;
a = le_converte();
b = le_converte();
c = a + b;
printf ("\n%d", c);
imprime_em_binario (c);
}

Faa a funo imprime_em_binario.


159) (Prova 2 - 96/1) Crie as funes necessrias ao
funcionamento correto do programa abaixo. No
permitido:

alterar a funo main();


usar printf();
usar scanf().

157) Faa uma funo que calcule o peso ideal de


uma pessoa. A funo deve receber o valor da altura
da pessoa e um valor numrico indicando o sexo (0 masculino e 1 - feminino). A funo deve calcular o
peso ideal de acordo com as seguintes frmulas:
homens (72.7 * altura) - 58 e mulheres (62.1 *
altura) - 44.7. Faa a funo main para completar o
seu programa. A funo main deve ler a altura e o
sexo de um conjunto de pessoas e imprimir o peso
ideal at que seja digitado um valor negativo para
altura.
158)
a) Faa uma funo (chamada conv) que leia um
dgito (caractere) e retorne o valor numrico
correspondente.
b) Faa uma funo (chamada le_converte) que
leia 5 dgitos (caracteres), representando uma
seqncia de bits, e retorne o valor numrico
Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 17 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
iguais;
c) se < 0, x1 e x2 no devero ser alteradas pela
funo.

void main (void)


{
int x, y, z;
int n;
scanf (%d, &n);
x = funcao_q_le (n);
y = funcao_q_le (n);
z = x + y;
funcao_q_escreve (z, n+1);
}

O valor de retorno da funo ser o valor de ;


indicando a quem chamou a funo a natureza das
razes (reais e distintas, reais e iguais ou imaginrias).

a) a funo funcao_q_le(i) dever ler i


caracteres e retornar o seu valor decimal.
b) a funo funcao_q_escreve (a, i) dever
escrever o valor a de at i dgitos.
160) O nmero irracional pode ser calculado

( 1)
. Construa uma
i =0 2i + 1
funo em C que receba como parmetro
(passagem por valor) o nmero de termos a serem
usados no clculo de , e retorne o valor calculado
para .
atravs da expresso = 4

da

expresso

x=

Vetores
Exerccios de Fixao

161) As razes de uma equao do segundo grau da


forma ax2 + bx + c = 0 podem ser calculadas
atravs

Obs: use a funo pow(x,y) para calcular xy, onde x


e y so do tipo float. Lembre-se de que a raiz
quadrada de um nmero real x igual a x0.5.

b
,
2a

onde

= b2 4ac . Faa um programa completo em C


que leia um nmero indeterminado de coeficientes a,
b e c do teclado (o programa dever terminar quando
o valor do coeficiente a for zero) e, para cada grupo
de coeficientes, chame uma funo que calcule as
razes da equao e as exiba no monitor, caso elas
sejam reais, ou a mensagem Razes Imaginrias ,
caso elas sejam imaginrias.
A funo dever receber como parmetros os
coeficientes a, b e c (passagem por valor) e as razes
x1 e x2 (passagem por referncia). Os valores
devolvidos pela funo atravs dos parmetros sero
os seguintes:
a) se > 0, x1 e x2 contero duas razes reais e
distintas;
b) se = 0 , x1 e x2 contero duas razes reais e

162) Faa um programa que leia e imprima o


resultado da soma entre dois vetores inteiros de 50
posies.
163) Elabore um algoritmo que, dados dois vetores
inteiros de 20 posies, efetue as respectivas
operaes indicadas por um outro vetor de 20
posies de caracteres tambm fornecido pelo
usurio, contendo as quatro operaes aritmticas em
qualquer combinao, armazenando os resultados em
um quarto vetor.
164) Construa um algoritmo que preencha um vetor
de 100 elementos inteiros colocando 1 na posio
correspondente a um quadrado perfeito e 0 nas
demais.
165) Faa um programa que leia uma conjunto de
linhas de texto, terminadas com uma linha vazia e
imprima a quantidade de cada uma das letras
minsculas encontradas no texto.
166) Faa um programa que leia uma linha de texto,
terminada como um <Enter> e imprima o inverso da
linha que foi lida.
Exemplo: Isto e apenas um exemplo
olpmexe mu sanepa e otsI
167) Faa uma funo chamada inverte, que receba
um vetor de nmeros inteiros como parmetro e seu
tamanho. A funo deve inverter a ordem dos

Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 18 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
elementos do vetor, de modo que o primeiro elemento
passe a ser o ltimo, o segundo passe a ser o
penltimo e assim por diante. Faa um programa
para testar a funo inverte .
168) Faa um programa que leia um conjunto de
linhas de texto e imprima a linha que teve o maior
nmero de vogais. Considere que cada linha ter um
mximo de 80 caracteres.
169) Faa um programa que leia uma seqncia de
10 nmeros e informe o total de ocorrncias do
ltimo nmero lido.
Exemplo: supondo a seguinte seqncia de nmeros
38 4 23 5 6 7 4 12 4
o resultado ser:
O nmero 4 apareceu 3 vezes
170) Faa um programa que leia um texto (seqncia
de linhas) terminado por uma linha vazia (uma linha
com apenas um <Enter>) e informe o total de
ocorrncias de cada dgito (de 0 at 9). Os dgitos
que no ocorreram no texto no devem ser listados.
Exemplo: supondo a seguinte seqncia de
caracteres:
Este eh 1 exemplo.
Esta eh apenas a linha 2 do exemplo.
A linha 3 vem depois da linha 2.
O programa deve funcionar para muito
mais do que 239 casos.

A sada ser:
O
O
O
O

dgito
dgito
dgito
dgito

1
2
3
9

apareceu
apareceu
apareceu
apareceu

1
3
2
1

vez(es).
vez(es).
vez(es).
vez(es).

171) Faa um programa que leia um vetor ordenado


de 10 nmeros inteiros e uma chave, informe a
posio da chave no vetor ou uma mensagem de erro
se o nmero no for encontrado.
Obs.: faa uma funo que realize a busca. Esta
funo no dever imprimir nada.
Exemplo: supondo a seguinte seqncia:
1 2 3 8 97 412 446 957 8912 8974
se a chave for 446, o resultado ser: Chave na

posio 6.
se a chave for 413, o resultado ser: Chave no
encontrada.
172) Faa um programa que leia a matricula e a nota
final de 10 alunos de uma turma de LTP1 e imprima
os dados dos alunos (matricula e nota) ordenados por
nota (ordem decrescente).
173) Faca uma funo que receba um vetor de
caracteres chamado linha e um caracter chamado
ch como parmetros. Retire todas as ocorrncias do
caracter ch do vetor linha. O fim do vetor linha
ser indicado pelo caracter '\n'. Faca um programa
para testar a sua funo.
174) Faa uma funo que receba um vetor de
caracteres, seu tamanho e um caracter e retire todas
as ocorrncias desse caracter no vetor. A funo
deve retornar o total de caracteres restantes no
vetor. Faa uma main() para testar sua funo, do
jeito que voc achar necessrio.
175) Faa uma funo que receba um vetor de
inteiros (ordenados de forma crescente) e seu
tamanho e retorne o maior valor menor que a mdia
de seus elementos. Faa uma main() para testar sua
funo, do jeito que voc achar necessrio.
176) Faa um programa que leia um texto (seqncia
de linhas) da entrada e imprima as 5 letras
minsculas de maior ocorrncia no texto. Dica: Faca
um vetor de contadores, um para cada letra e ordene
este vetor em ordem decrescente.
177) Faa uma funo que receba um vetor de
caracteres, seu tamanho e dois caracteres e substitua
todas as ocorrncias do 1o caracter pelo 2o. Faa
uma main() para testar sua funo, do jeito que voc
achar
178) Faa uma funo que receba um vetor de
caracteres, seu tamanho e um inteiro. Se o caracter
da posio indicada pelo inteiro for letra, retornar o
total de letras do vetor; seno, retornar o total de
caracteres no-letra. Faa uma main() para testar
sua funo, do jeito que voc achar necessrio.

Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 19 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
179) Faa uma funo que receba um vetor de
inteiros positivos, um vetor de caracteres e o
tamanho (nico) dos vetores. A funo deve imprimir
cada um dos caracteres do 2o vetor n vezes, onde n
o contedo da posio correspondente no vetor de
inteiros. Faa uma main() para testar sua funo, do
jeito que voc achar necessrio.
180) Faa uma funo que receba um vetor de
inteiros e seu tamanho e retorne 1 (um) se o vetor
estiver ordenado de forma crescente ou 0 (zero) se
no estiver. Faa uma main() para testar sua funo,
do jeito que voc achar necessrio.

186) Faa uma funo que receba um vetor de n


nmeros inteiros positivos e obtenha a maior
diferena (em mdulo) entre dois elementos
consecutivos deste vetor. O valor da maior diferena
dever ser retornado pela funo.
Exemplo:
V = (1,2,4,7,8)
A maior diferena em mdulo 3.

Exerccios Propostos
187) Faa um programa que leia um texto e uma
chave, e embaralhe as letras do texto conforme a
ordem dada pela chave.

181) Faa uma funo que receba dois vetores de


inteiros e seus tamanhos e imprima os elementos
comuns aos dois vetores. Faa uma main() para
testar sua funo, do jeito que voc achar necessrio.

Por exemplo:

182) Faa uma funo que receba um vetor de


inteiros e seu tamanho e retorne o menor dos
elementos pares do vetor. Faa uma main() para
testar sua funo, do jeito que voc achar necessrio.

texto:
chave:

abcdefghij
31524

sada:

caebdhfjgi

183) Faa uma funo que implemente uma busca


binria. Esta funo recebe um vetor de caracteres,
seu tamanho e uma chave e retorna a posio da
chave no vetor. Faa uma main() em que, se a chave
for encontrada no vetor, ela ser substituda por um *
(asterisco).
184) Faa uma funo que receba um vetor de
inteiros e seu tamanho e retorne 1 (um) se o vetor
estiver ordenado de forma decrescente ou 0 (zero) se
no estiver. Faa uma main() para testar sua funo,
do jeito que voc achar necessrio.
185) Faa uma funo que receba como parmetros
dois vetores de reais, e um inteiro indicando a
quantidade de elementos que os dois vetores tm. A
funo dever retornar o produto interno dos dois
vetores.
Exemplo:
X = (1,2,3,4)
Y = (4,3,2,1)
X.Y = 4 + 6 + 6 + 4 = 20

Ou seja, o texto dividido em pedaos do


tamanho da chave (nesse caso 5). E cada pedao
embaralhado da seguinte forma:
em 1o lugar a 3a letra
em 2o lugar a 1a letra
em 3o lugar a 5a letra
em 4o lugar a 2a letra
em 5o lugar a 4a letra
Faa seu programa para uma chave de 5
elementos e um texto de at 80 caracteres. Se o
texto lido no tiver um nmero de caracteres mltiplo
de 5, complete com espaos em branco.
Por exemplo:
texto:
novo texto:

abcdefg
abcdefg

Para esse caso a sada seria:


sada:

Lembre-se sempre
32
A Sorte Ajuda aos Competentes

caebd f g
Pgina 20 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
188) A coordenao do TPD deseja saber quantos
alunos esto cursando ao mesmo tempo as cadeiras
de LTP1 e Organizao de Computadores. Faa um
programa que leia os cdigos de matricula dos alunos
de ambos os cursos, sabendo-se que existem 150
alunos cursando LTP1 e 120 alunos cursando
Organizao de Computadores. O programa deve
imprimir o cdigo das matriculas dos alunos que esto
cursando ambas as disciplinas.
189) Faa um programa que leia uma linha de texto,
terminada com um <Enter> e imprima a linha com
suas palavras na ordem inversa. Considere que cada
palavra separada por apenas um caracter de
espao.
Exemplo: Isto e apenas um exemplo
exemplo um apenas e Isto
190) Faa um programa que realize a reserva de
passagens areas de uma companhia. Alm da
leitura do nmero de vos e quantidade de lugares
disponveis, ler vrios pedidos de reserva, constitudos
do numero da carteira de identidade do cliente e do
nmero do vo desejado.
Para cada cliente, verificar se h possibilidade
no vo desejado. Em caso afirmativo, imprimir o
nmero da identidade do cliente, e o nmero do vo,
atualizando o nmero de lugares disponveis. Caso
contrrio, avisar ao cliente a inexistncia de lugares.
191) Faca um programa capaz de corrigir provas de
mltipla escolha. Cada prova ter 10 questes,
valendo 1 ponto cada uma. O programa deve
inicialmente ler o gabarito da prova. Ele ser
constitudo de um conjunto de dez caracteres
representando a resposta para cada uma das
questes. Cada questo pode ter uma das seguintes
respostas: 'a', 'b', 'c', 'd' ou 'e'.
Aps a leitura do gabarito, o programa devera
ler as respostas dos alunos. Para cada aluno devera
ser lido o seu numero de matricula e suas respostas.
O programa devera calcular a nota do aluno e
imprimi-la de acordo com o gabarito. A leitura
termina com um cdigo de matricula negativo. Ao
final, o programa devera imprimir a percentagem de
aprovao, sabendo-se que a nota mnima e 5.

192) Faca um programa que leia uma seqncia de


100 nmeros da entrada de forma desordenada. O
programa deve imprimir, aps a leitura, os nmeros
que se repetiram na seqncia, informando quantos
vezes cada um deles apareceu.
193) Faa um programa que leia uma seqncia de
10 nmeros reais da entrada e imprima somente uma
vez cada nmero lido. Mesmo que o nmero seja
digitado mais de uma vez na entrada, deve aparecer
somente uma nica vez na sada.
194) Uma locadora de vdeo possui 200 ttulos de
filmes, codificados de 0 a 199. A locadora possui
uma ou mais fitas para cada ttulo. Faa um
programa em C que leia as seguintes informaes
sobre cada fita:
Cdigo do filme (0 a 199) e
Nmero
de
emprstimos (inteiro)
e informe, na sada, para cdigo de filme, quantas
fitas devem ser substitudas.
Como um ttulo (filme) pode possuir mais de
uma fita, na entrada de dados devem aparecer
cdigos de filmes replicados, representando as
diversas fitas daquele ttulo.
A locadora considera uma fita inutilizvel e,
portanto, passvel de substituio, aquelas que foram
emprestadas mais de 500 vezes. A leitura termina
quando for lido um cdigo de filme invlido.
195) Faa um programa que permita armazenar os
cdigos (inteiro) e o preo (real) de um conjunto de
peas. O programa deve ser capaz de armazenar os
dados de at 100 peas, com cdigos variando de 0 a
999. Construa o seu programa, de modo que o
usurio seja capaz de incluir, excluir, consultar e
alterar os dados de uma pea. Faa tambm uma
opo permitindo que o usurio veja todas as peas j
cadastradas.
196) Faa um programa para gerenciar um sistema
de reservas de mesas em uma casa de espetculo. A
casa possui 30 mesas de 5 lugares cada. O programa
dever permitir que o usurio escolha o cdigo de
uma mesa (100 a 129) e fornea a quantidade de
lugares desejados. O programa dever informar se

Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 21 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
foi possvel realizar a reserva e atualizar a reserva.
Se no for possvel, o programa dever emitir uma
mensagem. O programa deve terminar quando o
usurio digitar o cdigo 0 (zero) para uma mesa ou
quando todos os 150 lugares estiverem ocupados.
197) (Prova 2 - 96/1) Faa um programa que leia
1000 valores reais da entrada e identifique o valor
mais prximo da mdia.
Exemplo supondo quatro valores:
2.5 7.5 10.0 4.0
mdia = 6.0 (no deve ser impresso)
valor mais prximo da mdia = 7.5 (resultado a
ser impresso)
198) (Prova 2 - 96/2) Faa um programa que leia
dois vetores ordenados, de 100 posies cada, e gere
um terceiro vetor, tambm ordenado, com todos os
elementos dos vetores anteriores.
Exemplo para vetores de 5 posies:
entrada: v1 = {1, 4, 5, 9, 111}
v2 = (3, 3, 5, 8, 300}
sada:
v3 = {1, 3, 3, 4, 5, 5, 8, 9, 111, 300}
199) (Prova 2 - 96/2) Faa um programa que leia
uma seqncia de no mximo 8572 nmeros reais,
terminada por 0 (zero). O programa deve imprimir
uma ocorrncia de cada nmero.
Exemplo:
entrada: 1 1 4 9.5 1 800 4 -3.2 9.5 801 0
sada:
1 4 9.5 800 -3.2 801
200) (Prova 4 - 96/1) Observe a funo main()
abaixo:
void main (void)
{
int el[100],qtd;
puts (Entre com o nmero de elementos a
serem lidos);
scanf (%d,&qtd);
le_vet (el,qtd);
computa (el,qtd);
imprime (el,qtd);
descomputa (el,qtd);
imprime (el,qtd);
}

Faa as seguintes funes:


a) le_vet(): esta funo l n elementos de um vetor,
onde o nmero de posies e o vetor so
recebidos como parmetros.
b) imprime(): esta funo imprime n elementos de
um vetor, onde o nmero de posies e o vetor
so recebidos como parmetros.
c) computa(): esta funo soma a cada elemento do
vetor todos os seus subseqentes, onde o nmero
de posies e o vetor so recebidos como
parmetros.
d) descomputa(): esta funo restaura os valores
originais do vetor, onde o nmero de posies e o
vetor so recebidos como parmetros.
Exemplo para 4 elementos lidos:
Vetor original:
6
3
2
9
Vetor aps a execuo da funo computa():
20 14 11 9
Vetor aps a execuo da funo descomputa():
6
3
2
9
201) (Prova 3 - 96/2) Faa um programa que leia
uma seqncia de nmeros reais terminada por 0
(zero) (com, no mximo, 1000 nmeros diferentes
- o usurio bonzinho) e imprima o nmero de
maior ocorrncia. Note que pode -se ter mais do que
1000 nmeros na entrada de dados.
202) (Prova 2 - 97/1) Faa um programa que
codifique um texto lido da entrada. Inicialmente o
programa dever ler duas tabelas de codificao,
uma para codificar as letras minsculas e outra para
as maisculas. As tabelas associam a cada letra um
outro caracter qualquer. A seguir o programa ler um
texto terminado por uma linha vazia, codificando
todas as letras que aparecem no texto.
203) (Prova 2 - 97/1) Faa uma funo que receba
como parmetros dois vetores de caracteres e as
quantidades de elementos presentes em cada vetor
(dois valores). A funo deve retirar do primeiro
vetor todos os caracteres que NO aparecerem no
segundo vetor (interseo) e retornar o nmero de
caracteres restantes no primeiro vetor. Exemplo:

parmetros :
Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 22 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
v1 = {w, b, q, o, a, -, t, p, x, r,
u, o, y, v, a}
v2 = {b, +, e, o, -, a, a, l, g, o,
r, v, p}
n1 = 15
n2 = 13
aps a execuo da funo :
v1 = {b, o, a, -, p, r, o, v, a}
v2 = {b, +, e, o, -, a, a, l, g, o,
r, v, p}
valor retornado pela funo: 9
Obrigaes do aluno: no declarar um terceiro
vetor na funo.
204) (Prova 2 - 97/1)
a) Faa uma funo chamada busca_bin() que
recebe um vetor de inteiros, a quantidade de
elementos e um valor a ser localizado no vetor
(nesta ordem). A funo deve retornar a posio
do valor no vetor ou -1, caso no o encontre.
b) Faa uma funo chamada le_dados() que recebe
dois vetores, um de cdigo (int) e outro de salrios
(float), o tamanho dos vetores (iguais). A funo
preenche os vetores atravs da entrada de dados
padro (teclado).
c) Uma empresa possui 100 vendedores. Cada
vendedor recebe um salrio fixo e um abono de
1,5% sobre o valor de suas vendas. Faa um
programa que calcule o salrio final a ser pago a
cada vendedor, de acordo com o volume de suas
vendas. O programa deve ler inicialmente o
cdigo de cada funcionrio (inteiro, entre 1533 e
2000) e seu salrio base, para todos os
vendedores. Considere que estes dados sero
fornecidos em ordem crescente por cdigo. A
seguir, o programa dever processar as vendas,
lendo o cdigo do funcionrio que realizou a venda
e o valor da venda. Isto dever ser feito para
cada venda realizada. O programa termina a
leitura de vendas quando for digitado um valor de
cdigo invalido (menor que 0). O programa deve
calcular o abono a ser pago a cada vendedor,
imprimindo seu salrio final.
Observao: no item c) obrigatria a utilizao das
funes dos itens anteriores, mesmo que voc no as
tenha feito.

205) (Prova 2 - 97/1) Faa um programa que


gerencie as informaes dos empregados de uma
firma de calados. Para cada empregado dever ser
lido o seu nmero de cadastro na empresa (inteiro) e
o nmero de meses desde sua contratao. A firma
possui 150 empregados. O programa deve imprimir o
nmero de cadastro dos 30 empregados contratados
mais recentemente. A firma contrata, no mximo, um
empregado por ms.
206) Voc foi encarregado de desenvolver um
programa em C para controlar o estoque e as vendas
das Organizaes Tabajara. O programa em questo
ir ler inicialmente o cdigo, a quantidade disponvel
em estoque e o preo dos produtos que estaro
disponveis para a venda. O dados lidos do teclado
sero armazenados em vetores; um cdigo de
produto igual a zero indica o trmino do
cadastramento de produtos. Sabe-se que as
Organizaes Tabajara trabalham com no mximo
50 produtos diferentes.
A segunda fase do programa a venda em si.
Voc dever ler do teclado o cdigo do produto a ser
vendido e a quantidade requerida. Se o cdigo do
produto estiver cadastrado a venda poder ser
realizada, caso contrrio a mensagem Produto no
Cadastrado dever ser exibida no monitor. Caso o
produto esteja disponvel, a venda s poder ser
realizada se a quantidade disponvel no estoque for
suficiente para atender ao pedido. Neste caso voc
dever abater do estoque a quantidade vendida. Se o
estoque no for suficiente para atender ao pedido a
mensagem Estoque Insuficiente dever ser exibida
no monitor. O final das vendas ser detectado
quando o cdigo do produto for igual a zero.
No final do programa voc dever exibir no
monitor o valor vendido no dia e a relao de todos
os produtos do estoque, com suas respectivas
quantidades, em ordem decrescente de
quantidade disponvel.
a) Voc dever seguir os seguintes passos:

b) Faa uma funo que leia do teclado os dados do


estoque e armazene-os em vetores (passados
Lembre-se sempre
Pgina 23 de
32
A Sorte Ajuda aos Competentes
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br

Linguagem de Programao C
como parmetro);
c) Aps chamar a funo do item a, comece o
processo de venda. Voc ir ler do teclado os
pedidos e atualizar o estoque. Faa uma funo
para fazer uma busca no vetor de cdigo de
produtos para verificar se o produto existe;

d) No final voc dever exibir um relatrio. Faa


uma funo para ordenar o vetor em ordem
decrescente.

Matrizes
Exerccios de Fixao
207) Faa um programa que leia uma matriz de
nmeros inteiros de dimenses 4x4 e imprima a soma
dos valores de cada linha e a soma de todos os
elementos da matriz.
208) Uma estao meteorolgica registra a
temperatura ocorrida em uma cidade a cada hora.
Faa um programa que leia as temperaturas de uma
semana no seguinte formato: dia, hora, temperatura.
A leitura termina com um dia invlido. O programa
deve informar para cada hora consultada, a maior
temperatura ocorrida na semana. As consultas
terminam com um valor de hora invlido.
209) Faa um programa que leia uma matriz de 4 x 5
elementos, calcule a soma de cada linha e a soma de
todos os elementos.
210) Faa um programa que analise um carto de
loteria esportiva e diga qual dos 13 jogos possui um
triplo, ou se no existir, um duplo. O programa deve
ler da entrada a configurao do carto e em seguida
informar o jogo mais marcado. Dica: fixar a linha e
variar a coluna.
211) Refaa o exerccio
anterior de modo a
descobrir qual das colunas do carto possui mais
marcaes, se a coluna um, a coluna dois ou a do
meio. Dica: fixar a coluna e variar a linha.

212) Construa um programa que efetue a leitura, a


soma e a impresso do resultado, entre duas matrizes
inteiras que comportem 25 elementos.
213) Construa uma funo booleana em C que
receba como parmetros uma matriz quadrada e a
varivel n, dimenso da matriz. A funo dever
devolver true(1), se a matriz for a matriz identidade
de dimenso n, ou false(0), caso contrrio.
214) Construa uma funo booleana em C que
receba como parmetros uma matriz quadrada e a
varivel n, dimenso da matriz. A funo dever
devolver true(1), se a matriz for simtrica, ou
false(0), caso contrrio.
215) Construa uma funo booleana em C que
receba como parmetros duas matrizes quadradas e
a varivel n, dimenso das matrizes. A funo
dever imprimir a soma das duas matrizes linha a
linha.
216) (Prova 3 - 96/1) Faa um programa que leia
uma matriz de inteiros A quadrada de ordem 100 e
calcule a sua transposta AT . Exemplo para matriz de
ordem 4 (apenas um outro exemplo!!!):
1 2 3 4
5 6 7 8

A=
9 10 11 12

13 14 15 16

1
2
AT =
3

5 9 13
6 10 14

7 11 15

8 12 16

Exerccios Propostos
217) A tabela dada a seguir contm vrios itens que
esto estocados em vrios armazns de uma
companhia. fornecido, tambm, o custo de cada um
dos produtos arma zenados.

Armazm 1
Armazm 2
Armazm 3
Custo

PRODUTO
1

PRODUTO2

PRODUTO3

1200
1400
2000
260

3700
4210
2240
420

3737
4224
2444
330

Fazer um programa que:


Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 24 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
1. leia o estoque inicial;
2. determine e imprime quantos itens esto
armazenados em cada armazm;
3. qual o armazm que possui a maior quantidade de
produto 2 armazenado;
4. o custo total de:
- cada produto em cada armazm;
- estoque em cada armazm;
- cada produto em todos os armazns.
218) O tempo que um determinado avio dispensa
para percorrer o trecho entre duas localidades
distintas est disponvel atravs da seguinte tabela:

A
B
C
D
E
F
G

A
00
02
11
06
15
11
01

B
02
00
07
12
04
02
15

C
11
07
00
11
08
03
13

D
06
12
11
00
10
02
01

E
15
04
08
10
00
05
13

F
11
02
03
02
05
00
14

G
01
15
13
01
13
14
00

a) Construa uma funo que leia a tabela acima e


armazene as informaes em uma matriz global;
b) Construa uma funo que leia da entrada o cdigo
de duas cidades (A, B, ..., F e G) e informe
ao usurio o tempo necessrio para percorrer a
distncia entre as duas cidades por ele fornecidas.
A leitura termina quando o usurio fornece duas
cidades iguais (fonte e destino).
c) Construa uma funo que imprima a tabela sem
repeties (apenas o tringulo superior ou o
tringulo inferior).
d) Construa uma funo que leia da entrada os
cdigos de um conjunto de cidades e imprima o
tempo total para cumprir todo o percurso entre as
cidades fornecidas. A leitura termina quando o
usurio fornece um cdigo de cidade invlido.
e) Faa uma funo main () para testar as suas
funes.
219) Faa um programa que leia o nmero de
matrcula de 100 alunos e suas notas (5 notas para
cada aluno). O programa deve armazenar todos os
dados em uma matriz: a matrcula na primeira coluna
e as notas nas colunas seguintes. O programa dever

calcular, para cada aluno, a mdia de suas notas, que


deve ser armazenada na stima coluna da matriz.
Aps o clculo da mdia, o programa dever ordenar
a matriz pela mdia de cada aluno. Utilize a funo
main() abaixo.
#include <stdio.h>
#define C 7
#define L 100
void
void
void
void
void
void

le_matriz (int [][C]);


media_alunos (int [][C]);
ordena_matriz (int [][C]);
troca_linha (int [][C], int, int);
troca (int *, int *);
imprime (int [][C]);

void main (void)


{
int i, j;
int m[L][C];
le_matriz (m)
media_alunos (m);
ordena_matriz (m);
imprime (m);
}

Teste seu programa com os seguintes dados:


Matrcula
134
99
120

N1
8
8
10

N2
5
6
9

N3
7
5
10

N4
9
2
10

N5
10
3
8

A matriz resultante ser:


Matrcula
99
134
120

N1
8
8
10

N2
6
5
9

N3
5
7
10

N4
2
9
10

N5
3
10
8

Mdia
3
7
9

220) A Escola Pagou Passou possui 10 turmas, com


exatamente 60 alunos em cada uma, e a sua
diretoria resolveu fazer o acompanhamento do
rendimento dos alunos matriculados em cada uma
das turmas.

Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 25 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
Para atender as necessidades da diretoria voc
dever construir um programa em C que faa o
seguinte:

a) defina duas matrizes para armazenar as


matrculas e as notas dos alunos das 10 turmas,
cada qual com exatamente 60 alunos;
b) faa uma funo que leia do teclado a matrcula e
a nota dos alunos e armazene-as nas respectivas
matrizes, turma a turma. Lembre-se de que a
escola tem exatamente 10 turmas, cada uma das
quais com exatamente 60 alunos. A funo
dever receber as duas matrizes como
parmetros;
c) faa uma funo que calcule e exiba no vdeo a
mdia de cada turma, armazenando-as em um
vetor de mdias com 10 elementos. As matrizes e
o vetor devero ser passados como parmetros;
d) faa uma funo que percorra a matriz de notas,
turma a turma, exibindo no vdeo, uma a uma, as
matrculas dos alunos cujas as notas ficaram
abaixo da mdia das respectivas turmas.
e) a funo main dever chamar cada uma das
funes acima de maneira que o programa
cumpra o seu objetivo corretamente.

Strings
Exerccios de Fixao
221) Faa uma funo chamada strcpy que recebe
duas strings como parmetros e copie todos os
elementos da segunda string para a primeira,
apagando-a. Faa um programa para testar sua
funo.
222) Faa uma funo chamada strlen que recebe
uma string como parmetro e retorne o nmero de
caracteres da string. O caracter \0 no deve ser
considerado na contagem. Faa um programa para
testar sua funo.

caracteres da segunda string para o final da primeira


string. Faa um programa para testar sua funo.
224) Faa uma funo chamada strcmp que recebe
duas strings (s1 e s2) como parmetros e compara
os seus contedos. A funo retorna um nmero < 0
se s1 for menor que s2, um nmero > 0 se a s1 for
maior que s2 e 0 (zero) se as strings forem iguais.
Faa um programa para testar sua funo.
225) Faa uma funo chamada puts que recebe
uma string como parmetro e imprime seu contedo
na tela. Aps imprimir a string, a funo deve pular
uma linha. Faa um programa para testar sua
funo.
226) Faa uma funo chamada gets que recebe
uma string como parmetro e preenche esta string
com os caracteres lidos atravs do teclado. A leitura
termina quando o usurio digita <Enter>. Faa um
programa para testar sua funo.
227) Faa uma funo que receba uma string como
parmetro e imprima a string invertida.
228) Faa uma funo que receba uma string como
parmetro e converta todos as letras minsculas
encontradas em letras maisculas. Os demais
caracteres permanecem inalterados.
229) Faa uma funo que receba uma string como
parmetro e retorne o nmero de palavras
encontradas. Cada palavra pode estar separada por
um ou mais caracteres de espao. No considere os
caracteres de pontuao como separadores de
palavras.
230) Refaa a questo anterior considerando os
caracteres ., ,, ; como separadores de palavras,
alm do espao em branco.
231) Faa uma funo que receba uma string como
parmetro e um caracter. A funo deve retornar a
primeira posio onde o caracter foi encontrado na
string ou -1 caso o caracter no aparea na string.

232) Faa uma funo que receba uma string como


223) Faa uma funo chamada strcat que recebe
parmetro e um caracter. A funo deve retornar a
duas strings como parmetros e copie todos os
Lembre-se sempre
Pgina 26 de
32
A Sorte Ajuda aos Competentes
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br

Linguagem de Programao C
ltima posio onde o caracter foi encontrado na
string ou -1 caso o caracter no aparea na string.
233) Faa uma funo que receba uma string como
parmetro e um caracter. A funo deve retirar
todas as ocorrncias deste caracter da string.
234) Faa uma funo que receba uma string como
parmetro e dois caracteres. A funo deve trocar
toda a ocorrncia do primeiro caracter na string pelo
segundo caracter.
235) Faa uma funo que receba uma string como
parmetro e um caracter. A funo deve retornar o
nmero de vezes que o caracter aparece na string.
236) Faa uma funo que receba uma string como
parmetro, um caracter e um valor numrico. A
funo deve preencher a string com tantos
caracteres quanto for o valor numrico passado com
parmetro.
237) Faa uma funo chamada strncpy que recebe
duas strings (s1 e s2) e um valor numrico como
parmetros. A funo deve copiar tantos caracteres
quanto o valor numrico, da string s2 para a string
s1.
238) Faa um funo chamada stricmp que compara
duas strings (s1 e s2) passadas como parmetro, no
diferenciando maisculas de minsculas. A funo
deve retornar: 0 se as strings forem iguais; um valor
menor que 0 se s1 for menor que s2 e um valor maior
que 0 se s1 for maior que s2.

Exerccios Propostos
239) (Prova 3 - 94/1) Faa uma funo que receba
como parmetro uma string de, no mximo, 80
caracteres e converta todas as letras para
minsculas, exceto a primeira letra de cada palavra,
que deve ser maiscula. Considere que a string s
possui letras e espaos e entre as palavras existe um
nico espao.
Exemplo:
Frase recebida:
EsTa fRase e apENAS uM EXEmPLO

Frase gerada:
Esta Frase E Apenas Um Exemplo
240) Faa uma funo que receba uma string como
parmetro e imprima esta string em modo justificado,
ou seja, preenchendo os intervalos entre as palavras
com espaos em branco de maneira proporcional.
Considere este procedimento apenas para strings
com menos de 80 caracteres. As strings com mais
de 80 caracteres devem ser impressas sem
alterao.
241) Faa uma funo que receba uma string como
parmetro e a imprima. Se a string tiver mais de 40
caracteres, ela deve ser particionada, quantas vezes
for necessrio, de modo a imprimir no mximo 40
caracteres por linha, sendo que nenhuma palavra
deve ser impressa fragmentada.
242) Modifique a funo do item anterior de modo a
imprimir a string em modo justificado, alm de
realizar o seu particionamento.
243) Faa uma funo que receba duas strings como
parmetro (s1 e s2) e retorne a posio da string s2
dentro da string s1, caso a string s1 contenha a
string s2, ou -1 em caso contrrio.
Exemplo:
s1
s2

c
l

a
e

a
o

l
\0

o \0

A funo deve retornar o valor 4, pois o valor


da posio onde comea a string leo na
string camaleo.
244) Faa uma funo que receba uma string como
parmetro e verifique se um palndrome, isto , da
esquerda para direita ou da direita para a esquerda
tm-se a mesma seqncia de caracteres. Exemplos:
ama, ovo, asa.
245) (Prova 3 - 94/1) Considere a seguinte lista de
pases e respectivas capitais:
Canad
Ottawa
Inglaterra
Londres
Frana
Paris
Portugal
Lisboa
Japo
Tquio

Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 27 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
Escreva um programa interativo que aceite um nome
de um pas como entrada e imprima o nome de sua
capital. O programa deve executar repetidamente at
que seja digitada a palavra FIM.
246) (Prova 3 - 96/1) Faa uma funo que receba
duas strings e um inteiro como parmetros. Esta
funo inclui a segunda string a primeira a partir da
posio indicada pelo inteiro. Exemplo (apenas um
exemplo!!!):
1a string: isto exemplo
resultado aps execuo da funo:
2a string: apenas um
1a string: isto apenas um exemplo
inteiro:
7
2a string: apenas um
247) (Prova 4 - 96/1) Faa uma funo chamada
strmix que receba 3 strings (s1, s2 e s3) e misture s1
e s2 do seguinte modo:
1o caracter de s3: 1o caracter de s1
2o caracter de s3: 1o caracter de s2
3o caracter de s3: 2o caracter de s1 e assim
sucessivamente
Observaes: a string resultante dever ser
armazenada em s3. As strings s1 e s2 podem ter
tamanhos diferentes.
Exemplo:
s1: abcde
s2: 012
string resultante (s3): a0b1c2de
248) (Prova 3 - 96/2) Faa uma funo que receba
duas strings e retire da primeira todo caracter que
fizer parte da segunda string. Exemplo:
1a string: EFBACDEIEBBLBBD
2a string: EBD
Resultado
1a string: FACIL
2a string: EBD
249) (Prova 3 - 97/1) Faa uma funo chamada
compara() que receba duas strings e dois inteiros
pos e qtd, onde pos a posio nas strings a partir
da qual vamos comparar qtd caracteres. A
comparao NO deve levar em conta se os

caracteres so maisculos ou minsculos. A funo


retorna 0 (zero) se as pores de strings forem
iguais, seno, ela retorna -1. Dica: use uma funo
que converta uma letra para maisculo. Considere
que os valores de pos e qtd so sempre vlidos.
Exemplo:
string 1: Banana
string 2: ANNA MARIA
pos = 2
qtd = 2
retorna 0
string 1: Banana
string 2: ANNA MARIA
pos = 2
qtd = 3
retorna -1

250) (Prova 4 - 96/2) Faa um programa que leia um


texto, em javans, terminando com uma linha vazia e
imprima o nmero de ocorrncias de cada palavra no
texto. O programa dever imprimir uma lista das
palavras que apareceram no texto e o nmero de
ocorrncias de cada uma delas.
Sabe-se que em javans, existem 2548 palavras, a
maior palavra possui 78 letras e entre cada palavra
existe apenas um nico espao em branco.
a) faa uma funo que leia uma palavra,
b) faa uma funo para procurar uma palavra em
uma lista de palavras,
c) faa o programa utilizando as funes acima.
251) (Prova 4 - 96/2) Faa uma funo chamada
xxx() que receba duas strings como parmetros e
retorne a posio da 2a string de trs para frente
dentro da 1a string ou um nmero negativo caso no
encontre.
Faa um programa para testar se esta funo
que voc fez est funcionando.
Obs.: note que as strings podem ter qualquer
tamanho!!!
Exemplos:
Exemplo 1
Exemplo 2
1a string:
Esta uma linha Esta uma linha
2a string:
amu
uma
resultado: 7
-1542

Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 28 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
252) (Prova 4 - 97/1) Faa uma funo chamada
cria_string() que recebe como parmetros uma
string s 1 (de tamanho suficiente), um formato fmt
(tambm uma string) e um nmero inteiro positivo
num (nesta ordem). Esta funo ir preencher a
string s 1 de acordo com o formato passado como
parmetro e o valor do inteiro num. O formato ir
conter uma seqncia de caracteres que devem ser
integralmente copiados para a string s 1, com
exceo da seqncia %d. No seu lugar deve ser
copiado o valor do inteiro num convertido para
caracteres.
Dica: lembre-se que o maior numero inteiro que pode
ser representado no TC 32767 (5 dgitos).
Exemplos:
Exemplo 1
Parmetros passados:
s 1: (irrelevante, mas de tamanho suficiente)
fmt: O valor %d a respos ta
num: 15
Resultado aps a execuo da funo
s 1: O valor 15 a resposta
fmt: (irrelevante)
num: (irrelevante)
Exemplo 2
Parmetros passados:
s 1: (irrelevante, mas de tamanho suficiente)
fmt: Converta o %d para caracteres
num: 17430
Resultado aps a execuo da funo
s 1: Converta o 17430 para caracteres
fmt: (irrelevante)
num: (irrelevante)

Arquivos
Exerccios de Fixao
253) Faa um programa que leia um arquivo. O
arquivo contm linhas de texto de at 80 caracteres.
O nome do arquivo deve ser perguntado (sem
extenso) e a extenso txt. O programa deve

converter todas as letras minsculas encontradas


para letras maisculas. Os dados convertidos devem
ser escritos em outro arquivo. O nome do arquivo de
sada deve ser o mesmo do que foi perguntado com
extenso out.
254) Faa um programa que leia do arquivo matriz.txt
os valores de uma matriz 10 x 10 de nmeros inteiros
e imprima na tela a matriz e o resultado da soma de
todos os seus valores. Dica: use a funo fscanf. O
resultado para a matriz que est no disquete 2085.
255) Faa um programa que leia do arquivo
matriz.txt os valores de uma matriz 10 x 10 de
nmeros inteiros e gere um arquivo chamado
transp.txt, contendo a matriz transposta da que foi
lida.
256) Faa um programa que leia da entrada uma
seqncia de at 100 nomes. O usurio pode
terminar a leitura com um nome vazio, ou seja,
digitando <Enter> como primeiro caracter de um
novo nome. Cada nome lido dever ter no mximo 40
caracteres. Armazene esta seqncia de nomes em
um arquivo chamado nomes.txt.
257) Faa um programa que leia o arquivo nomes.txt,
gerado por voc, ordene alfabeticamente a seqncia
de nomes e os imprima na tela.
258) Faa um programa que leia da entrada o nome
(40 caracteres) e a nota final (float) dos alunos de
uma turma de LTP1. Cada turma tem no mximo 50
alunos. O programa deve armazenar os dados em um
arquivo binrio chamado "ltp1".
259) Faa um programa que leia o arquivo "ltp1",
criado por voc, e imprima a mdia dos alunos da
turma e quantos alunos tiveram notas acima da
mdia.
260) Faa um programa que leia um arquivo
contendo linhas de texto e imprima o nmero de
caracteres, o nmero de linhas e o nmero de
palavras contidas no texto. Considere que cada linha
do texto no contem mais que 80 caracteres
(adicione mais um para o '\n' e outro para o '\0').

Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 29 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

Linguagem de Programao C
261) Faa um programa que leia um arquivo
contendo linhas de texto e imprima as linhas em
ordem alfabtica. Considere que cada linha do texto
no contem mais que 80 caracteres.

270) Faa um programa que leia um arquivo texto


(5a.txt) com nomes de at 30 caracteres e grave um
outro arquivo binrio (5b.bin) com o nome e a
quantidade de letras maisculas nesse nome.

262) Faa um programa que leia os valores de duas


matrizes inteiras 3x3 da entrada e armazene em um
arquivo binrio chamado matriz o resultado da soma
das duas matrizes.

271) Faa um programa que leia dois nmeros


inteiros e uma matriz, tambm de inteiros, de no
mximo 30x30, todos eles de um arquivo binrio
(6a.bin). Os nmeros so a quantidade de linhas e de
colunas, respectivamente. O programa deve gravar,
em outro arquivo binrio (6b.bin), a soma das linhas
dessa matriz.

263) Faa um programa que leia um nmero da


entrada e a matriz contida no arquivo binrio matriz e
imprima o resultado da multiplicao do nmero pelos
elementos da matriz.
264) Faa um programa que leia da entrada um texto
de no mximo 50 linhas. Cada linha ter no mximo
80 caracteres. O programa deve armazenar este
texto em um arquivo binrio chamado texto.
265) Faa um programa que leia o arquivo binrio
"texto", converta todas as letras encontradas para
minsculas e armazene o resultado em um arquivo
texto chamado texto.txt.
266) Faa um programa que leia da entrada um nome
de arquivo. Este arquivo contem linhas de texto e
deve ser impresso na tela em modo justificado.
Considere que as linhas tero no mximo 80
caracteres. Obs.: Utilize a funo de justificar texto.
267) Faa um programa que leia de um arquivo texto
(2a.txt) duas strings de at 15 caracteres e leia dois
nmeros inteiros do teclado (n1 e n2) e grave um
segundo arquivo texto (2b.txt) com n1 vezes a
primeira string e n2 vezes a segunda string.

272) Faa um programa que leia um arquivo texto


(7a.txt) com linhas de no mximo 80 caracteres e
imprima em um arquivo binrio (7b.bin) o nmero
total de vogais, consoantes e caracteres no letras
encontrados no texto. O texto contm apenas letras
minsculas.
273) Faa um programa que leia dois caracteres da
entrada e um arquivo de texto (8a.txt) contendo
linhas de no mximo 80 caracteres. O programa deve
trocar todas as ocorrncias do primeiro caracter no
texto pelo segundo caracter e imprimir o texto
resultante em outro arquivo texto (8b.txt).
274) Faa um programa que leia um arquivo texto
(9a.txt) contendo 10 nomes de at 15 caracteres e
grave um outro arquivo texto (9b.txt) com os nomes
ordenados.
275) Faa um programa que leia uma matriz de
caracteres 6x6 de um arquivo texto (10a.txt) e grave
um arquivo binrio (10b.bin) com o nmero da linha e
a maior letra de cada linha.

268) Faa um programa que leia, de um arquivo


binrio (3a.bin), um conjunto de, no mximo, 20
nmeros inteiros e grave outro arquivo binrio
(3b.bin) com os mesmos nmeros na ordem inversa.

276) Faa um programa que leia uma linha de at 80


caracteres do teclado e gere um arquivo texto
(11a.txt) com os caracteres na seguinte seqncia:
1o, ltimo, 2o, penltimo, 3o, ante-penltimo, ...

269) Faa um programa que leia um arquivo texto


(4a.txt) com nomes de at 30 caracteres e idades e
grave um arquivo texto (4b.txt) com os dados
daqueles cujos nomes comecem por A.

Exerccios Propostos

277) Faa um programa que gerencie uma agenda de


telefones. O programa deve ser capaz de armazenar
as informaes para at 100 pessoas. A agenda deve
conter o nome e o telefone de cada pessoa, devendo
Lembre-se sempre
Pgina 30 de
32
A Sorte Ajuda aos Competentes
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br

Linguagem de Programao C
ser possvel realizar as seguintes operaes: incluso
de um novo telefone; alterao do nmero de um
telefone j cadastrado; excluso de um telefone;
impresso dos telefones cadastrados; ordenao por
nome; consulta a partir do nome de uma pessoa;
armazenamento dos dados em um arquivo e
recuperao dos dados do arquivo.
278) (Prova 3 - 97/1) Faa um programa, utilizando
as funes abaixo, que leia de um arquivo chamado
nomenota.txt, um conjunto de at 100 nomes de
alunos, com at 50 caracteres, e suas respectivas
mdias finais (nmeros reais). O programa dever
permitir alterao nos nomes e nas notas dos alunos
atravs de um menu com as opes: a) alterar nome,
b) alterar mdia, c) terminar. Ao final, o programa
dever guardar os dados no mesmo arquivo, no
mesmo formato.
a) faa uma funo chamada le_tudo() que leia as
informaes do arquivo. Esta funo recebe um
vetor de strings e um vetor de reais como
parmetros (nesta ordem). A funo retorna a
quantidade de nomes lidos. Se deu erro de leitura,
a funo retorna 0 (zero).
b) faa uma funo chamada escreve_tudo() que
escreva tudo no arquivo. Esta funo recebe um
vetor de strings, um vetor de reais e o nmero de
elementos a gravar como parmetros (nesta
ordem). A funo no retorna valor algum.
c) faa uma funo chamada busca() que realize
uma busca em um vetor de strings. Esta funo
recebe o vetor de strings, uma string a ser
localizada e o nmero de elementos do vetor. A
funo retorna a posio da string no vetor ou -1
caso no a encontre.
d) faa uma funo chamada altera_nome() que
realize a alterao do nome do aluno. Esta funo
recebe o vetor de strings, uma string contendo o
nome anterior, uma string com o nome corrigido e
o nmero de elementos do vetor. A funo
retorna -1 se no conseguir alterar o nome. Use a
funo busca().
e) faa uma funo chamada altera_media() que
realize a alterao da mdia de um aluno. Esta
funo recebe o vetor de strings, o vetor de

mdias, uma string contendo o nome do aluno, a


nova mdia e o nmero de elementos dos vetores
(o mesmo para ambos). A funo retorna -1 se
no conseguir alterar a mdia. Use a funo
busca().
Obs.:
a) O programa dever avisar ao usurio sempre que
no puder realizar as alteraes.
b) O arquivo possui uma linha com nome, outra linha
com nota, depois mais um nome e uma nota e
assim por diante.
c) No se esquea de fazer a funo main().
279) (Prova 4 - 97/1) Faa um programa que leia um
arquivo texto chamado entrada.txt e imprima o
nmero de caracteres, palavras e linhas encontrados
no texto. Os nicos separadores de palavras so o
caracter de espao em branco e o caracter de fim de
linha. As palavras sero separadas por apenas um
caracter de espao em branco ou caracter de fim de
linha.
Obs.:

a) Os tamanhos da maior palavra e da maior linha


so desconhecidos, logo no adianta declarar um
vetor de tamanho enorme para guardar uma
palavra ou uma linha.
b) No se sabe, a priori, quantas linhas o arquivo
possui, nem muito menos quantas palavras por
linha
Exemplo para voc se basear:
Arquivo entrada.txt:
Este texto apenas para voc se
basear<FIM_DE_LINHA>
O seu programa deve funcionar para outros
exemplos<FIM_DE_LINHA>
Lembre que tu no sabes quantas linhas o
arquivo possui<FIM_DE_LINHA>
<FIM_DO_ARQUIVO>
Sada do programa
nmero de caracteres = 144
nmero de palavras = 26
nmero de linhas = 3

280) (Prova 4 - 97/1) Voc foi contratado para


desenvolver um programa de reserva de passagens
Lembre-se sempre
Pgina 31 de
32
A Sorte Ajuda aos Competentes
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br

Linguagem de Programao C
para uma companhia area que faz vos para no
mximo 10 cidades (destinos) diferentes. Com o
objetivo de racionalizar as suas operaes, a
companhia opera com no mximo 5 tipos de
aeronaves diferentes. O programa a ser
desenvolvido dever fazer o seguinte:
a) faa uma funo, chamada le_aviao(), que receba
como parmetros um vetor de strings e um vetor
de inteiros. Esta funo dever ler do arquivo
texto arq_aviao.txt o modelo da aeronave (um
string com exatamente 4 caracteres) e a
quantidade de assentos da mesma (inteiro),
carregando as informaes lidas do arquivo nos
vetores passados como parmetros. A funo
dever retornar quantos elementos foram lidos (o
mesmo para ambos).
b) faa uma funo, chamada le_destino(), que
receba como parmetros dois vetores de strings.
Esta funo dever ler do arquivo texto
arq_destino.txt uma cidade para a qual a
companhia voa regularmente (um string com
exatamente 3 caracteres) e o modelo da aeronave
usado para esta rota (um string com exatamente 4
caracteres), carregando as informaes lidas do
arquivo nos vetores passados como parmetros.
A funo dever retornar quantos elementos
foram lidos (o mesmo para ambos).
c) faa uma funo, chamada pesq_destino(), que
receba como parmetros um vetor de strings
(tabela de destinos), um inteiro (tamanho da tabela
de destinos), e um string (destino). A funo
dever pesquisar na tabela de destinos o destino
passado com parmetro, retornando a sua posio
na tabela de destinos caso a pesquisa seja bem
sucedida, ou o valor inteiro -1, caso contrrio.
d) faa uma funo, chamada pesq_aviao(), que
receba como parmetros um vetor de strings
(tabela de aeronaves), um inteiro (tamanho da
tabela de aeronaves), e um string (aeronave). A
funo dever pesquisar na tabela de aeronaves a
aeronave passada com parmetro, retornando a
sua posio na tabela de aeronaves caso a
pesquisa seja bem sucedida, ou o inteiro -1, caso
contrrio.

e) faa

a funo main() que dever ler


continuamente do teclado as cidades para as quais
cada um dos usurios quer voar (string de 3
caracteres. Ex: RJO); uma string vazia indica o
trmino do programa. Se a cidade para qual o
usurio quiser voar no for atendida pela
companhia (isto , no est no vetor de destino)
envie uma mensagem adequada. Caso contrrio
tente fazer uma reserva para o usurio no vo
para a cidade solicitada. Neste caso voc dever
verificar se ainda existem lugares vagos no vo,
em funo da capacidade da aeronave empregada
na rota desejada. Caso a reserva possa ser feita
envia a mensagem Reserva Confirmada, caso
contrrio envie a mensagem Vo Lotado.
Dicas:
a) lembre-se que avies diferentes mas de mesmo
modelo podem atender a mais de um destino.
b) crie um vetor de lugares vagos para cada destino.

Lembre-se sempre
32
A Sorte Ajuda aos Competentes

Pgina 32 de

Prof.: Oswaldo Borges Peres


profoswaldo@yahoo.com.br

You might also like