Exercícios: Comandos de Repetição

Texto

(1)

Universidade Federal de Uberl ˆandia - UFU Faculdade de Computac¸ ˜ao - FACOM

Lista de exerc´ıcios de programac¸ ˜ao em linguagem C

Exerc´ıcios: Comandos de Repetic¸ ˜ao

1. Elabore um programa que fac¸a leitura de v ´arios n ´umeros inteiros, at ´e que se digite um n ´umero negativo. O programa tem que retornar o maior e o menor n ´umero lido.

2. Escreva um programa que leia o n ´umero de habitantes de uma determinada cidade, o valor do kwh, e para cada habitante entre com os seguintes dados: consumo do m ˆes e o c ´odigo do consumidor (1-Residencial, 2-Comercial, 3-Industrial). No final imprima o maior, o menor e a m ´edia do consumo dos habitantes; e por fim o total do consumo de cada categoria de consumidor.

3. Leia um n ´umero positivo do usu ´ario, ent ˜ao, calcule e imprima a sequ ˆencia Fibonacci at ´e o primeiro n ´umero superior ao n ´umero lido.

Exemplo: se o usu ´ario informou o n ´umero 30, a sequ ˆencia a ser impressa ser ´a 0 1 1 2 3 5 8 13 21 34.

4. Fac¸a um programa que determine o mostre os cinco primeiros m ´ultiplos de 3, conside-rando n ´umeros maiores que 0.

5. Fac¸a um programa que leia um n ´umero inteiro N e depois imprima os N primeiros n ´umeros naturais ´ımpares.

6. Fac¸a um programa que calcule e mostre a soma dos 50 primeiros n ´umeros pares. 7. Fac¸a um programa que receba um n ´umero inteiro maior do que 1, e verifique se o n ´umero

fornecido ´e primo ou n ˜ao.

8. Fac¸a um programa que receba v ´arios n ´umeros, calcule e mostre: (a) A soma dos n ´umeros digitados

(b) A quantidade de n ´umeros digitados (c) A m ´edia dos n ´umeros digitados (d) O maior n ´umero digitado (e) O menor n ´umero digitado

(f) A m ´edia dos n ´umeros pares

Finalize a entrada de dados caso o usu ´ario informe o valor 0.

9. Escreva um programa em C que escreva na tela de 1 em 1, de 1 ate 100, 3 vezes. A primeira vez deve usar a estrutura de repetic¸ ˜ao for, a segunda while, e a terceira do while. 10. Escreva um programa que leia um n ´umero inteiro positivo n e em seguida imprima n

li-nhas do chamado Triangulo de Floyd:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

(2)

11. Usando o comando for, fac¸a um algoritmo que conte o n ´umero de 1’s que aparecem em um string.

ex: 0011001 => 3

12. Usando o comando while, escreva um programa que substitui as ocorr ˆencias de um caractere 0 em uma string por outro caractere 1.

13. Faca um algoritmo que leia um n ´umeros positivo e imprima seus divisores.

14. Fac¸a um algoritmo utilizando o comando while (enquanto) que mostra uma contagem re-gressiva na tela, iniciando em 10 e terminando em 0. Mostrar uma mensagem ”FIM!”ap ´os a contagem.

15. Fac¸a um programa que pec¸a ao usu ´ario para digitar 10 valores e some-os.

16. Fac¸a um programa que some todos os n ´umeros naturais abaixo de 1000 que s ˜ao m ´ultiplos de 3 ou 5.

17. Fac¸a um programa que some os termos de valor par da sequ ˆencia de Fibonacci, cujos valores n ˜ao ultrapassem quatro milh ˜oes.

18. Fac¸a um programa que calcule o maior n ´umero pal´ındromo feito a partir do produto de dois n ´umeros de 3 d´ıgitos. Ex: O maior pal´ındromo feito a partir do produto de dois n ´umeros de dois d´ıgitos ´e 9009 = 91*99.

19. Fac¸a um programa que calcule o menor n ´umero divis´ıvel por cada um dos n ´umeros de 1 a 20? Ex: 2520 ´e o menor n ´umero que pode ser dividido por cada um dos n ´umeros de 1 a 10, sem sobrar resto.

20. Fac¸a um programa que calcule a diferenc¸a entre a soma dos quadrados dos primeiros 100 n ´umeros naturais e o quadrado da soma. Ex: A soma dos quadrados dos dez pri-meiros n ´umeros naturais ´e,

12+ 22+ ... + 102 = 385 O quadrado da soma dos dez primeiros n ´umeros naturais ´e,

