Baixe Lógica de programação C e outras Manuais, Projetos, Pesquisas em PDF para Matemática, somente na Docsity!
Lista de Exercícios - Linguagem C
Walter Alexandre Alencar de Oliveira
22 de fevereiro de 2013
- 1 Introdução
- 2 Variáveis, Expressões e Funções Básicas
- 3 Estruturas Condicionais e de Seleção
- 4 Estruturas de Repetição
- 5 Vetores e Matrizes
- 6 Tipos Abstratos de Dados
- 7 Funções
- 8 Arquivos
- 9 Ponteiros
- 10 Outros Recursos da Linguagem
- 11 Estruturas de Dados
- 12 Desaos
- A Base Matemática
- A.1 Constantes
- A.2 Escalas termométricas
- A.3 Ângulos
- A.4 Polígonos e outros
- A.5 Plano e Espaço
- A.6 Medidas
- A.7 Números Complexos
- A.8 Outros 4 SUMÁRIO
- A.9 Física
- A.10 Datas
- A.11 Vetores e Matrizes
- A.12
Capítulo 1
Introdução
Para ser um bom programador é necessário programar. Como professor da disciplina Pro- gramação de computadores (e outras disciplinas que envolvam programação), não é difícil acreditar nesta armação. Assim, essa lista de exercícios tem a nalidade de fornecer ao aluno a oportunidade de praticar os conhecimentos aprendidos em sala de aula. Embora seja objetivo criar uma lista exaustiva de exercícios, é possível que algum conteúdo relacionado que de fora. Também é possível, devido a grande quantidade de exercícios, haver exercícios repetidos ou em capítulo errado. Neste caso, peço paciência aos alunos e, se possível, a colaboração com os mesmo em me noticar tais falhas neste trabalho. Cada capítulo irá focar em um conjunto de recursos da linguagem C. É recomendado que o aluno resolva os exercícios na ordem em que se encontram na lista (tendo os exercícios mais fáceis no início e aumentando-se o grau de diculdade aos poucos). Uma vez que o conteúdo estudado em um curso de linguagem C é considerado acumulativo, a lista de exercício, de maneira similar, irá incluir recursos cobrados em capítulos anterios. No Capítulo 2 são encontrados exercícios que exploram os recursos básicos da linguagem C, entre eles, declaração de variáveis, atribuição, expressões aritméticas com valores e variáveis, funções de entrada e saída de dados, funções matemáticas e algunas funções auxiliares de simples uso. Este capítulo é recomendado para os alunos que estão começando a aprender a linguagem. O Capítulo 3 inclui exercícios que exploram o uso de estruturas de decisão (if e if-else) e de seleção (switch). Este capítulo é recomendado para alunos que já estão familiarizados com os conceitos explorados na capítulo anterior. No Capítulo 4 é explorado o uso de estruturas de repetição (for, while e do-while). Embora qualquer uma das três estruturas disponíveis seja capaz de resolver qualquer problema que envolva repetições, há sempre uma que é a mais adequada para o problema em questão. Recomenda-se que, nos primeiros exercícios, o aluno devenvolva três versões de cada exercício,
5
Capítulo 2
Variáveis, Expressões e Funções Básicas
- Faça um programa que exiba a mensagem Olá Mundo! para o usuário.
- Faça um programa que declare uma variável inteira e mostre seu conteúdo para o usuário. Execute o programa algumas vezes. Qual o signicado do valor que está sendo impresso pelo programa?
- Faça um programa que declare uma variável real com precisão simples, atribua a essa variável o valor do número π (3.1415) e mostre, para o usuário, o conteúdo dessa variável.
- Faça um programa que declare uma variável capaz de armazenar um caractere, atribua a letra a a essa variável e mostre na tela o conteúdo da variável.
- Faça um programa que declare uma variável inteira, atribua a essa variável o valor 2. e mostre na tela o conteúdo da variável. Que valor é mostrado na tela? Por que isso acontece? Como pode ser evitado esse tipo de problema?
- Faça um programa que declare uma variável real com precisão dupla, atribua a essa variável a expressão 123 / 456 e mostre o resultado que está armazenado na variável? Que valor é mostrado na tela? Por que isso acontece? Como pode ser evitado esse tipo de problema?
- Faça um programa capaz de ler um carectere, informado pelo usuário, e mostrar o caractere escolhido pelo usuário.
- Faça um programa que leia um número inteiro e um número real de precisão simples. Mostre na tela ambos os valores.
7
8 CAPÍTULO 2. VARIÁVEIS, EXPRESSÕES E FUNÇÕES BÁSICAS
- Faça um program que leia um valor inteiro e mostre este mesmo valor nas bases hexa- decimal e octal. Dica: a função printf possui opções de formatação que fazem isso.
- Ler um valor real e exibir este valor com a precisão de duas cadas decimais (nem mais nem menos).
- Ler um valor inteiro e exibir este valor com pelo menos três dígitos. Exemplo:
- valor lido:7 -> valor exibido:
- valor lido:17 -> valor exibido: 017
- valor lido:1024 -> valor exibido: 1024
Dica: a função printf possui opções de formatação que fazem isso.
- Faça um programa que leia uma data no formato (dd/mm/aaaa) e mostre a data fornecida no formato (aaaa/mm/dd). Dica: é possível especicar as barras no formato de entrada dentro da função scanf.
- Faça um programa que leia um número inteiro, calcule o seu quadrado e exiba o resul- tado.
- Faça um programa que leia um número inteiro, calcule a décima parte deste número e exiba o resultado.
- Faça um programa que leia dois números, some estes números e exiba o resultado.
- Faça um programa capaz de multiplicar dois números fornecidos pelo usuário.
- Faça um programa que leia dois números inteiros e calcule sua soma, subtração, mul- tiplicação e divisão.
- Faça um programa para calcular a soma de três valores informados pelo usuário.
- Faça um programa para ler uma temperatura em graus Celsius e mostrar seu valor convertido para graus Fahrenheit.
- Faça um programa para ler uma temperatura em graus Fahrenheit e apresentar seu valor convertido para graus Celsius.
- Faça um programa que ler uma temperatura em graus Celsius e convertê-la para Kelvin.
10 CAPÍTULO 2. VARIÁVEIS, EXPRESSÕES E FUNÇÕES BÁSICAS
- Leia o valor do raio de uma esfera e calcule a área de sua superfície e o volume da esfera.
- A importância de R$ 780.000,00 será dividida entre três ganhadores de um concurso. Sendo que da quantia total:
- O primeiro ganhador receberá 46%;
- O segundo receberá 32%;
- O terceiro receberá o restante.
Calcule e imprima a quantia ganha por cada um dos ganhadores.
- Uma empresa contrata um encanador a R$ 30,00 por dia. Crie um programa que solicite o número de dias trabalhados pelo encanador e imprima a quantia líquida que deverá ser paga, sabendo-se que são descontados 8% para pagamento de impostos e taxas devidas.
- Leia os valores de dois catetos de um triângulo e calcule e mostre o valor da hipotenusa.
- Faça um programa que leia um caractere e imprima esse caractere como se fosse um número inteiro. Que número é esse que foi exibido pelo programa?
- Faça um programa que converta uma letra maiúscula em letra minúscula. Dica: use a tabela ASCII.
- Faça um programa que leia um número inteiro, positivo e de três dígitos, calcule o número formado pelos dígitos invertidos do número lido. Exemplo: Número lido: 123 Número Obtido: 321
- Faça um programa para ler um horário (hora:minuto:segundo) de início e a duração, em segundos, de uma experiência biológica. O programa deve informar o horário (hora:minuto:segundo) de término da mesma.
- Faça um programa que calcule a média ponderada das notas de três provas. A primeira e a segunda prova têm peso 1 e a terceira prova tem peso 2. O programa deve a média obtida pelo aluno.
- Faça um programa que leia o valor da hora de trabalho (em reais), o número de dias trabalhados no mês de janeiro deste ano, e mostre na tela o valor a ser pago ao funci- onário, adicionando 10% sobre o valor calculado. Considere que a carga de trabalho é de segunda a sexta-feira, das 08:00 às 12:00 e as 14:00 às 18:00; aos sábados, das 08: às 12:00. Considere que o funcionário teve folga em dias de feriados.
- Escreva um programa que leia as coordenadas x e y de um ponto no plano cartesiano e calcule a sua distância ao ponto de origem.
- Escreva um programa que leia as coordenadas x e y de dois pontos no plano e calcule a distância entre eles.
- Escreva um programa que leia as coordenadas x e y dos vértices de um triângulo e calcule a sua área.
- Faça um programa capaz de ler um número de quatro dígitos e escrever cada dígito em uma linha na tela.
- Faça um programa que leia o valor de horas, minutos e segundos gastos em um expe- rimentos e converta esse tempo em segundos.
- Faça um programa que leia um valor inteiro em segundos e exiba a quantidade de horas, minutos e segundos correspondente ao valor lido.
- Três amigos zeram um bolão e jogaram na loteria. Caso eles ganhem, o prêmio deve ser repartido proporcionalmente ao valor que cada um contribuiu para a realização das apostas. Faça um programa que lê quanto cada apostador investiu, lê o valor do prêmio e escreve quanto cada um ganharia.
- Faça um programa que receba dois valores inteiros, e construa um número real cuja parte inteira corresponde ao resto da divisão do primeiro pelo segundo valor e a parte fracionário é composta pelos dois dígitos menos signicativos do quociente da divisão do primeiro pelo segundo valor recebido.
- Leia um valor de velocidade em quilômetros por hora e apresentá-la em metros por segundo.
- Leia um valor de velocidade em metros por segundo e apresetá-la em quilômetros por hora.
- Leia uma distância em milhas e converta para quilômetros.
- Crie um programa que converte coordenadas cartesianas em coordenadas polares. O programa deve ler um ponto em um coordenada polar, composto por raio e ângulo em radianos.
- Calcular a corrente em um circuito elétrico resistivo simples:
- Leia os dados de uma fonte de tensão real composta por força eletromotriz (E) e resistência interna (ri).
- Leia os dados de uma fonte de um receptor composto por resistência interna (ri) e consumo (E').
- Calcular e exibir a corrente que passa no circuito composto pela fonte e receptor, sabendo que E=E'+R*i, onde R é a soma das resistências internas.
- Calcular a força gravitacional de um objeto de massa m a uma distância d acima do solo.
- Um determinado satélite está a uma altitude h com relação a Terra. Escreva um programa que leia a altitude desse satélite e determine sua velocidade orbital e seu período de movimento orbital. Dica: utilize as fórmulas e constantes localizadas no Apêndice A.
- Ler a altura e o raio de um cilindro circular e imprimir o volume do cilindro.
- Ler o saláriobase de um funcionário, calcular e mostrar o salário a receber, sabendo-se que esse funcionário tem graticação de 5% sobre o salário-base, e paga imposto de 7% sobre o salário-base.
- Faça um programa para conversão monetária de reais (R$) para dólares (US$). O usuário deve fornecer o valor da cotação do dólar.
- Um cercado contém patos e coelhos. Faça um programa que solicita o total de cabeças e o total de patas, e escreve quantos patos e quantos coelhos existem no cercado.
- Ler um número inteiro e imprimir a soma do sucessor de seu triplo com o antecessor de seu dobro.
- Faça um programa para ler as dimensões de um terreno (comprimento e largura), o preço do metro de arame e calcular o custo total para cercar o terreno. O programa também deve informar quantos metros de cerca devem ser comprados.
14 CAPÍTULO 2. VARIÁVEIS, EXPRESSÕES E FUNÇÕES BÁSICAS
- Faça um programa que calcule o ano de nascimento de uma pessoa a partir da idade que a pessoa tinha no dia primeiro de janeiro do ano atual.
- Faça um programa que calcule e mostre a média geométrica entre quatro valores.
- Faça um programa que calcule e mostre a média harmônica entre quatro valores.
- Ler um ângulo x em graus, calcular e mostrar o valor de seno(x), cossseno(x) e tangente(x). Obs.: antes de usar as funções trignométricas da biblioteca math.h, é necessário con- verter a medida do ângulo para radianos.
- Ler um valor x e calcular o arcoseno(x), arcocosseno(x), e o arcotangente(x). Os ângulos obtidos nos resultados devem ser apresentados em graus.
- Ler o valor de um ângulo x, em graus, e calcular o seno hiperbólico de x, o cosseno hiperbólico de x e a tangente hiperbólica de x. Obs: o valor do ângulo deve ser convertido para radianos antes de se usar as funções da biblioteca math.h.
- Faça um programa que gere três valores aleatórios inteiros. Dica: use as funções rand e srand, ambas denidas na biblioteca stdlib.h.
- Faça um programa que gere três valores aleatórios inteiros e maiores ou iguais que um limite inferior fornecido pelo usuário.
- Faça um programa que gere três valores aleatórios inteiros e menores ou iguais que um limite superior fornecido pelo usuário.
- Faça um programa que gere três valores aletórios inteiros que estejam dentro do inter- valo fechado [a; b]. Os limites inferior (a) e superior (b) são fornecidos pelo usuário.
- Ler um valor de x e calcular seu logaritmo na base e e na base 10. Que valor é obtido se o usuário fornecer o valor zero para x? Qual o signicado desse número?
- Ler um valor de a e um valor de b e calcular o logaritmo de a na base b. Dica: use a fórmula de mudança de base logarítmica para poder usar as funções da biblioteca math.h.
- Faça um programa capaz de ler um valor real x e decompor esse número em parte inteira e parte fracionária. Dica: use a função modf da biblioteca math.h.
16 CAPÍTULO 2. VARIÁVEIS, EXPRESSÕES E FUNÇÕES BÁSICAS
- Em uma loja, o cliente, ao fazer uma compra a prazo, pode estabelescer o um prazo de 10 a 90 dias para pagar a compra. Faça um programa que leia uma data no formato dd/mm/aaaa e uma quantidade de dias n, adicione os n dias à data fornecida e mostre a data limite para pagamento, no formato dd/mm/aaaa. Dica: a conversão entre formatos de datas pode ser útil à construção deste programa.
- Uma empresa paga R$ 10,00 por hora normal trabalhada e R$ 15,00 por hora extra. Escreva 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ário anual deste trabalhador.
- Assuma que o trabalhador do exercício anterior deve pagar 10% de imposto se o seu salário anual for menor ou igual a R$ 12.000,00. Caso o salário seja maior que este valor o imposto devido é igual a 10% sobre R$ 12.000,00 mais 25% sobre o que passar de R$ 12.000,00. Escreva um programa que calcule o imposto devido pelo trabalhador.
Capítulo 3
Estruturas Condicionais e de Seleção
- Considere um código que, em uma de suas estruturas condicionais, utilize o seguinte teste: if(x=0). Qual é o comportamento do comando if neste programa? E como seria o comportamento desse programa se o teste fosse if(x=1) ou if(x=-10)?
- Faça um programa que leia um valor de uma variável inteira x e imprima dois valores, formatados como inteiros, sendo o primeiro deles o resultado da expressão lógica x <= 0 e o segundo o resultado da expressão lógica x < 0. Quais são os valores exibidos como resultado na tela? O que signicam esses valores?
- Faça um programa que receba dois números e mostre qual é o maior deles.
- Ler um número real, se o número for positivo imprima sua raiz quadrada, senão imprima o número ao quadrado.
- Vericar se um determinado ano, fornecido pelo usuário, é bissexto. Um ano é bissexto se for divisível por 400 ou se for divisível por 4 e não for divisível por 100. Exemplos: 1988, 1992, 1996, 2000. Repare que 1900 não é bissexto.
- Receber o salário de um trabalhador e o valor de um empréstimo. Se a prestação for maior que 20% do salário imprima Empréstimo não concedido, caso contrário imprima Empréstimo autorizado.
- Ler o ano de nascimento de uma pessoa e o ano atual, calcular a idade da pessoa.
- A nota nal de um estudante é calculada a partir de três notas atribuídas, respectiva- mente, a um trabalho de laboratório, a uma avaliação semestral e a um exame nal. A média das três notas mencionadas anteriormente os seguintes pesos: Trabalho de laboratório: 2; Avaliação semestral: 3; Exame nal: 5. Calcule a média obtida pelo
17
- Usando o switch, escreve um programa que leia um número inteiro de 1 a 7 e imprima o dia da semana correspondente a este número, isto é, domingo=1, segundafeira=2, etc.
- Faça um programa que leia uma data no formato dd/mm/aaaa e calcule o dia da se- mana correspondente a data fornecida. Dica: converter a data para o formato juliano pode facilitar a construção deste pro- grama.
- Faça um programa para vericar se um determinado número, fornecido pelo usuário, é divisível por 3 ou por 5 mas não por ambos.
- Faça um programa que escreva o menu abaixo, leia uma opção do usuário e execute a operação correspondente. O programa deve exibir uma mensagem de erro se a opção for inválida. O menu do programa deve ser o seguinte: Escolha uma opção: 1 - Soma de dois números. 2 - Diferença entre dois números. 3 - Produto entre dois números. 4 - Divisão entre dois números (o denominador não pode ser zero). Sua opção:
- Uma determinada empresa vende seus produtos em quatro diferentes estados. Cada estado possui uma taxação de imposto diferente sobre o produto (MG: 7%; SP: 12%; RJ: 15%; MS: 8%). Faça um programa em que o usuário entre com o valor e o estado destino do produto e o programa retorne o preço nal do produto acrescido do imposto correspondente ao estado onde será vendido. O programa deve mostrar uma mensagem de erro caso o estado fornecido não esteja na lista de estados válidos.
- Leia uma distância em quilômetros e a quantidade de litros de gasolina consumidos por um carro em um percurso, calcule o consumo em km/l e escreva uma mensagem de acordo a tabela 3.2.
Tabela 3.2: Consumo de combustível. Consumo (Km/l) Mensagem Menor que 8 Venda o carro! Entre 8 e 14 Econômico maior que 14 Super econômico
20 CAPÍTULO 3. ESTRUTURAS CONDICIONAIS E DE SELEÇÃO
- Leia a nota e o número de faltas de um aluno e escreva seu conceito de acordo com a tabela 3.3.
Tabela 3.3: Conceitos com relação a notas e faltas. Nota (^) Até 20 faltasConceito Acima de 20 faltas 9.0 até 10.0 A B 7.5 até 8.9 B C 5.0 até 7.4 C D 4.0 até 4.9 D E 0.0 até 3.9 E E
- Leia a idade e o tempo de serviço de um trabalhador e escreva se ele pode ou não se aposentar. As condições para aposentadoria são:
- Ter pelo menos 65 anos de idade.
- Ou ter trabalhado pelo menos 30 anos.
- Ou ter pelo menos 60 anos e ter trabalhado pelo menos 25 anos.
- Um programador iniciante resolveu fazer um programa que receba um número inteiro de 1 a 7 correspondendo a um dia da semana (1=domingo, 2=segunda-feira, etc). O programa deve mostrar no nome do dia da semana. O programador decidiu usar uma estrutura de seleção (switch-case) porém, ele esqueceu de incluir os comandos break ao nal de cada case. Qual será o comportamento deste programa?
- Faça um programa que uma opção e três valores e calcule uma média correspondente a uma das seguintes opções:
- A = média aritmética.
- P = média ponderada com pesos 1, 2 e 3 para o primeiro, segundo e terceiro valor, respectivamente.
- G = média geométrica.
- H = média harmônica.
O programa deve aceitar as opções tanto em caracteres maiúsculos como minúsculos. O programa deve exibir uma mensagem de erro caso a opção escolhida seja inválida.
- Leia uma data e determine se a data fornecida é válida. Lembre-se que o mês de fevereiro tem 29 dias em anos bissextos.