Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Exercícios de Linguagem C: Funções, Recursividade, Ponteiros e Vetores - Prof. Freire da S, Exercícios de Programação em C

Todos exercícios para engenharia elétrica de programação

Tipologia: Exercícios

2021

Compartilhado em 17/07/2021

space-mobile
space-mobile 🇧🇷

1 documento

1 / 7

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Exercício – Linguagem C
Responda às questões a seguir.
Funções
1. Implementar a função INVERTE que recebe um número unsigned int como parâmetro e retorna
este número escrito ao contrário. Ex: 431 <-> 134.
2. Implementar a função doublé POWER (double base, doublé expoente), que retorna o valor de
base elevado a expoente. Dicas:
a. Transformar o expoente em uma razão de inteiros (multiplicando ambos por 10 até o
numerador ficar inteiro).
b. Simplificar a razão de inteiros com sucessivas divisões de numerador e denominador.
c. Calcular basenumerador
d. Calcular (basenumerador)1/denominador . Utilizar a função de raiz anteriormente
implementada.
e. Se basenumerador estourar a faixa dos doublé, dividir numerador e denominador por 10 e
repetir.
f. Se numerador for negativo, resultado é 1/resultado.
3. Fazer uma função que recebe um mês e um ano como parâmetros e retorna o número de dias
daquele mês daquele ano. Dica: um ano é bissexto quando é múltiplo de 4 e não múltiplo de 100,
ou também quando é múltiplo de 400.
4. Faça uma função que recebe, por parâmetro, a hora de inicio e a hora de término de um jogo,
ambas subdivididas em 2 valores distintos: horas e minutos. A função deve retornar, a duração do
jogo em minutos, considerando que o tempo máximo de duração de um jogo é de 24 horas e que
o jogo pode começar em um dia e terminar no outro.
Recursividade
5. Escreva a função para cálculo do N-ésimo termo da série de Fibonacci utilizando recursividade.
6. Implementar a função EXP com as seguintes características:
a. Recebe um valor de base e um valor de expoente como parâmetros do tipo unsigned int.
b. Recebe o endereço de uma variável, do tipo unsigned int, em cujo conteúdo será
armazenado o resultado de baseexpoente.
c. Retorna 1 se foi bem sucedida e 0 se a exponenciação não pôde ser calculada devido a
estouro.
d. Utiliza a característica recursiva da exponenciação:
i. Baseexp = base.baseexp-1 , exp > 0
ii. Baseexp = 1, exp ==0
7. Considere uma partida de futebol entre duas equipes A x B, cujo placar final é m x n, em que m e
n são números de gols marcados por A e B, respectivamente. Escreva um algoritmo recursivo que
imprima todas as possíveis sucessões de gols marcados. Por exemplo, para um placar final de 3 x
1, as possíveis sucessões de gols são “AAAB”, “AABA”, “ABAA” e “BAAA”.
pf3
pf4
pf5

Pré-visualização parcial do texto

Baixe Exercícios de Linguagem C: Funções, Recursividade, Ponteiros e Vetores - Prof. Freire da S e outras Exercícios em PDF para Programação em C, somente na Docsity!

Exercício – Linguagem C

Responda às questões a seguir.

Funções

  1. Implementar a função INVERTE que recebe um número unsigned int como parâmetro e retorna este número escrito ao contrário. Ex: 431 <-> 134.
  2. Implementar a função doublé POWER (double base, doublé expoente), que retorna o valor de base elevado a expoente. Dicas: a. Transformar o expoente em uma razão de inteiros (multiplicando ambos por 10 até o numerador ficar inteiro). b. Simplificar a razão de inteiros com sucessivas divisões de numerador e denominador. c. Calcular basenumerador d. Calcular (basenumerador)1/denominador. Utilizar a função de raiz anteriormente implementada. e. Se basenumerador estourar a faixa dos doublé, dividir numerador e denominador por 10 e repetir. f. Se numerador for negativo, resultado é 1/resultado.
  3. Fazer uma função que recebe um mês e um ano como parâmetros e retorna o número de dias daquele mês daquele ano. Dica: um ano é bissexto quando é múltiplo de 4 e não múltiplo de 100, ou também quando é múltiplo de 400.
  4. Faça uma função que recebe, por parâmetro, a hora de inicio e a hora de término de um jogo, ambas subdivididas em 2 valores distintos: horas e minutos. A função deve retornar, a duração do jogo em minutos, considerando que o tempo máximo de duração de um jogo é de 24 horas e que o jogo pode começar em um dia e terminar no outro.

