MINISTÉRIO DA EDUCAÇÃO
SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA
GERENCIA EDUCACIONAL DE APOIO AO ENSINO
COORDENAÇÃO DA ÁREA DE INFORMÁTICA
Lógica de Programação
Professor Manoel Campos da Silva Filho
LISTA DE EXERCÍCIOS GERAIS
Desenvolva programas em linguagem C para:
ENTRADA E SAÍDA DE DADOS/ESTRUTURA DE SELEÇÃO
1. Ler nome, endereço, telefone e imprimir cada dado em uma linha separada, .
2. Ler nome, sexo e idade e imprimir tais dados em seguida. Se idade menor que 18, imprimir o texto
Maior de Idade. Caso contrário imprimir Menor de Idade.
3. Ler um número inteiro e imprimir seu sucessor e seu antecessor, sem alterar o valor original do
número.
4. Receber um valor de um produto do teclado e imprimir esse valor com desconto de 10%. Mostrar
quanto foi o valor do desconto.
5. Informar três números inteiros e imprimir a média.
6. Informe o tempo gasto em uma viagem (em horas), a velocidade média (em km/h) e calcule o
consumo de combustível (em litros), considerando que o veículo percorre 14km para cada litro de
combustível gasto.
7. Ler um número inteiro e imprimir seu cubo.
8. Informar o saldo de uma conta poupança e imprimir o saldo com reajuste de 1%.
9. O consumo de energia elétrica é medido em Kilowatt/hora (kWh). Faça um programa para calcular e
imprimir o valor em reais de uma conta de energia elétrica. O programa deve solicitar o total de kWh,
o valor de 1 kWh, calcular e exibir o valor da conta de energia.
10. O consumo de energia elétrica é medido em Kilowatt/hora (kWh). Faça um programa para calcular e
imprimir o valor em reais de uma conta de energia elétrica. O programa deve solicitar o total de kWh,
calcular e exibir o valor da conta de energia. No entanto, o valor do kWh é definido de acordo com o
total de energia gasto no mês. Para definir tal valor, utilize a tabela abaixo:
Faixa de Consumo
De 0 a 30 kWh
De 31 a 100 kWh
De 101 a 220 kWh
Acima de 220 kWh
Preço (R$/kWh)
0,12761
0,21873
0,32811
0,36454
11. Calcular o tempo gasto em uma viagem de um veículo (em horas) conforme os dados informado pelo
usuário: Distância (em km) e velocidade média (em km/h).
12. Fazer simulação de empréstimo bancário. O programa deve solicitar o salário da pessoa e o valor da
parcela do empréstimo. Se a parcela for maior que 20% do salário, imprimir : Empréstimo não pode
ser concedido. Senão imprimir Empréstimo pode ser concedido.
13. Ler um ano de nascimento e ano atual. Imprimir a idade da pessoa
14. Um comerciante comprou um produto e quer vendê-lo com lucro de 45% se o valor da compra for
menor que 20,00; caso contrário, o lucro será de 30%. O programa deve solicitar o valor do produto e
imprimir o valor da venda.
15. Informe o tipo de carro (A, B e C). Informe o percurso rodado em km e calcule o consumo estimado,
conforme o tipo, sendo A=8, B=9 e C=12 km/litro.
16. Receber dois números e imprimí-los em ordem crescente.
17. Desenvolva um programa que solicite a idade de uma pessoa e informe a sua classe eleitoral de
acordo com as informações abaixo. Observe que, nem sempre, um problema descrito em português,
por uma pessoa que não não entende de lógica de programação, utilizará as conjunções e/ou
corretamente. Em lógica de programação, tais conjunções são denominadas operadores lógicos. Logo,
é preciso analisar o problema para identificar se as conjunções “e” e “ou” foram empregadas
corretamente, ou seja, se onde foi utilizado um “e” deveria ser tal conjunção realmente (o mesmo vale
para “ou).
Não eleitor: abaixo de 16 anos
Eleitor obrigatório: entre 18 e 65 anos
Eleitor facultativo:entre 16 e 17 anos e maior de 65 anos
LAÇO DE REPETIÇÃO
18. Criar um algoritmo que leia os limites inferior e superior de um intervalo e imprimir todos os
números pares no intervalo e seu somatório. O programa deve verificar se o limite inferior é menor
que o limite superior.
19. Apresentar todos os números divisíveis por 4 que sejam menores que 200.
20. Solicitar a idade de várias pessoas e imprimir: Total de pessoas com menos de 21 anos. Total de
pessoas com mais de 50 anos. O programa termina quando idade digitada for igual a -1.
21. Solicitar um número entre 1 e 4. Se a pessoa digitar um número diferente, mostrar a mensagem "Valor
inválido" e solicitar o número novamente. Se digitar correto mostrar o número digitado.
22. Receber um número e verificar se está entre 100 e 200. Se estiver na faixa, imprimir: "Voce digitou
um número entre 100 e 200", Senão estiver na faixa,imprimir:"Voce digitou um número fora da faixa
de 100 a 200".
23. Desenvolva um programa que leia um número, calcule e escreva quantos divisores ele possui.
24. Desenvolva um programa que leia um número, calcule e escreva seu fatorial, utilizando a fórmula
n! = n (n-1) (n-2) (n-3) ... 1
onde n! representa o fatorial de um número n. O algoritmo pode ter uma variável de nome fatorial
para ser utilizada no lugar de n!.
25. Desenvolva um programa que leia um número e informe se ele é primo ou não. Sendo que um
número primo é aquele que tem dois divisores, só sendo divisível por 1 e por ele mesmo.
26. Desenvolva um programa que escreva os 5 primeiros números perfeitos. Um número perfeito é aquele
que é igual à soma dos seus divisores. Veja exemplos de números perfeitos: 6 = 1+2+3; 28 =
1+2+4+7+14.
27. Desenvolva um programa que solicite um número ao usuário e escreva a tabuada deste número. O
programa deve solicitar, ao usuário, um caractere que represente a operação aritmética para qual deve
ser montada a tabuada (+, -, * ou /).
28. Desenvolva um programa que escreva todas as letras do alfabeto.
29. Crie um programa para calcular a potência de um número utilizando um laço de repetição.
VETOR/STRING/LAÇO DE REPETIÇÃO
Dicas:
I. O último caractere de toda string em linguagem C é '\0'. Assim, para encontrar o final de uma string,
pode-se utilizar um laço que percorra a mesma até encontrar tal caractere.
Considerando isto, ao declarar uma string, se precisar, por exemplo, de exatamente 14 caracteres
(como no caso de uma string para armazenar um CPF, contendo os pontos e traço), esta deve ser
declarada com uma posição a mais para armazenar o '\0' na última posição. Se isto não for feito, o
'\0', que delimita o final da string, ocupará o lugar do último dígito do CPF, cortando o mesmo.
O '\0' é utilizado pois, não obrigatoriamente todas as posições de uma string vão estar ocupadas em
um determinado momento. Assim, tal caractere define até onde a string está preenchida. Desta
forma, funções como o printf, ao imprimir uma string, imprimem somente até o caracteres
antecessor ao '\0'. O restante dos caracteres que possam estar armazenados após o '\0' são
considerados lixo e não são exibidos.
II. A função strlen (biblioteca string.h) recebe uma string e retorna o total de caracteres da mesma. Veja
exemplo de uso:
char nome[50] = “Manoel Campos”;
int tamanho = strlen(nome);
printf(“Tamanho da string: %d”, tamanho);
30. Ler um nome completo (nome e sobrenome) e depois imprimir apenas o primeiro nome.
31. Receber um nome , calcule e mostre quantos caracteres tem, sem utilizar a função strlen.
32. Receber do teclado uma mensagem e imprimir quantas letras vogais tem esta mensagem.
33. Receber um nome no teclado e imprimir quantas letras "A" tem o nome (considerar maíusculas e
minúsculas).
34. Receber do teclado uma mensagem e imprimir a quantidade de cada vogal na mensagem.
35. Receber do teclado um nome e imprimir cada caractere em uma linha diferente.
36. Receber um nome do teclado e imprimí-lo de trás pra frente.
37. Receber do teclado a sigla do estado de uma pessoa e verificar se tal sigla é valida. Não devem ser
utilizadas estruturas de seleção para isto. O código deve ser resumido utilizando a seguinte solução:
Declare uma variável como abaixo:
char estados[100] = “AC AL AM AP BA CE DF ES GO MA MG MS MT PA PB PE PI PR RJ RN RO RR RS SC SE SP TO”;
Tal variável é uma string contendo a lista de estados do país. Para verificar se o estado digitado está
dentro desta lista, utilize a função strstr da biblioteca string.h. Utilize o comando “man strstr” no
terminal (ou outra fonte de ajuda) para verificar como usar a função.
38. Receber do teclado um nome e depois um sobrenome e juntá-los em uma outra variável, separando os
dois por um espaço.
39. Entrar com um nome e indicar se o mesmo é válido ou inválido. Considere que um nome válido deve
conter apenas caracteres alfabéticos (maíusculos e minúsculos) e espaço. Desconsidere caracteres
acentuados.
40. Solicitar no teclado uma frase com no máximo 40 letras. Se o tamanho for maior que 40, dar uma
mensagem de entrada inválida e solictar novamente, se passar, imprimir a frase na vertical.
41. Escrever um programa que receba um nome e conte o número de vogais existentes nele. O programa
deverá imprimir o numero total de caracteres do nome, quantas vogais tem e a respectiva
porcentagem das vogais em relação ao total de caracteres.
42. Receber um nome e, caso o mesmo tenha mais que 10 caracteres, cortar o nome na 10 a posição. Para
isto, analise as dicas I e II desta seção.
43. Digitar um nome e exibir o mesmo totalmente em maíusculas. Para isto, utilize a função toupper da
biblioteca ctype.h. A função recebe um caractere e retorna o mesmo em maíuscula.
44. Digitar um nome e alterá-lo para maíusculas (armazenando o seu valor em maiúsculas na variável
original), exibindo o nome alterado ao final. Para isto, utilize a função toupper da biblioteca ctype.h.
A função recebe um caractere e retorna o mesmo em maíuscula.
45. Digitar um nome e exibir o mesmo totalmente em minúsculas. Para isto, utilize a função tolower da
biblioteca ctype.h. A função recebe um caractere e retorna o mesmo em minúscula.
46. Digitar um nome e alterá-lo para minúsculas (armazenando o seu valor em minúsculas na variável
original), exibindo o nome alterado ao final. Para isto, utilize a função tolower da biblioteca ctype.h.
A função recebe um caractere e retorna o mesmo em minúscula.
47. Crie um programa para preencher um vetor de inteiros, de 10 posições, com números digitados pelo
usuário. O programa não pode permitir que sejam armazenados números repetidos.
48. Preencher um vetor de 8 elementos inteiros. Mostrar os dados do vetor e informar quantos números
são múltiplos de 2 e 3.
49. Crie um programa onde o usuário preenche dois vetores inteiros de 5 posições. O programa deve
exibir a soma dos elementos dos dois vetores que estejam na mesma posição. Exibindo o resultado
como no exemplo mostrado abaixo:
v1
2
3 1 5
4
v2
8
9 6 8
7
Soma 10 12 7 13 11
50. Preencher um vetor de 8 elementos inteiros. Mostrar o vetor na horizontal usando o caractere \t no
printf. Calcular a média do vetor. Mostrar quantos números são múltiplos de 5. Quantos números são
maiores que 10, quantos são menores que 30 e qual o maior número do vetor.
51. Armazenar em um vetor os nomes de 4 alunos e em outro a média final destes. Mostrar qual o aluno
teve a menor nota e qual teve a maior, além de mostrar os alunos aprovados (nota maior ou igual a 5)
e os alunos reprovados. Ao final, mostrar o total de alunos aprovados e o total de reprovados.
52. Preencher um vetor com 6 numeros informados pelo usuário e mostrá-los na tela, em ordem inversa, a
partir do último até o primeiro.
53. Preencher um vetor com 5 numeros informados pelo usuário e, à medida que for digitado um número,
calcular o cubo e armazenar em outro vetor. Mostrar os dois vetores.
54. Preencher um vetor com 5 números informados pelo usuário e, ao final, exibir a moda (o número que
mais se repete).
Para chegar à solução informatizada, primeiramente é preciso tentar resolver sem o uso de algoritmos
computacionais. Desta forma, deve-se primeiramente utilizar lápis e papel para entender como
solucionar o problema. Assim, escreva 5 números que desejar em uma folha de papel. A partir daí,
pense em como fará para verificar qual o número que mais se repete.
Associe tal problema à problemas do mundo real com os quais já conviveu, como por exemplo, a
escolha de um líder de turma em uma sala de aula.
55. Calcular a mediana de um conjunto ordenado de dados informados pelo usuário. Considerando tal
conjunto de dados ordenados, a mediana será o valor do meio, caso a quantidade de dados seja ímpar.
Caso a quantidade seja par, a mediana será a média dos dois valores centrais.
O programa deve primeiramente solicitar ao usuário a quantidade de valores que deseja digitar,
armazenando tal valor em uma variável int quant. Após a solicitação de tal valor, deve-se declarar um
vetor de inteiros, cujo tamanho será o indicado pelo usuário na variável quant.
Depois do scanf para a variável quant, declare o vetor como int dados[quant]. Desta forma, o vetor
será declarado com o tamanho indicado pelo usuário.
Em seguida, o programa deve solicitar a quantidade de números indicado pelo usuário, logo, é preciso
utilizar um for que execute “quant” vezes. Dentro do laço, cada valor digitado pelo usuário deve ser
armazenado em uma posição diferente no vetor dados.
Como os dados precisam estar ordenados para se encontrar a mediana, o programa deve obrigar o
usuário a informar os dados em ordem. Assim, após o usuário digitar um valor dentro do for, é preciso
verificar se este valor é menor que o valor anterior (lembre-se que estamos usando um vetor, logo, o
acesso aos elementos é indexado, assim, podemos acessar um dado em uma determinada posição por
meio da instrução dados[i]), se for, deve-se mostrar uma mensagem ao usuário e pedir que ele digite
um número maior que o anterior (deve-se exibir o número anterior na mensagem). Para impedir que o
usuário avance para o próximo número do conjunto de 5 números, a solicitação do número deve estar
dentro de um laço de repetição do { ... } while(condicao), onde a condição deve indicar quando que o
usuário precisará voltar e digitar o número novamente.
Ao final (fora dos laços de repetição), o programa deve calcular a mediana (como mostrado no início
do enunciado) e exibí-la.
56. O desvio padrão é um valor estatístico utilizado para se saber, na média, quanto que os valores em um
determinado universo variam acima ou abaixo da média. Considerando por exemplo, as 6 notas de um
aluno sendo 9, 9, 9, 1, 1 e 1, a média é 5. Só pela média, tem-se a ideia de que o aluno teve um
desempenho regular em todas as avaliações. No entanto, ele teve excelente desempenho nas 3
primeiras e um péssimo nas 3 últimas. Assim, somente a média pode não ser suficiente para se
analisar o desempenho do aluno ao longo do semestre. Assim, calculando-se o desvio padrão, se o
mesmo tiver um valor alto, isto indica que há muita variação entre as notas do aluno. Logo, quando
menor o desvio padrão, menos variação há entre uma nota e outra. Com base nisto, desenvolva um
programa que solicite 6 notas de um aluno e calcule a média e o desvio padrão.
Para calcular o desvio padrão, primeiramente precisamos obter todas as notas em um laço de
repetição, armazenando-as em um vetor. Por questões de simplificação, as notas devem ser inteiras.
Em tal laço já podemos fazer a soma das notas para, fora do laço, calcular a média.
Com a média calculada, em outro laço precisaremos calcular a diferença de cada nota para a
média, que chamados de desvio. Assim, o desvio de cada nota é a nota menos a média. Este desvio
indica quanto que a nota varia em relação à média (para mais, se o desvio for positivo, ou para menos,
se o desvio for negativo). Após calcular o desvio da nota, precisaremos calcular o seu quadrado (ainda
dentro do laço de repetição). Após isto, precisaremos somar os quadrados dos desvios (ainda no laço).
Fora do laço de repetição, precisamos calcular a variância, que é a soma do quadrado dos
desvios dividido pelo total de notas. Por fim, com a variância podemos calcular o desvio padrão, que
é a raiz da variância.
Para calcular a raiz quadrada da variância (o desvio padrão), inclua a biblioteca math.h e
utilize o seguinte código de exemplo: desvio_padrao = sqrt(variancia);
Para compilar este código utilize: gcc codigo_fonte.c -o nome_do_programa -lm
57.
MATRIZ/LAÇO DE REPETIÇÃO
58. Declarar uma matriz de 2 linhas por 4 colunas. Cada coluna representa as 2 notas de um aluno (que
devem ser digitada pelo usuário). Cada linha representa uma nota de cada um dos 4 alunos. Ao final,
o programa deve calcular a média de cada aluno, armazenando tais médias em um vetor de 4
posições.
59. Criar um algoritmo que leia os elementos de uma matriz inteira de 4 x 4 e imprima os elementos da
diagonal principal, destacada na figura abaixo.
60. Criar um algoritmo que leia os elementos de uma matriz inteira de 4 x 4 e imprima os elementos da
diagonal secundária, destacada na figura abaixo.
61. Criar um algoritmo que leia os elementos de uma matriz inteira de 3 x 3 e armazenar os elementos em
outra matriz multiplicando-os por 2. Ao final, a segunda matriz deve ser impressa.
Download

LISTA DE EXERCÍCIOS GERAIS Desenvolva programas em