Funções

  1. $ \bigstar\bigstar$ Escreva uma função desenhaQuadrado que exibe um quadrado sólido (o mesmo número de linhas e colunas). O caracter utilizando para preencher o quadrado e o valor do lado são passados como argumentos para a função. Por exemplo, se o caracter for x e o valor do lado for 5, a função deverá exibir

    xxxxx

    xxxxx

    xxxxx

    xxxxx

    xxxxx

    Solução: FCDesenhaQuadrado.c

  2. $ \bigstar$ Escreva um programa para obter três notas e que calcule e exiba a sua média. Use uma função para o cálculo da média.

    Solução: FCMediaNotas.c

  3. $ \bigstar$ Crie uma função que converta graus para radianos e outra função que converta radianos para graus. Fazer um aplicativo para testar as funções.

  4. $ \bigstar$ Escreva a função void somaInteiros(int a, int b, int c), que soma os três valores passados como argumento e imprime o resultado da soma na tela. Faça um programa que chame a função somaInteiros dentro da função principal.

  5. $ \bigstar\bigstar$ Escreva uma função para verificar se a raiz quadrada de um número inteiro é exata ou não.

    SOLUçãO: FCTESTARAIZQUADRADA.C.

  6. $ \bigstar\bigstar$ (Prova EST/2010-1) Escreva um programa em C que contenha uma função chamada tamanho que calcula o número de caracteres de uma palavra digitada pelo usuário. O usuário poderá digitar uma palavra com no máximo 20 caracteres. O programa deverá, usando a função tamanho, imprimir o número de caracteres da palavra digitada pelo usuário.

  7. $ \bigstar\bigstar$ (Prova EST/2010-1) Explique a(s) finalidade(s) do comando return em um programa em C?

  8. $ \bigstar\bigstar\bigstar$ (Prova EST/2010-2) Escreva um programa na linguagem C para receber um número N, inteiro, digitado pelo usuário. Caso o número digitado seja ímpar e menor que 10, imprimir o fatorial desse número. O cálculo do fatorial deve ser feito por uma função, que recebe o valor digitado por parâmetro e retorna o valor do fatorial calculado. Caso N seja par e maior ou igual a dez, passar esse valor para outra função por parâmetro e calcular e retornar a soma dos inteiros de 1 a N. Imprimir o valor retornado pela função.

    Solução: FCFatorialPares.c

  9. $ \bigstar\bigstar$ Escreva uma função que calcula o número de arranjos de n elementos tomados p a p. A fórmula do arranjo é a seguinte:

    $\displaystyle A^{n}_{p} = \dfrac{n!}{(n-p)!}$ (0.21)

  10. $ \bigstar\bigstar$ Escreva uma função que calcula o número de combinações de n elementos tomados p a p. A fórmula da combinação é a seguinte:

    $\displaystyle C^{n}_{p} = \dfrac{n!}{p!(n-p)!}$ (0.22)

  11. $ \bigstar$ Escreva um programa que tenha uma função para calcular o fatorial de um número.

    Solução: FCCalculoFatorial.c

  12. $ \bigstar\bigstar$ Criar um algoritmo que leia um valor. A seguir, faça duas rotinas, uma para calcular o fatorial do valor lido e outra que retorna quantos divisores o valor possui. No programa principal deve-se chamar a função fatorial e imprimir uma mensagem dizendo se o valor lido é primo ou não.

  13. $ \bigstar$ Escreva uma função para verificar se um número é primo.

    Solução: FCTestaPrimo.c

  14. Escreva uma função que, dado n, devolva a soma 1 + 2 + 3 + n. Invoque esta função a partir da função principal.

  15. Escreva um programa que pede dois inteiros ao usuário e permite que o usuário escolha qual a operação a executar com esses dois inteiros: (1) soma, (2) subtração, (3) multiplicação e (4) divisão. Cada uma das operações deve ser implementada numa função separada e toda a comunicação com o utilizador deve ser feita na função principal.

  16. Um número é dito regular se sua decomposição em fatores primos apresenta apenas potências de 2, 3 e 5. Faça uma função que verifique se um número é ou não regular.

  17. Fazer uma função que receba um caractere como parâmetro e retorne verdadeiro caso o caractere seja uma consoante, e falso caso contrário.

  18. Um número é capicua quando ele não muda se lido da esquerda para direita ou da direita para esquerda. Por exemplo, o ano 2002 é um ano capicua. Escreva uma função que verifique essa característica. A função deve retornar um valor booleano.

  19. $ \bigstar\bigstar\bigstar$ Escreva uma função que recebe um número inteiro como parâmetro e retorna este número escrito ao contrário. Exemplo: 782 -> 287.

    SOLUçãO: FCINVERSORNUMEROS.C.

  20. $ \bigstar\bigstar$ Escreva uma função que recebe um número inteiro como parâmetro e imprime este número escrito ao contrário. Exemplo: 782 -> 287.

    SOLUçãO: FCIMPRIMEINVERSORNUMEROS.C.

  21. Dizemos que um número inteiro é perfeito se a soma dos seus fatores, incluindo 1, mas não incluindo o próprio número, é igual ao número. Por exemplo, 6 é um número perfeito, pois 6 = 1 + 2 + 3. Escreva uma função perfeito que determina se o seu parâmetro numero é um número perfeito. Utilize essa função em uma aplicação que determina e exibe todos os números perfeitos entre 1 e 1000. Exiba os fatores de cada número confirmando que o número é de fato perfeito.

  22. Escreva um algoritmo contendo funções para realizar as seguintes operações:

  23. Faça uma função para converter uma temperatura em graus Fahrenheit para Celsius. A temperatura em Fahrenheit é o dado de entrada e a temperatura em Celsius é o dado de saída. Utilize a fórmula C = (F - 32) * 5/9, onde F é a temperatura em Fahrenheit e C é a temperatura em Celsius.

  24. Faça uma função que calcule a hipotenusa. Os catetos são os dados de entrada e a hipotenusa é o dado de saída. Utilize a fórmula hipotenusa = sqrt(sqr(catetoA) + sqr(catetoB)), onde sqrt significa a raiz quadrada e sqr o quadrado de um número.

  25. Faça uma função que receba três valores como entrada e retorne verdade (um valor diferente de zero) se esses valores formarem um triângulo, e falso (o valor zero) caso contrário. Observação: três valores formam um triângulo se cada um dos valores for menor que a soma dos outros dois valores.

  26. Um número n é primo caso ele não seja divisível por nenhum outro número que esteja no intervalo [(n-1) .. 2]. Ou seja, 5 é um número primo porque ele não é divisível pelos valores 4, 3 e 2. Por outro lado, 8 não é primo pois ele é divisível por 4 e 2. Crie um procedimento e uma função que receba um número n como entrada e retorne verdade (verdade) caso n seja um número primo e falso caso contrário.

  27. Faça uma função que receba um vetor v, o número n de elementos do vetor v e um valor x. Retorne verdade caso x for igual a algum dos elementos de v, e falso caso contrário.

  28. $ \bigstar\bigstar$ (Prova EST/2012-2) Escreva um programa em C que tenha uma função que receba um vetor v (inteiros), a quantidade (n) de elementos do vetor v e um valor x (também inteiro). Essa função deverá retornar 1 se o valor x for igual a algum elemento do vetor e deverá retornar 0, caso não ocorra essa coincidência. No programa principal o usuário irá preencher o vetor e digitar o número que será pesquisado. Considere que o vetor terá 5 elementos. Utilize a função criada para confirmar se x existe ou não no vetor.

    SOLUçãO: FCFUNCAOPROCURAVALOR.C.

  29. Faça uma função que receba um número como entrada e retorne o módulo deste número.

  30. Faça uma função que receba um número como entrada e retorne verdade caso este número for par, e falso caso contrário.

  31. $ \bigstar$ Implemente 3 funções que façam a leitura da idade, peso e altura de uma pessoa e repasse estes dados à função main (principal). A partir da função main (principal), você deve chamar uma quarta função que imprima a idade e o Índice de Massa Corporal desta pessoa (IMC = peso / (altura)2 ) .

    SOLUçãO: FCLEITURASIMC.C.

  32. Implemente uma função para calcular a média de um aluno. Ele deve ler os valores na função main, mas fazer o cálculo da média em uma função externa. A impressão da média também deve ser feita na função externa. Média = (2P1 + 2P2 + T)/5 .

  33. Crie uma função float round(float r) que faça o arredondamento de números reais. Por exemplo: 5 = round (5.4), 7 = round(6.5).

  34. Faça um programa que inverta a ordem de cada palavra de uma frase digitada pelo usuário.

  35. Escreva um programa que leia um vetor gabarito de 10 elementos. Cada elemento de gabarito contem um numero inteiro 1, 2, 3, 4 ou 5 correspondente as opções corretas de uma prova objetiva. Em seguida o programa deve ler um vetor resposta, também de 10 elementos inteiros, contendo as respostas de um aluno. O programa deve comparar os dois vetores e escrever o numero de acertos do aluno.

  36. $ \bigstar\bigstar$ Escreva uma função int min_vet(float v[]) que receba um vetor e que retorne o índice do menor elemento deste vetor.

  37. $ \bigstar$ Escreva a função Potencia, que recebe uma base e um expoente e calcule o valor da base elevado ao expoente. O expoente é sempre maior ou igual a zero, e os números são sempre inteiros.

    SOLUçãO: FCPOTENCIA.C.

  38. $ \bigstar$ Escrever um programa que testa uma função chamada multiplos que determina para um par de números inteiros, se o segundo é múltiplo do primeiro. A função deve ter dois argumentos e retornar 1, se o segundo for múltiplo do primeiro, ou 0 caso contrário.

  39. $ \bigstar$ Escrever uma função Min(a, b) que retorna o menor entre dois valores inteiros. Considere que serão digitados dois valores distintos.

  40. $ \bigstar$ Escrever uma função Max(a, b) que retorna o maior entre dois valores inteiros. Considere que serão digitados dois valores distintos.

  41. Construir um programa que utiliza uma função recursiva verifPalid que verifica se uma string é Palídroma ou não.

  42. Faça uma função que recebe um valor inteiro e verifica se o valor é positivo ou negativo. A função deve retornar um valor booleano.

  43. Escreva uma função que recebes 3 valores reais X, Y e Z e que verifique se esses valores podem ser os comprimentos dos lados de um triângulo e, neste caso, retornar qual o tipo de triângulo formado. Para que X, Y e Z formem um triângulo é necessário que a seguinte propriedade seja satisfeita: o comprimento de cada lado de um triângulo é menor do que a soma do comprimento dos outros dois lados. O procedimento deve identificar o tipo de triângulo formado observando as seguintes definições:

    Triângulo Equilátero: os comprimentos dos 3 lados são iguais.

    Triângulo Isósceles: os comprimentos de 2 lados são iguais.

    Triângulo Escaleno: os comprimentos dos 3 lados são diferentes.

  44. Escreva um programa que leia um inteiro não-negativo n e imprima a soma dos n primeiros números primos.

    Solução: FCImprimeNPrimos.c

  45. Faça uma função que recebe um vetor X(15) de inteiros , por parâmetro, e retorna a quantidade de valores pares em X.

  46. Faça uma função para verificar se a raiz quadrada de um número inteiro é exata ou não.

  47. Faça uma função que receba uma matriz quadrada de inteiros, o número de linhas ou colunas (dimensão da matriz) e retorne o maior elemento da matriz.

  48. Faça uma função que receba um vetor v, o número n de elementos do vetor e um valor x. Retorne verdadeiro se o valor de x está no vetor v, senão retorne falso se o valor de x não estiver no vetor v.

  49. Escreva uma função que leia dois vetores de inteiros, de qualquer tamanho, e imprima todos os valores que estejam presentes (comuns) nos dois vetores.

  50. Faça uma função que receba uma palavra de até 100 caracteres e imprima o número de aparições de uma letra escolhida pelo usuário.

    Solução: FCContaCaracteres.c

  51. Escreva uma função que receba um vetor de inteiros não ordenados e um valor inteiro que será pesquisado no vetor. A função deve retornar o elemento do vetor que está mais próximo do valor inteiro. É possível que haja mais de um elemento que esteja com igual proximidade do elemento pesquisado. Se for necessário, a função pode ser receber também o tamanho do vetor como parâmetro (válido para implementações em C). Se o vetor estivesse ordenado, haveria diferença na implementação? Haveria alguma vantagem? Reflita sobre isso.

  52. Escreva uma função que leia um vetor de inteiros ordenados de forma não decrescente e que imprima somente os números que não sejam repetidos.

  53. Faça uma função para ler um vetor. Este procedimento deve receber o número de elementos do vetor e retornar o vetor lido. Faça também um procedimento para mostrar os elementos de um vetor. Este procedimento deve receber o vetor e o número de elementos deste vetor. Faça um algoritmo e um programa que leia 2 vetores A (com 5 elementos) e B (com 5 elementos) utilizando o procedimento de leitura de vetor. O algoritmo/programa deverá fazer com que o vetor C receba os elementos do vetor A multiplicados pelos elementos correspondentes do vetor B. Por fim o algoritmo/programa deverá chamar o procedimento que mostra os elementos de um vetor para mostrar os elementos dos vetores A, B e C.

  54. Escreva uma função int remove_dup(float v[], int n) receba um vetor e verifique a existência de elementos duplicados. Caso não existam elementos duplicados retorne zero. Caso existam, remova estes elementos (deixando apenas um) e retorne o número de elementos removidos.

  55. Escreva uma função void insert(float v[], int n, float valor, int pos) que faça a inserção de valor na posição pos do vetor v, deslocando os demais elementos.

  56. $ \bigstar\bigstar$ Crie um vetor de caracteres e um vetor de inteiros, ambos de 200 posições. No vetor de caracteres, só é possível haver 3 caracteres diferentes os quais representam três operações, que são média (m), somatório(s) e fatorial (f). Faça três funções, uma para cada operação:

    Média: Lê um numero inteiro e retorna a média aritimética dos divisores desse numero;

    Soma: Lê um numero inteiro e retorna somatório dos divisores desse numero;

    Fatorial: Lê um numero inteiro e retorna fatorial desse numero;

    Faça um programa que leia o elemento n do vetor de caracteres e conforme o seu tipo (m,s ou f), deve chamar uma dentre as três funções acima (utilize seleção multipla - switch), passando como parâmetro o elemento n do vetor de inteiros. O resultado deve ser adicionado em um terceiro vetor de reais.

    SOLUçãO: VMFUNCOESDIVERSAS.C.

  57. $ \bigstar$ Faça uma função que crie uma matriz 7x8 onde cada elemento é a soma dos índices da sua posição dentro da matriz.

  58. $ \bigstar$ Escreva uma função que receba como parâmetro o raio e a altura para calcular o volume de um cilindro.

  59. $ \bigstar\bigstar$ Desenvolva a função conversaoBin que receba N, um número inteiro, e retorne o valor correspondente em binário.

  60. $ \bigstar\bigstar\bigstar$ Segundo a conjectura de Goldbach, qualquer número par maior que dois pode ser escrito como a soma de dois números primos.

    Exemplos: 8 = 3 + 5, 16 = 11 + 5, 68 = 31 + 37

    Construa uma função que tome como entrada N números pares e, para cada número, faça outra função para imprimir um par de números primos cuja soma soja igual ao próprio número.

  61. $ \bigstar\bigstar\bigstar$ Faça um função que receba uma matriz 25 por 25 e determine se essa matriz é esparsa. Matriz esparsa é um matriz que tem aproximadamente 2/3 de seus elementos iguais a zero. Com outra função gere um matriz condensada, de apenas três colunas, com os elementos não nulos da matriz lida, de forma que:

    Finalize com uma função que escreva a matriz lida e a matriz condensada.

  62. $ \bigstar\bigstar$ Construa um função que receba uma matriz A de ordem N por M, determine o elemento "minimax", bem como a sua posição. Elemento "minimax" é o elemento de menor valor da linha em que se encontra o maior elemento da matriz.

  63. $ \bigstar\bigstar$ No programa principal leia 50 valores reais e os armazene em um vetor. Modifique através de uma função que recebe o vetor lido, e faça o vetor de modo que os valores das posições ímpares sejam aumentados em 5%, e os das posições pares sejam aumentados em 2%. Imprima depois o vetor resultante.

  64. $ \bigstar\bigstar$ (Prova EST/2012-2) Escreva uma função em C que receba uma string como parâmetro e retorne a quantidade de vezes que a letra b aparece. É necessário escrever apenas a função.

    SOLUçãO: FCCONTALETRAB.C.

  65. $ \bigstar\bigstar$ (Prova EST/2013-2) Escreva uma função em C chamada contaPrimos que receba um vetor de 10 inteiros e que retorna a quantidade de números primos que existem nesse vetor. Deve-se escrever apenas a função.

    SOLUçãO: FCTESTAVETORPRIMOS.C.

  66. $ \bigstar\bigstar$ (Prova EST/2013-2) Escreva uma função em C chamada replace que aceita uma string como argumento. A função substitui todos os espaços em branco do seu parâmetro pelo caracter -. O espaço em branco é considerado como um caracter especial. Deve-se escrever apenas a função.

    SOLUçãO: FCSUBSTITUIESPACOS.C.

Tiago Eugenio de Melo 2014-03-31