(1 + 2 + ... + 10)2 = 552 = 3025

A diferenc¸a entre a soma dos quadrados dos dez primeiros n ´umeros naturais e o qua-drado da soma ´e 3025-385 = 2640.

21. Fac¸a um programa que encontre o conjunto de 5 d´ıgitos consecutivos na sequ ˆencia abaixo que gere o maior produto:

73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 85861560789112949495459501737958331952853208805511 12540698747158523863050715693290963295227443043557 66896648950445244523161731856403098711121722383113 62229893423380308135336276614282806444486645238749 30358907296290491560440772390713810515859307960866 70172427121883998797908792274921901699720888093776 65727333001053367881220235421809751254540594752243 52584907711670556013604839586446706324415722155397

(3)

53697817977846174064955149290862569321978468622482 83972241375657056057490261407972968652414535100474 82166370484403199890008895243450658541227588666881 16427171479924442928230863465674813919123162824586 17866458359124566529476545682848912883142607690042 24219022671055626321111109370544217506941658960408 07198403850962455444362981230987879927244284909188 84580156166097919133875499200524063689912560717606 05886116467109405077541002256983155200055935729725 71636269561882670428252483600823257530420752963450

22. Fac¸a um programa que calcule o terno pitag ´orico a, b, c, para o qual a + b + c = 1000. Um terno pitag ´orico ´e um conjunto de tr ˆes n ´umeros naturais, a b c, para a qual,

a2+ b2= c2 Por exemplo,

32+ 42 = 9 + 16 = 25 = 52

23. Fac¸a um programa que calcule a soma de todos os n ´umeros primos abaixo de dois milh ˜oes.

24. Escreva um programa que leia um n ´umero inteiro e calcule a soma de todos os divisores desse n ´umero, com excec¸ ˜ao dele pr ´oprio. Ex: a soma dos divisores do n ´umero 66 ´e 1 + 2 + 3 + 6 + 11 + 22 + 33 = 78

25. Se os n ´umeros de 1 a 5 s ˜ao escritos em palavras: um, dois, tr ˆes, quatro, cinco, ent ˜ao h ´a 3 + 4 + 4 + 6 + 5 = 22 letras usadas no total. Fac¸a um programa que conte quantas letras seriam utilizadas se todos os n ´umeros de 1 a 1000 (mil) forem escritos em palavras. OBS: N ˜ao conte espac¸os ou hifens.

26. Fac¸a um programa que leia um n ´umero inteiro positivo N e imprima todos os n ´umeros naturais de 0 at ´e N em ordem crescente.

27. Fac¸a um programa que leia um n ´umero inteiro positivo N e imprima todos os n ´umeros naturais de 0 at ´e N em ordem decrescente.

28. Fac¸a um programa que leia um n ´umero inteiro positivo par N e imprima todos os n ´umeros pares de 0 at ´e N em ordem crescente.

29. Fac¸a um programa que leia um n ´umero inteiro positivo par N e imprima todos os n ´umeros pares de 0 at ´e N em ordem decrescente.

30. Fac¸a um programa que leia um n ´umero inteiro positivo ´ımpar N e imprima todos os n ´umeros ´ımpares de 1 at ´e N em ordem crescente.

31. Fac¸a um programa que leia um n ´umero inteiro positivo ´ımpar N e imprima todos os n ´umeros ´ımpares de 1 at ´e N em ordem decrescente.

32. Em Matem ´atica, o n ´umero harm ˆonico designado por Hn define-se como sendo o en ´esimo termo da s ´erie harm ´onica. Ou seja:

Hn = 1 + 1/2 + 1/3 + 1/4 + ... + 1/n Apresente um programa que calcule o valor de qualquer Hn.

(4)

33. Fac¸a um programa que leia um valor N inteiro e positivo, calcule o mostre o valor E, conforme a f ´ormula a seguir

E = 1 + 1/1! + 1/2! + 1/3! + ... + 1/N !

34. Fac¸a um programa que calcula a associac¸ ˜ao em paralelo de dois resistores R1 e R2 fornecidos pelo usu ´ario via teclado. O programa fica pedindo estes valores e calculando at ´e que o usu ´ario entre com um valor para a resist ˆencia igual a zero.

R = R1 ∗ R2 R1 + R2

35. Escreva um programa que leia 10 n ´umeros e escreva o menor valor lido e o maior valor lido.

