Buscar

Lista de Exercícios - Seleção e Repetição

Prévia do material em texto

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE 
ESCOLA DE CIÊNCIAS E TECNOLOGIA 
ECT1203 – Linguagem de Programação 
2ª Lista de Exercícios – Comandos de seleção e repetição 
 
 
1. Reescreva os trechos de código abaixo, utilizando os comandos indicados (e outros que julgar 
necessário) de modo a manter o mesmo efeito. 
a) while 
 
for( i=3; i<j; j-- ) 
 a[j][i-3] = i*j; 
 
c) if 
 
switch( i ) 
{ 
 case 1: a = i; 
 case 2: b = j; 
 break; 
 case 0: c = i + j; 
 default: d = i * j; 
} 
b) for 
 
x = 6; 
do { 
 cout << x; 
 x--; 
} while( x > 3 ); 
 
d) do-while 
 
while( i < n ){ 
 i += 2; 
 n--; 
} 
 
2. Qual é o valor de i imediatamente após a execução de cada um dos seguintes loops? Quantas vezes 
o corpo do loop foi executado em cada caso? 
int i = 0; 
while (i < 5) 
i = i+1; 
 
int i = 0; 
while (0 < i%5) 
i = i+1; 
 
int i = 1; 
while (i < 10) 
 i = i+5; 
3. Escreva um programa que, dados três valores inteiros diferentes entre si, apresente o maior de 
tais valores. 
 
4. Quando será executada a instrução a = y no trecho de código abaixo? 
if(x > y) 
 if(y != 0) 
 a = x/y; 
else 
 a = y; 
 
5. Desenvolva um programa que calcule a soma dos 10 primeiros números inteiros pares positivos. 
 
6. Num frigorífico existem 90 bois. Cada boi traz preso no pescoço um cartão contendo seu número 
de identificação e seu peso. Fazer um programa que escreva o número e peso do boi mais gordo e 
do boi mais magro. 
 
7. Faça um programa que solicite ao usuário um conjunto de números inteiros. A leitura de dados 
terminará quando for ingressado o número zero (flag). Pede-se a soma e a média de todos os 
números lidos (excluindo o zero). 
 
8. Escrever um programa que, enquanto as respostas do usuário forem positivas, repita o seguinte 
procedimento: consultar ao usuário se ele quer efetuar o cálculo do valor absoluto de um valor 
real e, em caso afirmativo, ler um valor real e apresentar o valor absoluto de tal valor. Em caso 
negativo, a execução do programa deve ser encerrada. 
 
9. Suponha que no ano N a população americana seja maior que a brasileira. Sabendo-se que os 
Estados Unidos possuem um crescimento anual de 2% na sua população e que o Brasil tem 
crescimento anual de 4%, determinar o ano em que as duas populações serão iguais (em 
quantidade). São dados os números de habitantes dos Estados Unidos e do Brasil no ano N. 
 
10. Escreva um programa que apresente os n primeiros números primos a partir do número 2 para 
um valor n>0 fornecido pelo usuário. 
 
11. Escreva um programa que determina a data cronologicamente maior de duas datas fornecidas 
pelo usuário. Cada data deve ser fornecida por três valores inteiros onde o primeiro representa 
um dia, o segundo um mês e o terceiro um ano. 
 
12. Escreva um programa que solicite ao usuário um dia, um mês e um ano e escreva na tela o dia da 
semana correspondente àquela data informada. O programa deverá escrever o valor 1 para 
domingo, 2 para segunda-feira, 3 para terça-feira, 4 para quarta-feira, 5 para quinta-feira, 6 para 
sexta-feira e 7 para sábado. 
 
13. Escreva um programa que solicite ao usuário um caractere. Caso o caractere digitado tenha sido 
maiúsculo, o programa deverá imprimir o caractere minúsculo correspondente e vice-versa. Dica: 
verifique na tabela ASCII os códigos dos caracteres maiúsculos e minúsculos. 
 
14. Escreva um programa que leia três números inteiros num, exp e mod. O programa deve imprimir 
(numexp) módulo mod. O seu programa não deve usar funções matemáticas nem o operador %. 
 
15. Escreva um programa para calcular a série abaixo, considerando que o valor de x e o número de 
termos da série são fornecidos pelo usuário. 
 321)( xxxxf 
 
16. Escreva um programa que determine se um número inteiro positivo lido do teclado é primo. A 
seguir, são dados exemplos de formatos de entrada e saída do programa. 
 
Exemplo 1: 
Entre com o 
numero: 
4 
Nao e primo. 
 
Exemplo 2: 
Entre com o 
numero: 
-5 
Numero invalido. 
 
Exemplo 3: 
Entre com o 
numero: 
7 
Primo 
17. Suponha que as bactérias em um lago aumentem seu número a um fator de p por segundo; assim, 
começando com n0 bactérias num instante zero, existem n1 = n0*(1+p) após um segundo, n2 = 
n1*(1+p) após dois segundos e assim por diante. Escreva um programa que imprimirá o número 
de bactérias em um dado intervalo de tempo, em um dado período. Por exemplo, se o programa 
recebe os valores n0 = 106 e p = 0,001 e calcula a população de bactérias a cada 24 horas por uma 
semana, ele deve imprimir: 
n(0) = 1e+06 
n(86400) = 3.1937e+43 
n(172800) = 1.01997e+81 
n(259200) = 3.25749e+118 
n(345600) = 1.04034e+156 
n(432000) = 3.32255e+193 
n(518400) = 1.06112e+231 
n(604800) = 3.38891e+268 
 
18. Diz-se que um número inteiro n é um quadrado perfeito se existirem m números ímpares 
consecutivos a partir do valor 1 cuja soma é igual a n. Neste caso, n=m2. Exemplo: 16=1+3+5+7 
(16 é igual à soma dos quatro primeiros ímpares a partir de 1) e 16=42. Logo 16 representa um 
quadrado perfeito. Escreva um programa que verifique se um valor inteiro positivo fornecido pelo 
usuário é um quadrado perfeito ou não. 
 
 
19. Dado um número positivo n, achar todos os seus divisores inteiros diferentes de n.
Exemplo:
 Se 
a entrado do programa for 308, então a saída deve ser
1 2 4 7 11 22 28 44 77 154. 
 
20. Qual a função dos comandos break e continue em laços? 
 
21. O que faz o programa abaixo? 
 
#include <iostream> 
using namespace std; 
int main() { 
 int n; 
 do { 
 cout << " \nDigite um numero: "); 
 cin >> n; 
 if (n < 0) 
 break; 
 else if (n > 10) 
 continue; 
 cout << "The number is: " << n << endl; 
 } while (n != 0); 
} 
 
22. O que faz o programa abaixo? Qual a saída para n = 6, i = 2 e j = 3? 
 
#include <iostream> 
using namespace std; 
int main(){ 
 int i, j, n, multi, multj, k; 
 cin >> n >> i >> j; 
 
 multi = 0; 
 multj = 0; 
 
 for (k = 0; k < n; k++){ 
 if (multi < multj){ 
cout << multi; 
multi = multi + i; 
 } 
 else{ 
cout << multj; 
if (multi == multj){ 
 multi = multi + i; 
} 
multj = multj + j; 
 } 
 } 
 cout << multi << “ ” << multj << endl; 
 return 0; 
}

Continue navegando