Recursividade

  1. Escreva a função para cálculo do N-ésimo termo da série de Fibonacci utilizando recursividade.
  2. Implementar a função EXP com as seguintes características: a. Recebe um valor de base e um valor de expoente como parâmetros do tipo unsigned int. b. Recebe o endereço de uma variável, do tipo unsigned int, em cujo conteúdo será armazenado o resultado de baseexpoente. c. Retorna 1 se foi bem sucedida e 0 se a exponenciação não pôde ser calculada devido a estouro. d. Utiliza a característica recursiva da exponenciação: i. Baseexp = base.baseexp-1 , exp > 0 ii. Baseexp = 1, exp ==
  3. Considere uma partida de futebol entre duas equipes A x B, cujo placar final é m x n, em que m e n são números de gols marcados por A e B, respectivamente. Escreva um algoritmo recursivo que imprima todas as possíveis sucessões de gols marcados. Por exemplo, para um placar final de 3 x 1, as possíveis sucessões de gols são “AAAB”, “AABA”, “ABAA” e “BAAA”.
  1. Torre de Hanói: considerando 3 torres, o objetivo é transferir 3 discos que estão na torre A para a torre C, usando uma torre B como auxiliar. Somente o último disco de cima de uma pilha pode ser deslocado para outra, e um disco maior nunca pode ser colocado sobre um menor. Implementar uma função recursiva que mostra a seqüência de movimentos para resolver o problema da Torre de Hanói.

Ponteiros

  1. Fazer uma função FATORES que: a. Recebe 3 parâmetros: um vetor de inteiros, um número inteiro n passado por valor e outro número x passado como ponteiro. b. Retorna um número inteiro. c. Decompõe o número n em fatores primos e armazena-os nas posições do vetor. O conteúdo de x deve receber o número de fatores primos encontrados. Caso o número de fatores encontrados seja maior que 10, a função deve retornar 1, do contrário deve retornar 0.
  2. Fazer uma função para: a. Receber dois ponteiros para char (char*) como parâmetro e um número representando uma certa quantidade de caracteres. b. procurar, no vetor apontado pelo parâmetro 1, o primeiro caracter de espaço (‘ ‘) ou o fim de vetor (representado pela quantidade fornecida no parâmetro 3). c. copiar os caracteres anteriores ao espaço no vetor indicado pelo segundo parâmetro. d. retornar o número de caracteres copiados.
  3. Fazer um programa para: a. Receber uma frase do usuário, caracter a caracter usando getch() e armazenando no vetor (máx. 30 caracteres). Quando o usuário digita enter (‘\r’) a recepção é finalizada. b. mostrar cada palavra da frase em uma linha separada, utilizando a função do exercício 3.
  4. Fazer um programa para: a. declarar variáveis a, b, c, d do tipo int. b. declarar variáveis e, f, g, h do tipo float. c. declarar vetor v de 10 elementos do tipo char. d. declarar variável x do tipo int. e. criar um ponteiro apontando para o endereço de a. f. incrementar o ponteiro, mostrando o conteúdo do endereço apontado (em forma de número). Caso o endereço coincida com o endereço de alguma outra variável, informar o fato.
  5. Fazer uma função com as seguintes características: a. recebe dois números inteiros do usuário. b. retorna 1 se os números são iguais, 0 se são diferentes e –1 se a soma ou o produto estoura a faixa dos inteiros. Além disso, retorna a soma e o produto dos dois números. c. Fazer um programa para receber dois números do usuário, chamar a função e mostrar se os números são iguais. Além disso, mostrar sua soma e seu produto.
  6. Fazer uma função que: a. receba 3 números como parâmetros: A, B e C. b. ordene de tal forma que, ao final da função, A contenha o menor número e C o maior. c. Fazer um programa que receba 3 números do usuário, chame a função e mostre os números ordenados.