36. Dado um n ´umero inteiro positivo n, calcular a soma dos n primeiros n ´umeros naturais. (Obs.: Neste caso n representa a quantidade de elementos a serem lidos e somados). 37. Fac¸a um programa que calcule a ´area de um tri ˆangulo, cuja base e altura s ˜ao fornecidas

pelo usu ´ario. Esse programa n ˜ao pode permitir a entrada de dados inv ´alidos, ou seja, medidas menores ou iguais a 0.

38. Fac¸a um programa que leia um n ´umero indeterminado de linhas contendo cada uma a idade de um indiv´ıduo (pare quando for informada a idade 0), e calcule a idade m ´edia desse grupo de indiv´ıduos.

39. Fac¸a um programa que leia um conjunto n ˜ao determinado de valores, um de cada vez, e escreva para cada um dos valores lidos, o quadrado, o cubo e a raiz quadrada. Finalize a entrada de dados com um valor negativo ou zero.

40. Fac¸a um programa para ler o c ´odigo, o sexo ( M - masculino , F - feminino) e o n ´umero de horas / aula dada mensalmente pelos professores de uma universidade, sabendo-se que cada hora/aula vale R$ 30,00. Emita uma listagem contendo o c ´odigo, o sal ´ario bruto e o sal ´ario l´ıquido (levando em considerac¸ ˜ao os descontos explicados a seguir) de todos os professores. Mostre tamb ´em a m ´edia dos sal ´arios l´ıquidos dos professores do sexo masculino e a m ´edia dos sal ´arios l´ıquidos dos professores do sexo feminino. Considere:

• Desconto para homens, 10% e, para mulheres, 5%;

• Asinformac¸ ˜oes terminar ˜ao quando for lido o c ´odigo = 99999

41. O funcion ´ario chamado Carlos tem um colega chamado Jo ˜ao que recebe um sal ´ario que equivale a um terc¸o do seu sal ´ario. Carlos que gosta de fazer aplicac¸ ˜oes na caderneta de poupanc¸a vai aplicar seu sal ´ario integralmente nela, pois est ´a rendendo 2% ao m ˆes, e Jo ˜ao aplicar ´a seu sal ´ario integralmente no fundo de renda fixa, que est ´a rendendo 5% ao m ˆes. Construa um programa que dever ´a calcular e mostrar a quantidade de meses necess ´arios para que o valor pertencente a Jo ˜ao iguale ou ultrapasse o valor pertencente a Carlos. Teste com outros valores para as taxas.

42. Dados o n ´umero n de alunos de uma turma de M ´etodos e T ´ecnicas de Programac¸ ˜ao e suas notas na primeira prova, determinar a maior e a menor nota obtidas por essa turma (nota m ´axima = 100 e nota m´ınima = 0).

43. Fac¸a um programa que leia 10 inteiros e imprima sua m ´edia.

44. Fac¸a um programa que leia 10 inteiros positivos, ignorando n ˜ao positivos, e imprima sua m ´edia.

(5)

45. Fac¸a um programa que simula o lanc¸amento de dois dados, d1 e d2, n vezes, e tem como sa´ıda o n ´umero de cada dado e a relac¸ ˜ao entre eles (>,<,=) de cada lanc¸amento. 46. Escreva um programa que leia um inteiro n ˜ao negativo n e imprima a soma dos n

primei-ros n ´umeprimei-ros primos.

47. Dados n e dois n ´umeros inteiros positivos, i e j, diferentes de 0, imprimir em ordem crescente os n primeiros naturais que s ˜ao m ´ultiplos de i ou de j e ou de ambos. Exemplo: Para n = 6, i = 2 e j = 3 a sa´ıda dever ´a ser: 0,2,3,4,6,8.

48. Fac¸a um programa que gera um n ´umero aleat ´orio de 1 a 1000. O usu ´ario deve tentar acertar qual o n ´umero foi gerado, a cada tentativa o programa dever ´a informar se o chute ´e menor ou maior que o n ´umero gerado. O programa acaba quando o usu ´ario acerta o n ´umero gerado. O programa deve informar em quantas tentativas o n ´umero foi descoberto.

49. Escreva um programa que declare um inteiro, inicialize-o com 0, e incremente-o de 1000 em 1000, imprimindo seu valor na tela, at ´e que seu valor seja 100000 (cem mil).

50. Um funcion ´ario recebe aumento anual. Em 1995 foi contratado por 2000 reais. Em 1996 recebeu aumento de 1.5%. A partir de 1997, os aumentos sempre correspondem ao dobro do ano anterior. Fac¸a programa que determine o sal ´ario atual do funcion ´ario. 51. Escreva um programa que receba como entrada o valor do saque realizado pelo cliente

