Exercícios com ciclos

Propaganda
Exercícios de instruções de ciclo na linguagem C
Com esta lista de exercícios o aluno pratica a escrita de programas que envolvem ciclos e a definição e invocação de
novas funções .
a) Elaborar um programa para mostrar uma tabela de senos, cosenos e tangentes para ângulos de 15 em 15
graus, entre 0 e 360 graus, como mostra a fig. seguinte.
x
0:
15:
30:
45:
60:
75:
90:
105:
120:
135:
150:
165:
180:
sin(x)
0.00000
0.25882
0.50000
0.70711
0.86603
0.96593
1.00000
0.96593
0.86603
0.70711
0.50000
0.25882
0.00000
cos(x)
1.00000
0.96593
0.86603
0.70711
0.50000
0.25882
0.00000
-0.25882
-0.50000
-0.70711
-0.86603
-0.96593
-1.00000
tg(x)
0.00000
0.26795
0.57735
1.00000
1.73205
3.73205
Infinite
-3.73205
-1.73205
-1.00000
-0.57735
-0.26795
-0.00000
.................................................
b) Elaborar um programa que leia um número inteiro positivo representando o número de bilhete de
identidade, e calcule o dígito de verificação (apresentado à frente do número no BI). O cáculo consiste em
calcular a soma pesada dos dígitos, em que o dígito de menor peso tem peso 2 , o seguinte peso 3 e asssim
sucessivamente. O dígito de verificação deve ser igual à diferença entre 11 e o resto da divisão por 11 da
soma obtida. E se o resultado dá 10 ou 11? Uma vez que há apenas um dígito de verificação procure
descobrir o que acontece nesse caso.
c) Elabore um programa que leia do teclado (standard input) dois valores inteiros positivos e calcule se esses
dois números lidos são ”amigos”. Diz-se que dois números são amigos se cada um deles é igual à soma dos
divisores próprios do outro. Divisores próprios de um número positivo n são todos os divisores inteiros
positivos excepto o próprio n. Um exemplo de números amigos são os números 284 e o 220, uma vez que a
soma dos divisores de 220 dá 284 e vice-versa, como é mostrado a seguir:
Divisores próprios de 220-> 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284
Divisores próprios de 284-> 1 + 2 + 4 + 71 + 142 = 220
d) Realizar e testar a função double calc_juros(int total_anos, double mi, double tax) que retorna o
montante total obtido em juros de um depósito a total_anos anos, com montante inicial mi à taxa de juro
anual tax.
e) Implemente funções que recebem por parâmetro um long int n com o propósito de retornar:
1) O número de algarismos de n.
2) A soma de todos os algarismos.
3) O número que resulta da inversão dos dígitos de n (exemplo: 7523 para 3257).
4) Verificar se o número é capicua, ou seja, se lido da esquerda para a direita ou da direita para a esquerda
tem o mesmo valor. Exemplos: 1, 2, 9, 11, 22, ... 99, 101, 111, ...... 123321 ...
f)
Elabore o programa que lê do teclado uma sequência de caracteres terminada por um amudança de linha e
escreva na consola um gráfico de barras horizontais contabilizando as ocorrências das vogais lidas, com a
seguinte apresentação:
A, a | **************
(14)
E, e | *********
( 9)
I, i | **
( 2)
O, o | *****
( 5)
U, u | *
( 1)
g) Implemente a função int isPrime(int n) que recebe um número n e retorna true se o número for primo
e false caso contrário.
h) Realize um programa que apresenta os primeiros n número primos, sendo o valor n lido do standard input.
Os números devem ser apresentados na forma de tabela, tendo cada linha 16 números como se mostra a
seguir:
i)
2
3
59
61
5
67
7
11
13
17
19
23
29
31
37
41
43
47
71
73
79
83
89
97
101
103
107
109
113
127
53
131
Realize um programa que tira partido da função isPrime da alínea e) para mostrar os divisores primos de um
número. Sugestão: considere implementar a função auxiliar int nextPrime(int n) que retorna o primeiro
primeiro superior a n.
Exemplo:
n: 129
divisores primos: 3
j)
43
Realize um programa que leia dois inteiros positivos que representam um número fraccionários e apresenta
fracção equivalente na forma reduzida, isto é, com o mínimo numerador e denominador.
Bom trabalho
Jorge Martins
Download