a) Construa um programa que determine a soma total entre peões ou bispos e a quantidade de posições com ausência de peças; b) Escreva outro programa que determine qual a quantidade de cada tipo de peça no tabuleiro.

  1. A distância entre várias cidades é dada pela tabela abaixo (em km): 1 2 3 4 5 1 00 15 30 05 12 2 15 00 10 17 28 3 30 10 00 03 11 4 05 17 03 00 80 5 12 28 11 80 00 a) Construa um programa que leia a tabela acima e informe ao usuário a distância entre duas cidades por ele requisitadas, até que ele entre com o código 0 para ambas as cidades; b) Elabore um programa que imprima a tabela sem repetições, isto é, se a distância entre as cidades 1 e 3 foi emitida, não é necessário emitir a distância entre 3 e 1; c) Dado um determinado percurso, imprima o total percorrido: Exemplo: dado o percurso 1, 2, 3, 2, 5, 1, 4, teremos: 15 + 10 + 10 + 28 + 12 + 5 = 80 km.
  2. Um cinema que possui capacidade de 20 lugares está sempre lotado. Certo dia cada espectador respondeu a um questionário, onde constava:
    • sua idade;
    • sua opinião em relação ao filme, que podia ser: ótimo, bom, regular, ruim ou péssimo. Elabore um programa que, recebendo estes dados calcule e mostre: a. a quantidade de respostas ótimo; b. a diferença percentual entre respostas bom e regular; c. a média de idade das pessoas que responderam ruim; d. a porcentagem de respostas péssimo e a maior idade que utilizou esta opção; e. a diferença de idade entre a maior idade que respondeu ótimo e a maior idade que respondeu ruim.
  3. Faça um programa que receba uma matriz 5x5 valores do tipo int do usuário, um valor de cada vez, e imprima a sua matriz transposta (Obs: a matriz transposta é obtida permutando-se as linhas e as colunas de uma matriz.
  4. Escreva um programa que leia uma matriz n x m do usuário e a transforme em um vetor unidimensional de n.m posições
  5. Fazer um programa para: a. receber 3 notas parciais do aluno em um vetor e a nota do exame em uma variável separada (-1 se o aluno não fez exame). b. chamar a função SITUACAO, com as seguintes características: i. Parâmetros: vetor de notas parciais e nota do exame ii. Retorno: 0 se o aluno está reprovado direto, 1 se o aluno está reprovado em exame, 2 se o aluno está aprovado em exame e 3 se ele está aprovado direto.

Strings

  1. Faça um programa que dado um nome completo, retorne a abreviatura deste nome. Não se devem abreviar as preposições como: do, de, etc. A abreviatura deve vir separada por pontos. Ex: Paulo Jose de Almeida Prado. Abreviatura: P.J.A.P.
  2. Faça um programa que dado 2 palavras, determine: a. Se as palavras são iguais; b. Caso as palavras sejam diferentes, qual delas tem maior comprimento (não esquecer a possibilidade de existirem palavras diferentes de mesmo tamanho); c. Verifique se a segunda palavra é uma sub string da primeira: Exemplo: Palavra 1= casamento Palavra 2 = casa
  3. Faça um programa onde o usuário digita 3 informações a respeito de uma pessoa: Nome, endereço e telefone. Concatene essas três informações em uma única string e faça uma contagem de quantas letras do alfabeto estão presentes nesta string (considerando as redundâncias) e também de dígitos numéricos. Os espaços e os caracteres de pontuação devem ser ignorados(as funções de contagem já fazem isso). Dica: use as funções int isalpha(char cr) e int isdigit(char cr). Exemplo: Nome: Ana Claudia Endereço: Rui Barbosa, 234 Tel: 234- Resultado: Quantidade de letras pertencentes ao alfabeto = 20. Quantidade de dígitos numéricos = 10
  4. Fazer um programa para: a. Receber uma string de no máximo 100 caracteres b. Receber uma segunda string e contar quantas vezes a segunda string ocorre dentro da primeira.
  5. Fazer um programa para: a. Receber uma string do usuário. b. Contar quantos ditongos ou hiatos existem na string c. Contar quantas duplas de letras repetidas existem na string.
  6. Fazer um programa para cadastro e diálogo de login. O programa deve: a. Cadastrar um nome de usuário via teclado. O nome de usuário tem, no máximo, 8 caracteres, sendo válidos somente os caracteres numéricos e as letras maiúsculas ou minúsculas. Somente os caracteres válidos devem ser exibidos no console durante a digitação do nome de usuário. b. Cadastrar uma senha do usuário via teclado. Esta segue as mesmas regras do nome de usuário, com a diferença de que são exibidos somente asteriscos no console à medida que a senha é digitada. c. Receber um novo nome de usuário e uma nova senha, utilizando os mesmos procedimentos descritos nos itens a e b.

c. Fazer um programa que receba dois strings do usuário, o valor da posição, chame a função anteriormente implementada e exiba o resultado ao usuário.

  1. Fazer um programa para receber uma string do usuário (máx. 50 caracteres) e fazer uma estatística dos caracteres digitados. Por exemplo, para a string "O EXERCICIO E FACIL"”, a estatística mostrada será 'O' = 2, ' '=3, 'E' = 3, 'X' = 1, 'R' = 1, 'C' = 3, 'I' = 3, 'F' = 1, 'A' = 1, 'L' = 1

Estruturas de dados

  1. Fazer um programa que receba três nomes de no máximo 15 caracteres cada um (nomes com mais de 15 caracteres devem ser rejeitados) e as idades das respectivas pessoas em um vetor de estruturas de dados. Após o recebimento, listar os 3 nomes e idades que nela foram armazenados.
  2. Fazer um programa de diálogo de login semelhante ao exercício 6 de strings, com a diferença de que é possível cadastrar no máximo 10 nomes de usuário e suas respectivas senhas (nomes de usuário repetidos devem ser descartados). No diálogo de login, o programa deve testar se o usuário fornecido existe e se a sua senha confere.

Alocação Dinâmica

  1. Fazer um programa que receba do usuário a quantidade N de números a ser digitada. Em seguida, o programa deve alocar dinamicamente um vetor de N inteiros, receber N números do usuário e armazenar no vetor, e mostrar o maior valor do vetor, o menor valor do vetor e a média dos valores.

Arquivos

  1. Implementar um programa de gerenciamento de high scores. O programa deve: a. carregar os high scores de um arquivo e mostrar. Cada high score é composto de um nome (max. 10 caracteres) e um inteiro (pontuação) b. pedir ao usuário o seu nome e a sua pontuação no jogo. c. posicionar os dados do usuário na tabela de highest scores (max. 5) e regravar no arquivo.