de um banco e retorne quantas notas de cada valor ser ˜ao necess ´arias para atender ao saque com a menor quantidade de notas poss´ıvel. Ser ˜ao utilizadas notas de 100, 50, 20, 10, 5, 2 e 1 real.

52. Escreva um programa para calcular o valor da s ´erie, para 5 termos. S = 0 + 1/2! + 2/4! + 3/6! + ...

53. Escreva um algoritmo que leia certa quantidade de n ´umeros e imprima o maior deles e quantas vezes o maior n ´umero foi lido. A quantidade de n ´umeros a serem lidos deve ser fornecida pelo usu ´ario.

54. Escreva um algoritmo que leia um n ´umero inteiro entre 100 e 999 e imprima na sa´ıda cada um dos algarismos que comp ˜oem o n ´umero

55. Uma empresa paga R$10.00 por hora normal trabalhada e R$ 15.00 por hora extra. Es-creva um programa que leia o total de horas normais e o total de horas extras trabalhadas por um empregado em um ano e calcule o sal ´ario anual deste trabalhador.

56. Assuma que o trabalhador do exerc´ıcio anterior deve pagar 10

57. Fac¸a um programa que conte quantos n ´umeros primos existem entre a e b. 58. Fac¸a um programa que some os n ´umeros primos existentes entre a e b. 59. Fac¸a um programa que calcule e escreva o valor de S

S = 1 1+ 3 2+ 5 3 + 7 4... 99 50

60. Escreva um programa que leia um n ´umero inteiro positivo n e em seguida imprima n linhas do chamado Triangulo de Pascal:

(6)

1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ...

61. Escreve um programa que verifique quais n ´umeros entre 1000 e 9999 (inclusive) pos-suem a propriedade seguinte: a soma dos dois d´ıgitos de mais baixa ordem com os dois d´ıgitos de mais alta ordem elevada ao quadrado ´e igual ao pr ´oprio numero. Por exemplo, para o inteiro 3025, temos que:

30 + 25 = 55 552 = 3025

62. Fac¸a programas para calcular as seguintes f ´ormulas: 1 + 2 + 3 + 4 + 5 + ... + n 1 − 2 + 3 − 4 + 5 + ... + (2n − 1)

1 + 3 + 5 + 7 + ... + (2n − 1)

63. Fac¸a um programa que seja semelhante ao jogo de forca, mas com uma ´unica letra. A letra que o usu ´ario deve adivinhar deve ser definida no c ´odigo do programa. O usu ´ario tem 5 chances de acertar a letra. O programa finaliza sua execuc¸ ˜ao quando o usu ´ario acerta a letra ou quando acabam suas chances

64. Fac¸a um algoritmo que converta uma velocidade expressa em km/h para m/s e vice versa. Voc ˆe deve criar um menu com as duas opc¸ ˜oes de convers ˜ao e com uma opc¸ ˜ao para finalizar o programa. O usu ´ario poder ´a fazer quantas convers ˜oes desejar, sendo que o programa s ´o ser ´a finalizado quando a opc¸ ˜ao de finalizar for escolhida (no caso, caso ele escolha a opc¸ ˜ao ’q’).

65. Chico tem 1,50 metro e cresce 2 cent´ımetros por ano, enquanto Z ´e tem 1,10 metros e cresce 3 cent´ımetros por ano. Construa um algoritmo que calcule e imprima quantos anos ser ˜ao necess ´arios para que Z ´e seja maior que Chico.

