Escolar Documentos
Profissional Documentos
Cultura Documentos
Lista de Exercícios
4) Faça um programa que leia 2 números da 14) Faça um programa que leia 2 números e os
entrada e imprima a sua média aritmética. imprima em ordem crescente.
5) Faça um programa que leia 2 números da 15) Faça um programa que leia 2 números e os
entrada e imprima o resto da divisão inteira de um imprima em ordem decrescente.
pelo outro.
16) Faça um programa que leia 3 números e
6) Faça um programa que leia um número da imprima o menor deles.
entrada e imprima o seu antecedente e o seu
17) Faça um programa que leia 3 números e os
sucessor.
imprima em ordem crescente.
7) Faça um programa que leia um valor de conta
18) Faça um programa que leia 3 números e os
de restaurante, representando o gasto realizado pelo
imprima em ordem decrescente.
cliente e imprima o valor total a ser pago,
considerando que o restaurante cobra 10% para o 19) Faça um programa que leia 3 números e
garçom. imprima o valor intermediário, entre o menor e o
maior número. Suponha que os números serão
8) Faça um programa que leia um valor de hora e
diferentes.
informe quantos minutos se passaram deste o início
do dia. 20) Faça um programa que leia 3 números e
imprima uma das seguintes mensagens:
Tomada de decisão • todos os números são iguais;
• todos os números são diferentes ou
Exercícios de Fixação • apenas dois números são iguais.
9) Faça um programa que leia da entrada um 21) Faça um programa que leia três notas de um
número e imprima o seu valor absoluto (sem o sinal). aluno, calcule sua média aritmética e imprima uma
mensagem dizendo se o aluno foi aprovado,
10) Faça um programa que leia um número e
reprovado ou deverá fazer prova final. O critério de
imprima uma mensagem dizendo se é par ou impar.
aprovação é o seguinte:
• aprovado (média ≥ 7);
Lembre-se sempre Página 1 de 32
“A Sorte Ajuda aos Competentes”
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br
Linguagem de Programação C
• reprovado (média < 3) e números naturais de 0 até limite pulando de incr.
• prova final ( 3 ≤ média < 7). Suponha que limite e incr são maiores que zero.
22) Faça um programa que leia a idade de uma Exemplo:
pessoa e informe sua classe eleitoral: valores lidos: 10 (limite) 3 (incr)
impressão: 0 3 6 9
• não eleitor (abaixo de 16 anos);
• eleitor obrigatório (entre 18 e 65 anos) e 32) Faça um programa que leia um número da
• eleitor facultativo (entre 16 e 18 anos e acima dos entrada e imprima os números ímpares menores do
65 anos). que este número. Exemplo:
23) Faça um programa que leia um horário no valor lido: 7 impressão: 1 3 5
sistema de 24 horas e imprima este horário no 33) Faça um programa que leia um número da
sistema de 12 horas. entrada (num) e imprima os num primeiros números
Exemplo: 22:32 → 10:32 pm pares. Exemplo:
Obs.: 0:00 → 12:00 am valor lido: 6
6:00 → 6:00 am impressão: 2 4 6 8 10 12
12:00 → 12:00 pm 34) Faça um programa que imprima a tabuada de 5
no formato:
Repetição 5x1=5
5 x 2 = 10
Exercícios de Fixação
... ... ...
24) Faça um programa que imprima os números de 5 x 10 = 50
1 a 100.
35) Faça um programa que leia um número da
25) Faça um programa que imprima os números de entrada e imprima a tabuada deste número. Suponha
100 a 1, nesta ordem. que o número lido da entrada é maior que zero.
26) Faça um programa que imprima os números 36) Faça um programa que imprima as tabuadas dos
pares no intervalo de 1 a 300. números de 1 a 10.
27) Faça um programa que imprima os números de 37) Faça um programa que imprima os números de
64 a 256. 1 a 100 e o valor de seu somatório.
28) Faça um programa que imprima os números 38) Faça um programa que leia um número da
ímpares no intervalo de 531 a 750. entrada (num), imprima os números de 1 a num e o
seu somatório.
29) Faça um programa que leia um número da
entrada e imprima os números naturais de 0 até este 39) Faça um programa que imprima a soma dos
número. Suponha que o número lido da entrada será números pares entre 25 e 100.
maior que zero. 40) Faça um programa que leia um número da
30) Faça um programa que leia um número da entrada (num) e imprima a soma dos números pares
entrada e imprima os números naturais de 0 até este entre 1 e num. Suponha que num será maior que
número, pulando de dois em dois. Suponha que o zero.
número lido da entrada será maior que zero.
41) Faça um programa que leia um número da
31) Faça um programa que leia um número da entrada (num) e imprima o somatório dos num
entrada (limite), um incremento (incr) e imprima os primeiros números ímpares.
Lembre-se sempre Página 2 de 32
“A Sorte Ajuda aos Competentes”
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br
Linguagem de Programação C
42) Faça um programa que leia um intervalo da 49) Faça um programa que leia um número da
entrada (início e fim) e imprima os números naturais entrada (num), a seguir leia num números da entrada
neste intervalo. Exemplo: e imprima o maior deles. Suponha que todos os
valores lidos: 5 9 números lidos serão positivos. Exemplo:
impressão: 5 6 7 8 9 valores lidos: 3
17 4 22
43) Faça um programa que leia um intervalo da
impressão: O maior número lido foi 22.
entrada (início e fim) e imprima os múltiplos de 5
entre eles. Exemplo: 50) Faça um programa que leia um número da
valores lidos: 3 17 entrada (num), a seguir leia num números da entrada
impressão: 5 10 15 e imprima o maior deles. Exemplo:
Observação: o que acontece se fim for menor valores lidos: 4
que início? Seu programa continua funcionando? -3 -5 -15 -4
44) Faça um programa que leia um intervalo da impressão: O maior número lido foi -3.
entrada (início e fim) e um número (num). O 51) Faça um programa que leia um número da
programa deve imprimir os múltiplos de num entre entrada (num), a seguir leia num números da entrada
início e fim. Exemplo: e imprima o maior, o menor e soma dos números
valores lidos: 1 15 3 (num) lidos.
impressão: 3 6 9 12 15
52) Faça um programa que leia uma seqüência de
Observação: o que acontece se fim for menor
números terminada por 0 e imprima o maior, o menor
que início? Seu programa continua funcionando? e a média aritmética dos números. O número 0 (zero)
45) Faça um programa que leia um intervalo da não faz parte da seqüência. Exemplo:
entrada (início e fim) e imprima os números pares valores lidos: 20 -3 4 - 7 1 0
entre início e fim e seu somatório. Exemplo: impressão: Maior = 20 Menor = -7
valores lidos: 3 15 Média = 3
impressão: 4 6 8 10 12 14
53) Faça um programa que leia uma seqüência de
Soma = 54 números terminada por 0 e imprima o número que for
46) Faça um programa que leia um número (num) múltiplo de sua posição na seqüência.
da entrada e imprima os múltiplos de 3 e 5 ao mesmo valores lidos: 3 7 8 16 5 0
tempo no intervalo de 1 a num. Exemplo: posição: 1 2 3 4 5
valor lido: 47 impressão: 3 16 5
impressão: 15 30 45
54) Faça um programa que leia uma seqüência de
47) Faça um programa que leia um número da números terminada por 0 e imprima a média
entrada, calcule e imprima o seu fatorial. Lembre-se aritmética dos ímpares e a soma dos pares.
que:
55) Faça um programa que calcule e imprima o
n! = n x (n -1) x (n - 2) x ... x 1 valor de 25. Dica: 2 5 = 2 x 2 x 2 x 2 x 2.
0! = 1 e 1! = 1
56) Faça um programa que leia dois números da
48) Faça um programa que leia um número da
entrada (X e Y) e calcule XY . Suponha que X e Y são
entrada (num), a seguir leia num números da entrada
positivos.
e os imprima. Exemplo:
valores lidos: 5 57) Faça um programa que calcule o produto de 2
3 10 12 2 1 números lidos da entrada (num1 e num2) através do
impressão: 3 10 12 2 1
Lembre-se sempre Página 3 de 32
“A Sorte Ajuda aos Competentes”
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br
Linguagem de Programação C
método de somas sucessivas. Suponha que num1 e K
1
num2 são positivos. Exemplo: 67) Faça um programa que calcule ∏ I , onde N e
I= N
valores lidos: 3 4 K são lidos da entrada.
impressão: 12
dica: 3 x 4 = 3 + 3 + 3 + 3 = 12 68) (Prova 1 - 96/1) Faça um programa que imprima
a tabela de conversão de graus Celsius-Fahrenheit
58) Faça um programa que leia 2 números da
para o intervalo desejado pelo usuário. O programa
entrada e imprima o resto da divisão inteira do
primeiro pelo segundo usando subtrações sucessivas. deve solicitar ao usuário o limite superior, o limite
inferior do intervalo e o decremento.
59) Faça um programa que calcule o resultado de Fórmula de conversão: C = 5(F - 32) /9
num1 Exemplo:
utilizando o algoritmo de subtrações
num2 valores lidos: 68 50 15
sucessivas. num1 e num2 devem ser lidos da impressão: Fahrenheit Celsius
entrada. Informe ao usuário caso a divisão não seja 68 20
exata. Exemplo: 53 11
valores lidos: 6 3
Exercícios Propostos
impressão: 2
dica: 6-3 =3-3=0 69) (Prova 1 - 95/2) A série de RICCI é gerada da
(2 subtrações) seguinte forma: os dois primeiros termos são
60) Faça um programa que imprima os termos de fornecidos pelo usuário, a partir daí, os termos são
uma P.A., sendo lidos da entrada: o primeiro termo gerados como a soma dos dois termos anteriores, ou
(a 0), a razão (r) e o número de elementos (num). seja, ai=ai-1+ai-2 para i≥3.
Escreva um programa que imprima os N (N
61) Faça um programa que imprima os termos de
lido e >= 2) primeiros termos da série de RICCI. O
uma P.G., sendo lidos da entrada: o primeiro termo
programa deve imprimir, também a soma dos termos
(a 0), a razão (q) e o número de elementos (num).
impressos.
62) Faça um programa que leia um número da 70) (Prova 1 - 96/1) A série de FETUCCINE é
entrada e imprima uma mensagem dizendo se o gerada da seguinte forma: os dois primeiros termos
número é solução da equação 2x2 - 7x + 3 = 0. são fornecidos pelo usuário; os termos seguintes são
63) Escreva um algoritmo que leia uma seqüência de gerados como a soma ou subtração dos dois termos
anteriores, ou seja:
50 números naturais e imprima o maior número da
seqüência múltiplo de 2 e de 3 ao mesmo tempo. a i = ai -1 + a i -2 ==> para i ímpar
64) Faça um programa que imprima os 10 primeiros a i = ai -1 - ai -2 ==> para i par
termos da série de Fibonacci. Escreva um programa que imprima os N (N
Observação: a 0 = 1, a 1 = 1 e a n = a n - 1 + a n - 2. lido e maior ou igual a 2) primeiros termos da série de
FETUCCINE. O programa deve imprimir, também
65) Faça um programa que leia um número (num) a soma dos termos impressos.
da entrada e imprima os num primeiros termos da
série de Fibonacci. 71) (Prova 1 - 96/2) Uma telenovela de grande
sucesso tem o seu final previsto para o dia 1 o de
66) Faça um programa que leia um número da novembro. Sabe-se que neste dia será revelado nome
entrada e imprima os termos da série de Fibonacci do personagem responsável por inúmeros
menores que este valor. assassinatos ocorridos no decorrer da trama. No
entanto, no dia 1o de outubro (um mês antes do
Lembre-se sempre Página 4 de 32
“A Sorte Ajuda aos Competentes”
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br
Linguagem de Programação C
término da novela), um funcionário da emissora conta • a quantidade, soma e média aritmética dos valores
para dois amigos o desfecho do último capítulo. Com dentro do intervalo;
isto, no dia 1o de outubro, 3 pessoas sabem do • a quantidade, soma e média aritmética dos valores
desfecho da novela. Supondo que cada nova pessoa fora do intervalo.
a saber do final da novela contará para duas novas Exemplo:
pessoas no dia seguinte (e para mais ninguém), valores lidos: 5 3 18 7 22 50
mais 4 pessoas estarão envolvidas ao final do dia 2 impressão: 3 está dentro do intervalo
de outubro (7 pessoas até este dia). No dia 3 de 18 está fora do intervalo
outubro, já serão 15 pessoas. 7 está dentro do intervalo
Faça um programa para ajudar o dono da 22 está fora do intervalo
emissora a decidir se deve demitir o funcionário 50 está fora do intervalo
fofoqueiro: se ao término do dia 25 de outubro mais 2 valores dentro do intervalo,
de 20000 (vinte mil) pessoas estiverem sabendo do soma = 10 e média = 5
final da novela, o funcionário deverá ser demitido. 3 valores fora do intervalo,
soma = 90 e média = 30
72) Faça um programa que calcule o M.M.C entre
dois números lidos da entrada. 78) Repare a seguinte característica do número
3025:
73) Faça um programa que calcule o M.D.C entre 30 + 25 = 55 e 552 = 3025
dois números lidos da entrada. Faça um programa que leia uma série de valores
74) Faça um programa que calcule e imprima os (números inteiros de 4 algoritmos, um de cada vez) e
diga se possuem a mesma característica (repare que
XN
termos da série , onde X e N devem ser lidos da 3025 / 100 = 30 c/ resto 25). O programa termina
N! quando for lido um valor menor que 1000 ou maior
entrada. que 9999.
75) Faça um programa que calcule o resultado de 79) Uma das maneiras de se conseguir a raiz
0 quadrada de um número é subtrair do número os
∑ (−1) ∗ I , onde N é lido da entrada.
I
ímpares consecutivos a partir de 1, até que o
I= N
resultado da subtração seja menor ou igual a zero. O
76) Escrever um algoritmo para escrever na saída número de vezes que se conseguir fazer a subtração
todos os números (inteiros e positivos) entre 10 e 100 é a raiz quadrada exata (resultado 0) ou aproximada
tais que: do número (resultado negativo).
• Não terminem em zero; Exemplo: Raiz de 16
• Se o dígito da direita for removido, o número 16 - 1 = 15 - 3 = 12 - 5 = 7 - 7 = 0
restante é divisor do número original.
Exemplos:
39: 3 é divisor de 39 A raiz de 16 é 4.
48: 4 é divisor de 48 80) Faça um programa que leia um conjunto de
pedidos de compra e calcule o valor total da compra.
77) Dados N valores (inteiros e positivos) na
Cada pedido é composto pelos seguintes campos:
entrada, escrever um algoritmo que teste quais
valores estão dentro e quais estão fora do intervalo • número do pedido;
{1, 2, ..., 15}, escrevendo na saída o valor e a • data do pedido (dia, mês, ano);
mensagem correspondente. O primeiro valor a ser • preço unitário do item e
lido na entrada é N e N não é um dos valores a • quantidade.
serem testados. Além disso, obter: O programa deverá processar novos pedidos
Lembre-se sempre Página 5 de 32
“A Sorte Ajuda aos Competentes”
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br
Linguagem de Programação C
até que o usuário digite 0 (zero) como número do
pedido. Faixa de salário Imposto
81) Refaça o exercício anterior, sendo que só serão salário < 1000,00 0
processados os pedidos cujo valor seja maior que R$ 1000,00 <= salário < 10000,00 10 %
1000,00. 10000,00 <= salário < 25000,00 15 %
salário >= 25000,00 20 %
82) Refaça o exercício 1 de modo que sejam
processados somente os pedidos realizados nos anos 87) Faça um programa que leia um conjunto de
de 1994 e 1996. Ao final do processamento o valores inteiros positivos e cujo último valor é -1.
programa deverá indicar qual ano teve maior volume Dentre os valores lidos, o programa deve imprimir:
de compras. • o menor valor dentre os maiores que 100 e
menores que 1000;
83) Faça um programa que leia um número
• a média desses valores dentre os maiores que 100
indeterminado de cartões contendo cada um a idade e menores que 1000;
de uma pessoa e o sexo (0 - masculino, 1 -
• a soma desses valores dentre os maiores que 100
feminino). O último cartão (que não entrará nos e menores que 1000;
cálculos) contém o valor da idade igual a zero.
• a soma de todos os valores lidos.
Calcule e imprima a idade média destas pessoas,
quantas pessoas do sexo feminino estão na faixa dos
Observações:
18 aos 25 anos e o número total de pessoas do sexo
• o valor -1 não deve ser considerado para nenhum
masculino.
cálculo.
84) Faça um programa que leia o preço de compra e • se nenhum valor estiver dentro do intervalo, o
o preço de venda de 100 mercadorias. O programa programa deve imprimir apenas uma mensagem
deverá imprimir quantas mercadorias proporcionam: para o usuário explicando o ocorrido.
• lucro < 10 % 88) As disciplinas do ciclo básico do nosso curso
• 10 % <= lucro <= 20 % possuem códigos 108X, onde X pode variar de 0 a 9.
• lucro > 20 % Faça um programa que leia, para cada aluno, a sua
85) Faça um programa que leia as seguintes matrícula (um inteiro de 1 a 2000), o código da
informações sobre uma turma: disciplina, o código da turma (de 1 a 8) e a média
final do aluno em cada disciplina. O programa deve
• número da turma;
imprimir, para a disciplina LTP1:
• número de aulas dadas;
• número de alunos inscritos. • o número de alunos da turma 1;
Deve ser lido também para cada aluno inscrito • a melhor média de alunos das turmas 1, 2, 3, 4 e
o seu número de faltas. 5;
O programa deve imprimir o percentual de • o total das médias maiores que 7 das turmas 6, 7,
faltas para cada aluno e ao final do processamento o e 8.
total de alunos reprovados por falta (25% de faltas). Observações:
• A disciplina LTP1 possui código 1081 e 8 turmas.
86) Faça um programa que leia o salário bruto dos • Considere um total de 2000 alunos e que todos os
500 funcionários de uma empresa, calcule o imposto alunos cursaram todas as disciplinas (10).
retido e o salário liquido para cada um deles. Ao • Os dados de um aluno serão digitados em
final do relatório o programa deverá imprimir os totais seqüência, ou seja, será lida a matrícula do aluno e,
de salário bruto, salário líquido e imposto retido. em seguida, todas as informações sobre ele.
O imposto retido deverá ser calculado de
acordo com a seguinte tabela: Exemplo:
Lembre-se sempre Página 6 de 32
“A Sorte Ajuda aos Competentes”
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br
Linguagem de Programação C
Matrícula do aluno: 33 91) Uma biblioteca deseja fazer uma análise sobre a
Código da disciplina: 1086 consulta a seu acervo. Faça um programa que leia o
Código da turma: 5 código de um livro, o número de exemplares e para
Média Final: 8 cada um deles o número de empréstimos. O
programa deve imprimir o total parcial de
Código da disciplina: 1082 empréstimos para cada livro, e ao final deve imprimir
Código da turma: 1 o código do livro mais emprestado pela biblioteca. A
Média Final: 6 entrada de dados termina com um código de livro
... ... ... ... negativo.
92) Uma empresa classifica seus funcionários em 3
Código da disciplina: 1085 níveis de acordo com um índice de produtividade. São
Código da turma: 4 eles: (1) Excelente, (2) Bom e (3) Regular. Cada
Média Final: 3 nível acrescenta um abono ao salário base do
89) Faça um programa que calcule e imprima o CR funcionário, de acordo com a seguinte tabela:
do período para os alunos do P15. Para cada aluno, o Excelente 80 % do salário base
programa deverá ler: Bom 50 % do salário base
• número da matrícula; Regular 30 % do salário base
• quantidade de disciplinas cursadas;
• notas em cada disciplina. O programa deve ler a matricula do
funcionário, seu salário base, seu nível de abono e
Além do CR de cada aluno, o programa deve imprimir o salário a ser pago. O programa deve
imprimir o melhor CR dos alunos que cursaram 5 ou fornecer também a matrícula do funcionário de maior
mais disciplinas. abono e a média do abono para os funcionários
Observações: classificados como “Regular”.
• o fim da entrada de dados é marcado por uma O programa termina ao ler um valor de
matrícula inválida (matrículas válidas: de 1 a matrícula negativo.
5000); 93) A TELERJ deseja calcular as contas telefônicas
• o CR do aluno é igual a média aritmética de suas de seus assinantes através do computador. A
notas. cobrança de seus serviços é feita da seguinte
90) Faça um programa que controle o saldo bancário maneira:
de um cliente. O programa lê o valor do saldo 1. Tarifa básica
anterior e em seguida lê as operações realizadas na • telefone residencial (código 1): R$ 7,00
conta. As operações podem ser as seguintes: • telefone comercial (código 2): R$ 20,00
• Saque em dinheiro (código 10); 2. Serviço local:
• Depósito (código 33); • R$ 12,00 por pulso excedente (acima de 90
• Pagamento de cheque (código 4). pulsos)
O programa lê o código das operações e realiza 3. Serviço despertador:
as atualizações na conta, imprimindo uma mensagem • R$ 5,00 por vez.
ao usuário caso seu saldo se torne negativo.
O programa deve continuar a leitura até que o Na entrada de dados teremos:
código da operação seja zero. Códigos diferentes dos • código do assinante;
definidos devem ser ignorados. • tipo do telefone (comercial ou residencial);
Ao final do processamento o programa deve • número de pulsos registrados para chamadas
imprimir o saldo atual do cliente. locais e
Lembre-se sempre Página 7 de 32
“A Sorte Ajuda aos Competentes”
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br
Linguagem de Programação C
• número de serviços de despertador prestados. • senha 43 e valor digitado 44
b) ao final do jogo, se for o caso, enviar a
Faça um programa que leia os dados de um conjunto mensagem “Você perdeu. Tente novamente depois”
de assinantes (o código do assinante igual a zero c) não permita que o jogador 1 digite valores fora da
encerra a entrada de dados), calcule e imprima: faixa esperada (entre 0 e 100)
• para cada assinante, o total de sua conta; d) ao final de uma partida, permita ao usuário jogar
• valor da maior conta e o código do assinante que novamente
a pagou; 97) (Prova 1 - 95/2) Faça um programa que calcule
• o valor médio arrecadado por assinante no mês. quantos litros de gasolina são usados em uma viagem,
94) Faça um programa que ajude o DETRAN a sabendo que um carro faz 10 Km/litro. O usuário
saber o total de recursos que serão arrecadados com fornecerá a velocidade do carro e o período de tempo
a aplicação de multas de trânsito. que viaja nesta velocidade, para cada trecho do
percurso. Então, usando as fórmulas distância =
O programa deve ler as seguintes informações para
tempo X velocidade e litros consumidos = distância /
cada motorista:
10, o programa computará, para todos os valores não
• o número da carteira de motorista (de 1 a 4327); negativos de velocidade, os litros de combustível
• o número de multas; consumidos. O programa deverá imprimir a distância
• o valor de cada uma das multas. e o número de litros de combustível gastos naquele
trecho. Deverá imprimir, também, o total de litros
Deve ser impresso o valor da dívida para cada
gastos na viagem. O programa pára quando for
motorista e ao final da leitura o total de recursos
digitado um valor negativo de velocidade.
arrecadados (somatório de todas as multas). O
programa deverá imprimir também o número da 98) Escreva um algoritmo que leia valores de venda
carteira do motorista que obteve o maior número de de discos, CD’s e fitas K7’s de uma loja em um dia e
multas. desconte a comissão do vendedor (3%) e o repasse
O programa termina ao ler a carteira de ao fornecedor (50%) para gerar o ganho da loja na
motorista de valor 0. Valores inválidos de carteira de venda de cada peça. O programa deverá gerar uma
motorista não devem ser processados, embora suas listagem contendo o valor da venda, a comissão, o
multas devam ser lidas. repasse e o ganho da loja para cada venda,
totalizando os valores ao final. Os dados da entrada
95) Faça um programa que implemente o jogo da
terminam com o valor de venda igual a 0 (zero).
senha (para 2 pessoas):
a) o jogador 1 digita uma senha (valor inteiro entre 0 99) (Prova 1 - 96/2) Faça um programa que calcule
e 100) sem o conhecimento do jogador 2 o imposto de renda de um grupo de contribuintes,
b) o jogador 2 tem 5 chances para descobrir a senha considerando que:
c) a cada tentativa do jogador 2, o programa deve a) os dados de cada contribuinte (CIC, número de
avisar se o valor digitado é maior, menor ou igual dependentes e renda bruta anual) serão fornecidos
a senha pelo usuário via teclado;
d) se o jogador 2 acertar a senha, o programa não b) para cada contribuinte será feito um abatimento de
deve pedir mais nenhuma tentativa R$ 600 por dependente;
96) Faça as seguintes alterações no jogo da senha c) a renda líquida é obtida diminuindo-se o abatimento
(uma de cada vez): com os dependentes da renda bruta anual;
d) para saber quanto o contribuinte deve pagar de
a) se o valor digitado em uma tentativa tiver uma
imposto, utiliza-se a tabela abaixo:
diferença igual a 1 para a senha, o programa deve
RENDA LÍQUIDA IMPOSTO
avisar que “TÁ QUENTE!”. Exemplos:
até R$ 1000 0% (isento)
• senha 43 e valor digitado 42
Lembre-se sempre Página 8 de 32
“A Sorte Ajuda aos Competentes”
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br
Linguagem de Programação C
de R$ 1001 a R$ 5000 15% b) 7, 2, 4, 0
acima de R$ 5000 25% c) 3, 3, 5, 0
e) o valor de CIC igual a zero indica final de dados; d) -1, -3, 4, 0
f) o programa deverá imprimir, para cada 101) (Prova 1 - 96/2) Faça um programa que leia um
contribuinte, o número do CIC e o imposto a ser conjunto de notas de prova (0 a 10) de um conjunto
pago; de turmas. O programa deverá ler a quantidade de
g) ao final, o programa deverá imprimir o total do turmas e, para cada turma:
imposto arrecadado pela Receita Federal e o número • o código da turma (inteiro positivo)
de contribuintes isentos; • a quantidade de notas a serem lidas (inteiro
h) leve em consideração o fato do primeiro CIC positivo)
informado poder ser zero. • as notas da turma (inteiro positivo)
100) (Prova 1 - 96/1) Responda as questões abaixo, O programa deverá imprimir:
baseado no algoritmo: • a média aritmética das notas de cada turma
#include <stdio.h> • a maior nota de todas as turmas e o código da
void main (void) turma a que ela pertence
{ 102) (Prova 2 - 94/1) Sabe-se que o produto de dois
int x, w, y, z;
números inteiros pode ser obtido através de
scanf (“%d%d%d%d”, &w, &x, &y, &z);
sucessivas multiplicações (por 2), divisões (por 2) e
if (w>=x)
somas. Enquanto um dos números é dividido por 2, o
{
outro é multiplicado por 2. Quando o resultado da
while (y>0)
{
divisão for ímpar, o outro número correspondente
y = y - 1;
(resultado da multiplicação) é acumulado; caso
if (y>w) contrário, passa-se para a próxima multiplicação e
{ divisão. Quando o resultado da divisão for 0 (zero), o
printf (“local 1”); valor acumulado corresponderá ao resultado final.
while (z<11) Exemplo:
{ Primeiro Segundo Valor
z = z + 3; número número acumulado
if (z>x)
37 ímpar 41 41
z = 15;
printf (“local 2”);
37:2=18 par 41x2=82 41
}
18:2=9 ímpar 82x2=164 41+164=205
} 9:2=4 par 164x2=328 205
printf (“local 3”); 4:2=2 par 328x2=656 205
} 2:2=1 ímpar 656x2=1312 205+1312=1517
} 1:2=0 fim Resultado =
printf (“local 4”); 1517
while (w>x)
{
a) Faça uma função que receba como parâmetros 3
w = w - 5;
números inteiros e retorne a soma do segundo com o
printf (“local 5”);
terceiro, caso o primeiro seja ímpar; senão, retorna o
}
terceiro.
}
b) Usando a função do item a), faça um programa
Escreva exatamente o que será impresso pelo
algoritmo acima para cada entrada abaixo: que leia dois números inteiros e calcule seu produto
a) 2, 4, -15, -3 através do método especificado.
Lembre-se sempre Página 9 de 32
“A Sorte Ajuda aos Competentes”
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br
Linguagem de Programação C
103) (Prova 1 - 97/1) Faça um programa em “C” que Valor da função
calcule e imprima a média e a variância das notas de no ponto
todos os alunos inscritos em LTP1. As notas devem
ser lidas via teclado. O fim da leitura é marcado por Passo
uma nota negativa. A média e a variância são
calculadas da seguinte forma: A área é formada
pela soma dos
media =
∑ notas retângulos sob a
numero _ de _ alunos ... curva
var iancia =
∑ (notas 2
)
− media 2 A B
numero _ de _ alunos
Observar que ∑(notas2) ≠ (∑notas)2 !!!!!!!! 106) (Prova 1 - 97/1) Faça um programa em “C”
que permita a uma empresa atacadista de cimento
104) (Prova 2 - 94/2) Devido às confusões dos controlar os pedidos de compra e o estoque do
programadores do TRE, a Justiça Eleitoral resolveu produto. O programa inicialmente irá ler do teclado a
contratá-lo para realizar a apuração das eleições. quantidade de sacos de cimento disponíveis no
Faça um programa que leia o código dos estoque da empresa (tipo inteiro) e o preço de cada
candidatos e informe o número de votos recebidos saco (tipo real). Em seguida, o programa processará
por cada um, bem como o candidato mais votado. os pedidos de compra dos clientes da empresa.
Você sabe que 100 candidatos disputam uma As informações a serem lidas do teclado, para
vaga. E que a entrada termina assim que for lido um cada pedido, são as seguintes:
candidato de código negativo. • código do cliente (tipo inteiro)
Exemplo: • quantidade de sacos de cimento a serem
Entrada: 0 0 1 2 2 -1 comprados (tipo inteiro)
Saída: 0 3 votos Um pedido só poderá ser aceito se a
1 1 voto quantidade de sacos disponíveis no estoque for maior
2 2 votos ou igual à quantidade de sacos do pedido e se a
O candidato 0 foi eleito. quantidade de sacos do pedido não ultrapassar 10%
105) (Prova 2 - 96/1) Faça um programa em (dez por cento) do total de sacos disponíveis no
linguagem C que calcule o valor da área sob uma estoque.
curva y = 1/x entre dois pontos. Tais pontos deverão Se o pedido for aceito, o programa deverá
ser fornecidos pelo usuário assim como o passo. O imprimir o código do cliente, a quantidade de sacos
valor da integral indica a área sob a curva, entre duas pedidos e o valor do pedido, além de subtrair do
coordenadas X. Por exemplo, seja o gráfico a seguir: estoque a quantidade de sacos vendidos.
Se o pedido for rejeitado, as mensagens
Estoque insuficiente ou Ultrapassado o máximo
permitido deverão ser exibidas no vídeo, conforme o
motivo da rejeição do pedido.
Ao final dos pedidos, que será detectado
quando o código do cliente for zero ou o estoque
mínimo de cem sacos for atingido, deverá ser
impressa a quantidade de sacos em estoque.
117) Faça um programa que leia uma seqüência de 125) Faça um programa que leia um caracter e uma
caracteres terminada por ‘#’ e imprima o número de linha de texto e imprima a posição do caracter na
caracteres lidos. linha a cada vez que ele for digitado. O caracter pode
aparecer mais de uma vez na linha.
118) Faça um programa que leia uma seqüência de
caracteres terminada por um <Enter> (linha de 126) Faça um programa que leia uma seqüência de
texto) e imprima a quantidade de caracteres lidos. linhas de texto (um texto) terminada com uma linha
vazia e imprima a quantidade total de caracteres
119) Faça um programa que leia uma seqüência de lidos.
caracteres terminada por um <Enter> (linha de
texto) e os imprima novamente na tela com exceção 127) Faça um programa que leia uma seqüência de
dos caracteres de espaço em branco que não devem linhas de texto terminada com uma linha vazia e
ser impressos. imprima a quantidade de caracteres da maior linha do
texto.
120) Faça um programa que leia uma seqüência de
caracteres terminada por um <Enter> (linha de 128) Faça um programa que leia uma seqüência de
texto) e imprima a quantidade de vogais, a quantidade linhas de texto terminada com uma linha vazia e
de consoantes e a quantidade de caracteres não imprima a quantidade média de caracteres
letras encontrados. Considere apenas as letras encontrados em cada linha.
minúsculas.
129) Faça um programa que procure por um
121) Faça um programa que leia uma seqüência de determinado caracter em um texto (conjunto de
caracteres terminada por um <Enter> (linha de linhas), lido da entrada, indicando os números das
texto) e imprima a quantidade total de caracteres linhas em que o caracter aparecer e também a
lidos e a porcentagem de caracteres do tipo letra respectiva posição em cada linha (em número de
encontrados. caracteres). O caracter pode aparecer mais de uma
vez em uma linha.
122) Faça um programa que leia uma linha de texto
da entrada e imprima o número de letras maiúsculas 130) Faça um programa que leia uma seqüência de
e o número de letras minúsculas encontradas. linhas de texto e imprima os caracteres lidos
novamente na tela com exceção dos caracteres de
123) Durante a segunda guerra mundial, havia espaço em branco, que não devem ser impressos.
necessidade de codificação das mensagens
transmitidas, para isso eram necessários códigos 131) Faça um programa que leia um texto (conjunto
secretos, um desses códigos era o POLAR/ZENIT, de linhas) e imprima a quantidade de vogais, a
que consistia em trocar as ocorrências da letra P pela quantidade de consoantes e a quantidade de
letra Z e vice-versa, as letras O pelas letras E, e caracteres não letras encontrados. Considere apenas
vice-versa, e assim por diante. Faça um programa as letras minúsculas.
que leia uma linha de texto da entrada e imprima os
150) Faça uma função que receba um caracter como ... ... ...
parâmetro por referência. Se o caracter for um x = f (10);
digito, a função deve convertê-lo para o seu g (x, &y);
respectivo valor numérico. Lembre-se ‘0’ caracter é g (z, &v[4]);
diferente de 0 numérico. A função deve retorna 1 se z = h (v[5], v);
o caracter for um dígito e 0 em caso contrário. ... ... ...
}
151) (Prova 3 - 96/2) Faça os protótipos (apenas!!)
das funções f(), g() e h() utilizadas pela função 153) (Prova 3 - 97/1) Faça as funções necessárias
main() abaixo: para que os programas abaixo funcionem conforme o
esperado:
void main (void)
{ a)
int v[6]={0,10,20,40,50,60}, y; #include <stdio.h>
float x, z; void main (void)
x = f (10); {
g (x, &y); int a, b, c, erro;
g (z, &v[4]); scanf (“%d%d”, &a, &b);
z = h (v[5], v); c = divide (a, b, &erro);
... ... ... if (erro)
} printf (“Erro: divisão por
zero\n”);
152) (Prova 3 - 97/1) Faça os protótipos (apenas!!) else
das funções abaixo, baseado nas informações dadas: printf (“%d dividido por %d =
%d\n”, a, b, c);
a)
}
void main (void)
{
b)
#include <stdio.h>
int a, b[10];
void main (void)
char d, e[10];
{
float g, h[10];
int v[5]={1, 2, 3, 4, 5}, i, j;
printf (“\nDigite as posições do vetor
... ... ....
que devem ser trocadas”);
faz_tudo (a, &d, &g);
scanf (“%d%d”, &i, &j);
g = faz_nada (a, b[1], b);
troca (v, i, j);
não_sei (3.14, g, h[2], &h[3]);
for (i=0; i<5; i++)
e[a] = ta_certo ();
printf (“%d\n”, v[i]);
... ... ....
}
}
Exercícios Propostos
154) Elabore uma função que retorne o reverso de
um número inteiro, por exemplo 932 → 239.
Lembre-se sempre Página 16 de
32
“A Sorte Ajuda aos Competentes”
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br
Linguagem de Programação C
155) decimal correspondente. É obrigatório o uso da
a) Faça uma função chamada fatorial que deve função anterior. Você pode fazer esta questão
receber um valor inteiro como parâmetro e mesmo que não tenha feito a anterior.
retornar o fatorial deste número. c) Seja a função main abaixo:
b) Faça um programa que calcule o valor da
combinação de n elementos r a r. A fórmula da void main (void)
n! {
combinação é a seguinte: C nr = . Leia
r ! ∗ (n − r ) !
int a, b, c;
a = le_converte();
os valores de n e r da entrada e use a função do b = le_converte();
item anterior para calcular o resultado. c = a + b;
156) Construa uma função que, dado um número de printf ("\n%d", c);
imprime_em_binario (c);
conta corrente com três dígitos, retorne o seu dígito
}
verificador, o qual é calculado da seguinte maneira:
Faça a função imprime_em_binario.
Exemplo: número da conta: 25678
• Somar o número da conta com o seu inverso: 256 159) (Prova 2 - 96/1) Crie as funções necessárias ao
+ 652 = 908; funcionamento correto do programa abaixo. Não é
• multiplicar cada dígito pela sua ordem posicional e permitido:
somar este resultado: 9 0 8 • alterar a função main();
9 0 8 • usar printf();
x1 x2 x3 • usar scanf().
9 + 0 + 24 = 33
• o último dígito deste resultado é o dígito
verificador da conta (33 → 3).
157) Faça uma função que calcule o peso ideal de
uma pessoa. A função deve receber o valor da altura
da pessoa e um valor numérico indicando o sexo (0 -
masculino e 1 - feminino). A função deve calcular o
peso ideal de acordo com as seguintes fórmulas:
homens ⇒ (72.7 * altura) - 58 e mulheres ⇒ (62.1 *
altura) - 44.7. Faça a função main para completar o
seu programa. A função 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) Faça uma função (chamada conv) que leia um
dígito (caractere) e retorne o valor numérico
correspondente.
b) Faça uma função (chamada le_converte) que
leia 5 dígitos (caracteres), representando uma
seqüência de bits, e retorne o valor numérico
Lembre-se sempre Página 17 de
32
“A Sorte Ajuda aos Competentes”
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br
Linguagem de Programação C
void main (void) iguais;
{ c) se ∆ < 0, x1 e x2 não deverão ser alteradas pela
int x, y, z; função.
int n;
scanf (“%d”, &n);
O valor de retorno da função será o valor de ∆;
x = funcao_q_le (n);
indicando a quem chamou a função a natureza das
y = funcao_q_le (n);
raízes (reais e distintas, reais e iguais ou imaginárias).
z = x + y;
funcao_q_escreve (z, n+1);
}
Obs: use a função pow(x,y) para calcular xy, onde x
a) a função funcao_q_le(i) deverá ler i e y são do tipo float. Lembre-se de que a raiz
quadrada de um número real x é igual a x0.5.
caracteres e retornar o seu valor decimal.
b) a função funcao_q_escreve (a, i) deverá
escrever o valor a de até i dígitos. Vetores
160) O número irracional π pode ser calculado Exercícios de Fixação
∞
( −1) i
através da expressão π = 4 ∑ . Construa uma 162) Faça um programa que leia e imprima o
i =0 2i + 1 resultado da soma entre dois vetores inteiros de 50
função em C que receba como parâmetro posições.
(passagem por valor) o número de termos a serem
usados no cálculo de π, e retorne o valor calculado 163) Elabore um algoritmo que, dados dois vetores
para π. inteiros de 20 posições, efetue as respectivas
operações indicadas por um outro vetor de 20
161) As raízes de uma equação do segundo grau da posições de caracteres também fornecido pelo
forma ax2 + bx + c = 0 podem ser calculadas usuário, contendo as quatro operações aritméticas em
−b ± ∆ qualquer combinação, armazenando os resultados em
através da expressão x= , onde um quarto vetor.
2a
∆ = b2 − 4ac . Faça um programa completo em C 164) Construa um algoritmo que preencha um vetor
que leia um número indeterminado de coeficientes a, de 100 elementos inteiros colocando 1 na posição
b e c do teclado (o programa deverá terminar quando correspondente a um quadrado perfeito e 0 nas
o valor do coeficiente a for zero) e, para cada grupo demais.
de coeficientes, chame uma função que calcule as
165) Faça um programa que leia uma conjunto de
raízes da equação e as exiba no monitor, caso elas
linhas de texto, terminadas com uma linha vazia e
sejam reais, ou a mensagem Raízes Imaginárias ,
imprima a quantidade de cada uma das letras
caso elas sejam imaginárias. minúsculas encontradas no texto.
A função deverá receber como parâmetros os
coeficientes a, b e c (passagem por valor) e as raízes 166) Faça um programa que leia uma linha de texto,
x1 e x2 (passagem por referência). Os valores terminada como um <Enter> e imprima o inverso da
devolvidos pela função através dos parâmetros serão linha que foi lida.
os seguintes: Exemplo: Isto e apenas um exemplo
olpmexe mu sanepa e otsI
a) se ∆ > 0, x1 e x2 conterão duas raízes reais e
167) Faça uma função chamada inverte, que receba
distintas;
um vetor de números inteiros como parâmetro e seu
b) se ∆ = 0 , x1 e x2 conterão duas raízes reais e
tamanho. A função deve inverter a ordem dos
Lembre-se sempre Página 18 de
32
“A Sorte Ajuda aos Competentes”
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br
Linguagem de Programação C
elementos do vetor, de modo que o primeiro elemento posição 6.
passe a ser o último, o segundo passe a ser o se a chave for 413, o resultado será: Chave não
penúltimo e assim por diante. Faça um programa encontrada.
para testar a função inverte .
172) Faça um programa que leia a matricula e a nota
168) Faça um programa que leia um conjunto de final de 10 alunos de uma turma de LTP1 e imprima
linhas de texto e imprima a linha que teve o maior os dados dos alunos (matricula e nota) ordenados por
número de vogais. Considere que cada linha terá um nota (ordem decrescente).
máximo de 80 caracteres.
173) Faca uma função que receba um vetor de
169) Faça um programa que leia uma seqüência de caracteres chamado linha e um caracter chamado
10 números e informe o total de ocorrências do ch como parâmetros. Retire todas as ocorrências do
último número lido. caracter ch do vetor linha. O fim do vetor linha
Exemplo: supondo a seguinte seqüência de números será indicado pelo caracter '\n'. Faca um programa
38 4 23 5 6 7 4 12 4 para testar a sua função.
o resultado será: 174) Faça uma função que receba um vetor de
O número 4 apareceu 3 vezes caracteres, seu tamanho e um caracter e retire todas
170) Faça um programa que leia um texto (seqüência as ocorrências desse caracter no vetor. A função
de linhas) terminado por uma linha vazia (uma linha deve retornar o total de caracteres restantes no
com apenas um <Enter>) e informe o total de vetor. Faça uma main() para testar sua função, do
ocorrências de cada dígito (de ‘0’ até ‘9’). Os dígitos jeito que você achar necessário.
que não ocorreram no texto não devem ser listados.
175) Faça uma função que receba um vetor de
Exemplo: supondo a seguinte seqüência de inteiros (ordenados de forma crescente) e seu
caracteres: tamanho e retorne o maior valor menor que a média
Este eh 1 exemplo.
de seus elementos. Faça uma main() para testar sua
Esta eh apenas a linha 2 do exemplo.
função, do jeito que você achar necessário.
A linha 3 vem depois da linha 2.
O programa deve funcionar para muito 176) Faça um programa que leia um texto (seqüência
mais do que 239 casos.
de linhas) da entrada e imprima as 5 letras
minúsculas de maior ocorrência no texto. Dica: Faca
A saída será:
um vetor de contadores, um para cada letra e ordene
O dígito 1 apareceu 1 vez(es).
O dígito 2 apareceu 3 vez(es).
este vetor em ordem decrescente.
O dígito 3 apareceu 2 vez(es).
177) Faça uma função que receba um vetor de
O dígito 9 apareceu 1 vez(es).
caracteres, seu tamanho e dois caracteres e substitua
171) Faça um programa que leia um vetor ordenado todas as ocorrências do 1o caracter pelo 2o. Faça
de 10 números inteiros e uma chave, informe a uma main() para testar sua função, do jeito que você
posição da chave no vetor ou uma mensagem de erro achar
se o número não for encontrado.
178) Faça uma função que receba um vetor de
Obs.: faça uma função que realize a busca. Esta caracteres, seu tamanho e um inteiro. Se o caracter
função não deverá imprimir nada. da posição indicada pelo inteiro for letra, retornar o
Exemplo: supondo a seguinte seqüência: total de letras do vetor; senão, retornar o total de
1 2 3 8 97 412 446 957 8912 8974 caracteres não-letra. Faça uma main() para testar
se a chave for 446, o resultado será: Chave na sua função, do jeito que você achar necessário.
207) Faça um programa que leia uma matriz de 215) Construa uma função booleana em C que
números inteiros de dimensões 4x4 e imprima a soma receba como parâmetros duas matrizes quadradas e
dos valores de cada linha e a soma de todos os a variável n, dimensão das matrizes. A função
elementos da matriz. deverá imprimir a soma das duas matrizes linha a
linha.
208) Uma estação meteorológica registra a
temperatura ocorrida em uma cidade a cada hora. 216) (Prova 3 - 96/1) Faça um programa que leia
Faça um programa que leia as temperaturas de uma uma matriz de inteiros A quadrada de ordem 100 e
semana no seguinte formato: dia, hora, temperatura. calcule a sua transposta AT . Exemplo para matriz de
A leitura termina com um dia inválido. O programa ordem 4 (apenas um outro exemplo!!!):
deve informar para cada hora consultada, a maior
temperatura ocorrida na semana. As consultas 1 2 3 4 1 5 9 13
terminam com um valor de hora inválido. 5 6 7 8 2 6 10 14
A= AT =
9 10 11 12 3 7 11 15
209) Faça um programa que leia uma matriz de 4 x 5
13 14 15 16 4 8 12 16
elementos, calcule a soma de cada linha e a soma de
todos os elementos. Exercícios Propostos
210) Faça um programa que analise um cartão de 217) A tabela dada a seguir contém vários itens que
loteria esportiva e diga qual dos 13 jogos possui um estão estocados em vários armazéns de uma
triplo, ou se não existir, um duplo. O programa deve companhia. É fornecido, também, o custo de cada um
ler da entrada a configuração do cartão e em seguida dos produtos arma zenados.
informar o jogo mais marcado. Dica: fixar a linha e PRODUTO PRODUTO2 PRODUTO3
variar a coluna. 1
Armazém 1 1200 3700 3737
211) Refaça o exercício anterior de modo a Armazém 2 1400 4210 4224
descobrir qual das colunas do cartão possui mais Armazém 3 2000 2240 2444
marcações, se a coluna um, a coluna dois ou a do Custo 260 420 330
meio. Dica: fixar a coluna e variar a linha.
Fazer um programa que:
218) O tempo que um determinado avião dispensa void le_matriz (int [][C]);
para percorrer o trecho entre duas localidades void media_alunos (int [][C]);
distintas está disponível através da seguinte tabela: void ordena_matriz (int [][C]);
void troca_linha (int [][C], int, int);
A B C D E F G void troca (int *, int *);
A 00 02 11 06 15 11 01 void imprime (int [][C]);
B 02 00 07 12 04 02 15
C 11 07 00 11 08 03 13
void main (void)
D 06 12 11 00 10 02 01
E 15 04 08 10 00 05 13 {
F 11 02 03 02 05 00 14 int i, j;
G 01 15 13 01 13 14 00 int m[L][C];
219) Faça um programa que leia o número de 220) A Escola Pagou Passou possui 10 turmas, com
matrícula de 100 alunos e suas notas (5 notas para exatamente 60 alunos em cada uma, e a sua
cada aluno). O programa deve armazenar todos os diretoria resolveu fazer o acompanhamento do
dados em uma matriz: a matrícula na primeira coluna rendimento dos alunos matriculados em cada uma
e as notas nas colunas seguintes. O programa deverá das turmas.
223) Faça uma função chamada strcat que recebe 232) Faça uma função que receba uma string como
duas strings como parâmetros e copie todos os parâmetro e um caracter. A função deve retornar a
Lembre-se sempre Página 26 de
32
“A Sorte Ajuda aos Competentes”
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br
Linguagem de Programação C
última posição onde o caracter foi encontrado na Frase gerada:
string ou -1 caso o caracter não apareça na string. Esta Frase E Apenas Um Exemplo
233) Faça uma função que receba uma string como 240) Faça uma função que receba uma string como
parâmetro e um caracter. A função deve retirar parâmetro e imprima esta string em modo justificado,
todas as ocorrências deste caracter da string. ou seja, preenchendo os intervalos entre as palavras
com espaços em branco de maneira proporcional.
234) Faça uma função que receba uma string como Considere este procedimento apenas para strings
parâmetro e dois caracteres. A função deve trocar com menos de 80 caracteres. As strings com mais
toda a ocorrência do primeiro caracter na string pelo de 80 caracteres devem ser impressas sem
segundo caracter. alteração.
235) Faça uma função que receba uma string como 241) Faça uma função que receba uma string como
parâmetro e um caracter. A função deve retornar o parâmetro e a imprima. Se a string tiver mais de 40
número de vezes que o caracter aparece na string. caracteres, ela deve ser particionada, quantas vezes
for necessário, de modo a imprimir no máximo 40
236) Faça uma função que receba uma string como
caracteres por linha, sendo que nenhuma palavra
parâmetro, um caracter e um valor numérico. A
deve ser impressa fragmentada.
função deve preencher a string com tantos
caracteres quanto for o valor numérico passado com 242) Modifique a função do item anterior de modo a
parâmetro. imprimir a string em modo justificado, além de
realizar o seu particionamento.
237) Faça uma função chamada strncpy que recebe
duas strings (s1 e s2) e um valor numérico como 243) Faça uma função que receba duas strings como
parâmetros. A função deve copiar tantos caracteres parâmetro (s1 e s2) e retorne a posição da string s2
quanto o valor numérico, da string s2 para a string dentro da string s1, caso a string s1 contenha a
s1. string s2, ou -1 em caso contrário.
238) Faça um função chamada stricmp que compara Exemplo:
s1 ‘c’ ‘a’ ‘m’ ‘a’ ‘l’ ‘e’ ‘ã’ ‘o’ ‘\0’
duas strings (s1 e s2) passadas como parâmetro, não
s2 ‘l’ ‘e’ ‘ã’ ‘o’ ‘\0’
diferenciando maiúsculas de minúsculas. A função
A função deve retornar o valor 4, pois é o valor
deve retornar: 0 se as strings forem iguais; um valor
da posição onde começa a string “leão” na
menor que 0 se s1 for menor que s2 e um valor maior
string “camaleão”.
que 0 se s1 for maior que s2.
244) Faça uma função que receba uma string como
Exercícios Propostos parâmetro e verifique se é um palíndrome, isto é, da
239) (Prova 3 - 94/1) Faça uma função que receba esquerda para direita ou da direita para a esquerda
como parâmetro uma string de, no máximo, 80 têm-se a mesma seqüência de caracteres. Exemplos:
caracteres e converta todas as letras para ama, ovo, asa.
minúsculas, exceto a primeira letra de cada palavra, 245) (Prova 3 - 94/1) Considere a seguinte lista de
que deve ser maiúscula. Considere que a string só países e respectivas capitais:
possui letras e espaços e entre as palavras existe um Canadá Ottawa
único espaço.
Inglaterra Londres
Exemplo: França Paris
Frase recebida: Portugal Lisboa
EsTa fRase e apENAS uM EXEmPLO Japão Tóquio
Lembre-se sempre Página 27 de
32
“A Sorte Ajuda aos Competentes”
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br
Linguagem de Programação C
Escreva um programa interativo que aceite um nome caracteres são maiúsculos ou minúsculos. A função
de um país como entrada e imprima o nome de sua retorna 0 (zero) se as porções de strings forem
capital. O programa deve executar repetidamente até iguais, senão, ela retorna -1. Dica: use uma função
que seja digitada a palavra FIM. que converta uma letra para maiúsculo. Considere
246) (Prova 3 - 96/1) Faça uma função que receba que os valores de pos e qtd são sempre válidos.
duas strings e um inteiro como parâmetros. Esta Exemplo:
função inclui a segunda string a primeira a partir da string 1: Banana
string 2: ANNA MARIA
posição indicada pelo inteiro. Exemplo (apenas um pos = 2
exemplo!!!): qtd = 2
1a string: “isto é exemplo” retorna 0
resultado após execução da função:
2a string: “apenas um ” string 1: Banana
string 2: ANNA MARIA
1a string: “isto é apenas um exemplo”
pos = 2
inteiro: 7 qtd = 3
2a string: “apenas um ” retorna -1
247) (Prova 4 - 96/1) Faça uma função chamada 250) (Prova 4 - 96/2) Faça um programa que leia um
strmix que receba 3 strings (s1, s2 e s3) e misture s1 texto, em javanês, terminando com uma linha vazia e
e s2 do seguinte modo: imprima o número de ocorrências de cada palavra no
1o caracter de s3: 1o caracter de s1 texto. O programa deverá imprimir uma lista das
2o caracter de s3: 1o caracter de s2 palavras que apareceram no texto e o número de
3o caracter de s3: 2o caracter de s1 e assim ocorrências de cada uma delas.
sucessivamente Sabe-se que em javanês, existem 2548 palavras, a
Observações: a string resultante deverá ser maior palavra possui 78 letras e entre cada palavra
armazenada em s3. As strings s1 e s2 podem ter existe apenas um único espaço em branco.
tamanhos diferentes. a) faça uma função que leia uma palavra,
Exemplo: b) faça uma função para procurar uma palavra em
s1: “abcde” uma lista de palavras,
s2: “012” c) faça o programa utilizando as funções acima.
string resultante (s3): “a0b1c2de”
251) (Prova 4 - 96/2) Faça uma função chamada
248) (Prova 3 - 96/2) Faça uma função que receba xxx() que receba duas strings como parâmetros e
duas strings e retire da primeira todo caracter que retorne a posição da 2a string de trás para frente
fizer parte da segunda string. Exemplo: dentro da 1a string ou um número negativo caso não
1a string: “EFBACDEIEBBLBBD” encontre.
2a string: “EBD” Faça um programa para testar se esta função
Resultado que você fez está funcionando.
1a string: “FACIL” Obs.: note que as strings podem ter qualquer
2a string: “EBD” tamanho!!!
249) (Prova 3 - 97/1) Faça uma função chamada Exemplos:
compara() que receba duas strings e dois inteiros Exemplo 1 Exemplo 2
pos e qtd, onde pos é a posição nas strings a partir 1a string: Esta é uma linha Esta é uma linha
2a string: amu uma
da qual vamos comparar qtd caracteres. A
resultado: 7 -1542
comparação NÃO deve levar em conta se os
Lembre-se sempre Página 28 de
32
“A Sorte Ajuda aos Competentes”
Prof.: Oswaldo Borges Peres
profoswaldo@yahoo.com.br
Linguagem de Programação C
252) (Prova 4 - 97/1) Faça uma função chamada converter todas as letras minúsculas encontradas
cria_string() que recebe como parâmetros uma para letras maiúsculas. Os dados convertidos devem
string s 1 (de tamanho suficiente), um formato fmt ser escritos em outro arquivo. O nome do arquivo de
(também uma string) e um número inteiro positivo saída deve ser o mesmo do que foi perguntado com
num (nesta ordem). Esta função irá preencher a extensão out.
string s 1 de acordo com o formato passado como
254) Faça um programa que leia do arquivo matriz.txt
parâmetro e o valor do inteiro num. O formato irá os valores de uma matriz 10 x 10 de números inteiros
conter uma seqüência de caracteres que devem ser e imprima na tela a matriz e o resultado da soma de
integralmente copiados para a string s 1, com todos os seus valores. Dica: use a função fscanf. O
exceção da seqüência %d. No seu lugar deve ser resultado para a matriz que está no disquete é 2085.
copiado o valor do inteiro num convertido para
caracteres. 255) Faça um programa que leia do arquivo
Dica: lembre-se que o maior numero inteiro que pode matriz.txt os valores de uma matriz 10 x 10 de
ser representado no TC é 32767 (5 dígitos). números inteiros e gere um arquivo chamado
Exemplos: transp.txt, contendo a matriz transposta da que foi
Exemplo 1 lida.
Parâmetros passados: 256) Faça um programa que leia da entrada uma
s 1: (irrelevante, mas de tamanho suficiente) seqüência de até 100 nomes. O usuário pode
fmt: “O valor %d é a respos ta” terminar a leitura com um nome vazio, ou seja,
num: 15 digitando <Enter> como primeiro caracter de um
Resultado após a execução da função novo nome. Cada nome lido deverá ter no máximo 40
s 1: “O valor 15 é a resposta” caracteres. Armazene esta seqüência de nomes em
fmt: (irrelevante) um arquivo chamado nomes.txt.
num: (irrelevante) 257) Faça um programa que leia o arquivo nomes.txt,
gerado por você, ordene alfabeticamente a seqüência
Exemplo 2 de nomes e os imprima na tela.
Parâmetros passados:
s 1: (irrelevante, mas de tamanho suficiente) 258) Faça um programa que leia da entrada o nome
fmt: “Converta o %d para caracteres” (40 caracteres) e a nota final (float) dos alunos de
num: 17430 uma turma de LTP1. Cada turma tem no máximo 50
alunos. O programa deve armazenar os dados em um
Resultado após a execução da função arquivo binário chamado "ltp1".
s 1: “Converta o 17430 para caracteres”
fmt: (irrelevante) 259) Faça um programa que leia o arquivo "ltp1",
num: (irrelevante) criado por você, e imprima a média dos alunos da
turma e quantos alunos tiveram notas acima da
Arquivos média.
260) Faça um programa que leia um arquivo
Exercícios de Fixação
contendo linhas de texto e imprima o número de
253) Faça um programa que leia um arquivo. O caracteres, o número de linhas e o número de
arquivo contém linhas de texto de até 80 caracteres. palavras contidas no texto. Considere que cada linha
O nome do arquivo deve ser perguntado (sem do texto não contem mais que 80 caracteres
extensão) e a extensão é txt. O programa deve (adicione mais um para o '\n' e outro para o '\0').