Vous êtes sur la page 1sur 3

Lista de Exercícios para o Curso de C.

Esta lista de exercícios é indicada para quem está começando a programar em alguma linguagem de
programação. O que importa aqui é a lógica em si, e não a linguagem, porém para resolver os
exercícios você deverá ter conhecimentos de funções, arrays, estruturas condicionais e registros.
Antes de digitar seu código procure responder à mão, usando papel e caneta. Tente personificar o
computador, pois dessa forma você terá uma noção exata do que seu código irá exercer, facilitando
a detecção de possíveis erros.

00 – (Aquecimento) Sem usar nenhuma função auxiliar, faça uma função que receba um número
inteiro e retorne sua raiz quadrada exata. Logo depois faça outra função, baseada na primeira, que
retorne a raiz cúbica.

01 – Faça uma função que receba um vetor de 5 inteiros. Sua função terá que colocar todos os
números do vetor ordenados de forma crescente, ou seja, depois que a função terminar a execução
x[0] possuirá o menor valor e x[4] terá o maior valor.

02 – Faça uma função que receba uma matriz de inteiros com o tamanho 3x5 e um outro inteiro X.
Sua função deverá percorrer a matriz até encontrar um valor igual a X, e, caso encontre, deverá
retornar a soma do valor anterior e posterior à posição em que foi encontrado X. Caso X não esteja
contido na matriz a função deverá retornar 0.
OBS: Se X for encontrado em matriz[0][0], considere o anterior como 0. Caso seja encontrado em
matriz[2][2], considere o posterior como 0.

03 – Usando as funções das questões anteriores, ordene cada linha da matriz usando a função da 1ª
questão e depois chame a função da 2ª questão para retornar a soma do elemento anterior e posterior
ao elemento X.

04 – Pilhas são estruturas de dados amplamente usadas na informática. Programas feitos em


linguagem C se comportam de forma semelhante às pilhas em sua execução. O conceito é bastante
simples, basta imaginar uma pilha de pratos. Numa pilha de pratos você só pode inserir ou retirar o
prato que está no topo, caso contrário você derrubaria todos os pratos da pilha... Baseado nisso, faça
um vetor de 10 registros que contenham os dados Nome e Idade. Após criar o vetor de registros,
faça funções que sejam capazes de empilhar e desempilhar outros registros de mesmo tipo.
OBS: Em ambas as funções faça verificações na quantidade de elementos. Obviamente, se as 10
posições estiverem ocupadas, só será possível desempilhar, enquanto que se não tiver nenhuma
posição ocupada só será possível empilhar.

05 – Faça uma função que receba uma matriz 2x3 e outra matriz 3x2, ambas de inteiros. Sua função
terá que realizar a multiplicação das duas matrizes (tal como ocorre na matemática) e retornar a
matriz resultante de tamanho 2x2.

Uma “fórmula geral” para a multiplicação de matrizes é dada por:

Sua função fará algo parecido com isso:


06 – Faça uma função que receba uma string e retorne o número exato da quantidade de anagramas
que a string pode gerar. Se a string tiver mais que 10 caracteres retorne -1, indicando erro.

Anagramas são palavras geradas a partir de um rearranjo das letras da palavra original. Por
exemplo: XELA é um dos possíveis anagramas da palavra ALEX. Para se calcular a quantidade de
anagramas basta fazer o fatorial do número de letras totais dividido pela multiplicação dos fatoriais
das repetições de cada letra.

Exemplo: ALEX tem 24 anagramas, pois 4!/0! = 24/1 = 24


CASA tem 12 anagramas, pois 4!/2! = 24/2 = 12
PALAVRA tem 840 anagramas, pois 7!/3! = 5040/6 = 840
ADICIONAL tem 90720 anagramas, pois 9!/(2!x2!) = 362880/(2x2) = 362880/4 = 90720

07 – Faça uma função recursiva que calcule o enésimo número da sequencia Fibonacci. Para
calcular o enésimo número basta fazer a soma dos dois números anteriores.
Por exemplo: Qual o quinto número da sequencia Fibonacci?
O quinto número é a soma do terceiro número com o quarto número da sequência.

A sequencia tem como primeiro e segundo números o número 1, ou seja, os 10 primeiros números
da sequência são: 1 1 2 3 5 8 13 21 34 55...

Após fazer a função, coloque os 25 primeiros números em uma pilha. Faça uma adaptação na
função da questão 4 para isso.

08 – Crie um registro com os seguintes dados: Matriz de 5x5 inteiros, Vetor de 5 inteiros, String de
5 caracteres. Faça uma função que receba esse registro e que peça ao usuário digitar valores para
preencher somente a matriz. Faça outra função que receba o registro, e que pegue os maiores
valores de cada linha e atribua em cada posição do vetor. Faça outra função que receba o mesmo
registro e que pegue os menores valores de cada linha e atribua em cada caractere da string.

Logo depois faça outra função que exiba na tela os dados do registro de forma organizada na tela.

09 – Faça uma função main que use todas as funções criadas anteriormente. :)
DESAFIO
Você foi contratado para fazer um sistema de uma loja de carros usados. O gerente lhe mandou
fazer um sistema que controlasse a entrada e saída de carros da loja. Cada carro terá que ter suas
características salvas para consulta posterior. Além de gerenciar entrada e saída de carros da loja,
você também terá de fazer um pequeno “caixa” para mostrar os ganhos e as perdas para cada
transação realizada.

Ou seja, o menu do seu software terá as seguintes opções:


• Cadastrar um novo veículo
Inserir as características (Cor, Ano, Modelo, Marca, Valor, Multas)
• Saída de Veículo
Dados da transação (Nome do cliente, Endereço do Cliente,Valor pago)
• Saldo do Caixa
Dados de entrada e saída de dinheiro (Qtde de Vendas, Saldo do Dia, Saldo Geral)

Lembre que seu gerente é louco e pode comprar infinitos carros para deixa-los a venda, então seria
prudente não haver limites na quantidade de dados que seu programa armazena. E claro, os carros
não esgotam no final do dia, então você precisa criar uma pequena base de dados para que quando a
loja abrir no próximo dia não ser preciso recadastrar todos os carros da loja...

Para resolver este desafio você terá que estudar por conta própria os seguintes assuntos:
• Ponteiros
• Alocação Dinâmica
• Entrada e Saída de dados em Arquivo

Boa Sorte :)

Autor: Alex Ferreira


Email: aferreira91@gmail.com
Twitter: http://www.twitter.com/AlexFRT

Vous aimerez peut-être aussi