66. Em uma eleic¸ ˜ao presidencial existem quatro candidatos. Os votos s ˜ao informados atrav ´es de c ´odigos. Os dados utilizados para a contagem dos votos obedecem `a seguinte codificac¸ ˜ao:

• 1, 2, 3,4 = voto para os respectivos candidatos; • 5 = voto nulo;

• 6 = votam em branco;

Elabore um algoritmo que leia o c ´odigo do candidato em um voto. Calcule e escreva: • total de votos para cada candidato;

• total de votos nulos; • total de votos em branco;

(7)

67. Faca um algoritmo que encontre o primeiro m ´ultiplo de 11, 13 ou 17 ap ´os um n ´umero dado.

68. Fac¸a um programa que receba dois valores. O primeiro representa uma conta a ser paga e o segundo com que valor ela foi paga. Mostre como resposta a quantidade m´ınima de cada tipo de moeda/nota de troco. Imprima uma mensagem de erro caso o valor pago seja menor que a conta.

69. Fac¸a um programa que apresente um menu de opc¸ ˜oes para o c ´alculo das seguintes operac¸ ˜oes entre dois n ´umeros:

• adic¸ ˜ao (opc¸ ˜ao 1) • subtrac¸ ˜ao (opc¸ ˜ao 2) • multiplicac¸ ˜ao (opc¸ ˜ao 3) • divis ˜ao (opc¸ ˜ao 4). • sa´ıda (opc¸ ˜ao 5)

O programa deve possibilitar ao usu ´ario a escolha da operac¸ ˜ao desejada, a exibic¸ ˜ao do resultado e a volta ao menu de opc¸ ˜oes. O programa s ´o termina quando for escolhida a opc¸ ˜ao de sa´ıda (opc¸ ˜ao 5).

70. Ler uma sequ ˆencia de n ´umeros inteiros e determinar se eles s ˜ao pares ou n ˜ao. Dever ´a ser informado o no. de dados lidos e no. de nos. pares. O processo termina quando for digitado o no. 1000.

71. Construa um programa que permita introduzir pelo terminal uma sequ ˆencia de n ´umeros inteiros e determine se cada um desses n ´umeros ´e ou n ˜ao perfeito. Todos os n ´umeros perfeitos encontrados dever ˜ao ser escritos na tela. Chama-se perfeito a um n ´umero inteiro n ˜ao negativo que seja igual `a soma dos seus divisores pr ´oprios, exceto ele mesmo (e.g. o n ´umero 6 possui divisores 1, 2, 3 e 6, portanto 1+2+3=6; 6 ´e um n ´umero perfeito – o n ´umero 8 possui divisores 1, 2, 4 e 8, portanto 1+2+4=7; 8 n ˜ao ´e um n ´umero perfeito). 72. Fac¸a um programa que receba dois n ´umeros. Calcule e mostre:

• a soma dos n ´umeros pares desse intervalo de n ´umeros, incluindo os n ´umeros digi-tados;

• a multiplicac¸ ˜ao dos n ´umeros ´ımpares desse intervalo, incluindo os digitados; 73. Escreva um programa completo que permita a qualquer aluno introduzir, pelo teclado,

uma sequ ˆencia arbitr ´aria de notas (v ´alidas no intervalo de 10 a 20) e que mostre na tela, como resultado, a correspondente m ´edia aritm ´etica simples. O n ´umero de notas com que o aluno pretenda efetuar o c ´alculo n ˜ao ser ´a fornecido ao programa, o qual terminar ´a quando for introduzido um valor que n ˜ao seja v ´alido como nota de aprovac¸ ˜ao.

74. Numa votac¸ ˜ao, destinada a selecionar um entre tr ˆes candidatos, optou-se pela coleta e processamento dos votos por computador. Supondo que os candidatos s ˜ao designados pelas tr ˆes primeiras letras do alfabeto, em min ´usculas, fac¸a um programa que obedec¸a `a seguinte especificac¸ ˜ao: Os votos s ˜ao recebidos a partir do teclado, numa sequ ˆencia ar-bitr ´aria de caracteres. O car ´acter zero significa voto em branco e um caractere especial, ’$’, indica o final dessa sequ ˆencia. Pretende-se a afixac¸ ˜ao, na tela, dos seguintes dados estat´ısticos:

• o n ´umero total de votantes; • o n ´umero de votos nulos;

(8)

• o n ´umero de votos em branco;

• a votac¸ ˜ao obtida pelos diversos candidatos quer em valor absoluto, quer em per-centagem dos votos expressos;

• indicac¸ ˜ao do candidato vencedor, ou, em caso de empate, quais os candidatos que partilham o primeiro lugar;

• indicac¸ ˜ao de ocorr ˆencia de maioria absoluta se for caso disso.

O usu ´ario digita uma ”senha”num ´erica, e o programa reconhece a senha como verda-deira ou falsa, mostrando esta informac¸ ˜ao.

75. Fac¸a um programa que some os n ´umeros impares contidos em um intervalo definido pelo usu ´ario. O usu ´ario define o valor inicial do intervalo e o valor final deste intervalo, e o programa deve somar todos os n ´umeros ´ımpares contidos neste intervalo. Caso o usu ´ario digite um intervalo inv ´alido (comec¸ando por um valor maior que o valor final) deve ser escrito uma mensagem de erro na tela, ”Intervalo de valores invalido”e o programa ´e terminado. Exemplo de tela de sa´ıda:

Digite o valor inicial e valor final: 5 10 Soma dos ´ımpares neste intervalo: 21

Imagem

Referências

temas relacionados :