Funções

Olá pessoal, começarei uma serie de posts diferentes dos anteriores, estes novos serão destinados a todos que estão procurando exercícios  básicos e avançados sobre lógica e programação em linguagem C e  principalmente para o pessoal da Fatec Americana que estão fazendo a matéria Programação 2 com o professor Carrilho e querem ver a resolução de alguns exercícios e se prepararem para as “provinhas” dele, que não são nada fáceis e exigem muito estudo e dedicação.

Abaixo os exercícios sobre funções e suas resoluções.

1. Faça uma função em C que recebe como parâmetro um número inteiro e calcula o seu fatorial, retornando este valor. 

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
int fatorial(int n)
{
       int fat, total=1;
       for(fat=1;fat<=n; fat++){
               total*=fat;
       }
       return (total);          
}
main(){
       int n;
       printf("Informe o numero a ser calculado o N!:" );
       scanf("%d",&n);      
       printf("\n\nO N! de %d eh: %d", n, fatorial(n)); 
       getch(); 
} 
 

2. Escreva uma função em C que recebe três parâmetros (peso, altura e sexo) e verifica se a pessoa está acima do peso ideal. Deve-se pegar o peso dividido pelo quadrado da altura. Se o valor (índice de massa corporal – IMC) estiver acima de 25 a pessoa está acima do peso.

#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
float calcula (float peso, float altura, char sexo[1])
{
   float imc;
   imc=peso/(altura*altura);
   return(imc);
}
main()
{
      float peso, altura,imc;
      char sexo[1];
      printf("Digite o peso: ");
      scanf("%f",&peso);
      printf("\n\nDigite a altura: ");
      scanf("%f",&altura);
      printf("\n\nDigite o sexo: (f = feminino / m = masculino) ");
      scanf("%s",&sexo);     
      imc=calcula(peso,altura,sexo);  
      if(imc>25)
      {
          printf("\n\nVoce esta acima do peso, seu imc eh: %5.3f", imc);
      }else{
          printf("\n\nParabens!! Seu imc eh: %5.3f", imc);
      }
      getch();     
}

3. Escreva uma função em C que recebe um vetor de notas de alunos e seu tamanho e imprime a maior e menor nota bem como a média desta turma.

#include<conio.h>
#include<stdio.h>
#define alunos 100
void calcula (float notas[], int tam)
{
      int i;
      float maior=0, menor, media=0;
      menor=notas[1];
      for(i=0; i<tam; i++)
      {
             media = media + notas[i];
             if(notas[i]>maior)
             {
                       maior=notas[i];
             }
                       if(notas[i]<menor)
             {
                       menor=notas[i];      
             }
      }
      media=media/tam;
      printf("\n\n A media das notas eh: %5.3f", media);
      printf("\n\n A maior nota eh: %5.3f", maior);
      printf("\n\n A menor nota eh: %5.3f", menor);     
} 
int main()
{
      int i, tam;
      float notas[alunos];     
      printf("Digite quantos alunos: ");
      scanf("%d",&tam);  
      for(i=0; i<tam; i++)
      {
               printf("Digite a nota do aluno %d : ", i+1);
               scanf("%f",&notas[i]);              
      }
      calcula(notas, tam);      
      getch();  
}

4.Escreva uma função que recebe três números inteiros(A, B e C) e ordena esses elementos, retornando esses elementos em ordem crescente (A <= B <= C).

#include <conio.h>
#include <stdio.h>
void ordenar(int a=0, int b=0, int c=0)
{
   int aa, bb, cc;
   if(a<b && a<c)
   {
          a=aa;
          if(b<c)
          {
                  b=bb;
                  c=cc;
          }
   }
   printf("\n%d", aa);
   printf("\n%d", bb);
   printf("\n%d", cc);
}
main()
{
    int a,b,c;
    printf("Informe o nr1: ");
    scanf("%d",& a);
    printf("\nInforme o nr2: ");
    scanf("%d",& b);
    printf("\nInforme o nr3: ");
    scanf("%d",& b);
    ordenar(a,b,c);
    getch();
}

5. Defina uma função que recebe o inteiro N e calcula a seguinte somatória : 1/ 2 + 1/ 4 + 1/ 8 + … + 1/ 2n

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
void calc (int x){
     int i;
     float soma=0;
     for(i=1;i<=x;i++)
     {
             soma=soma+(1.0/pow(2,i));
    }
    printf ("A soma e: %f", soma);
}
int main () {
      int n;
      printf ("Digite um numero: ");
      scanf ("%d",&n);
      calc(n);  
      getch();
}

6. Escreva uma função que imprime os N primeiros elementos da seguinte seqüência de progressão aritmética: 1 && 5 && 9 && 13 …

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void pa(int n)
{
     int i, j=1;
     for(i=0;i<n;i++)
     {                   
           printf("%d && ", j);
            j=j+4;    
    }   
}
main()
{
   int n;
   printf("Digite um número: ");
   scanf("%d",&n);
   pa(n);
   getch();           
}

7. Faça uma função que imprima n elementos de uma PG que inicia-se com 2 e a razão é 3, isto é, imprima a seqüência: 2, 6, 18, 54, …

#include<conio.h>
#include<stdio.h>
void pg(int n)
{
     int i;
     printf("2 ");
     for(i=3; i <n+2; i++)
     {
         printf(" %d ", i*3);         
     }
}
main(){
      int n;
      printf("Digite quantos elementos seram impressos: ");
      scanf("%d",&n);
      pg(n);   
      getch();
}

8. Construa uma função que recebe um número N e imprime a seqüência definida : 1 – 2 – 3 – 4 – … – n.

#include<conio.h>
#include<stdio.h>
void seq(int n)
{
    int i;
    for(i=1; i<n+1; i++)
    {
        printf("- %d ", i);       
    }    
}
main(){
  int n;
  printf("Digite os quantos numeros: ");
  scanf("%d",&n);
  seq(n);
  getch();     
}

9. Faça uma função que calcule o produtório dos elementos de um vetor. A função deve receber o vetor e seu tamanho como parâmetros.

#include<conio.h>
#include<stdio.h>
#define tam 100
float produto(int lista[], int n)
{
     int i;
     float prod=1;
     for(i=0; i<n; i++)
    {
          prod*= lista[i];
     } 
     return (prod);       
}
main(){
     int lista[tam], n, i;
     printf(" Digite o tamanho do seu vetor: \n");
     scanf("%d",&n);
     for(i=0; i<n; i++)
     {
          printf(" Digite o %d nr: ", i+1);
          scanf("%d",&lista[i]);     
     }  
     printf("\n\n O produto é: %5.2f",produto(lista, n));
     getch();      
}

 10. Escreva uma função que recebe um vetor de inteiros e ordena esses elementos em ordem crescente.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define tam 100
void ordena_cresc (int n, int cresc[] ){
    int aux,i,j;
    for(i=0;i<n;i++){
       for(j=i+1;j<n;j++){           
         if (cresc[i] > cresc[j]){
            aux= cresc[i];
            cresc[i] = cresc[j];
            cresc[j]=aux;
         }
     }
}
   for(i=0;i<n;i++){
       printf("%d", cresc [i]);
   }
}
int main () {
     int i, cresc[tam], n;
     do {
          printf ("Digite a quantidade de numeros:");
          scanf ("%d",&n);
     } while ((n<0) || (n>100));
     for(i=0;i<n;i++){
     printf ("\nDigite um numero: ");
     scanf ("%d",&cresc[i]);
}
ordena_cresc(n, cresc);
     getch();
}

11. Escreva uma função que receba 3 matrizes (A, B, C) e duas dimensões (numero de linhas e numero de colunas equivalentes para as três matrizes). Sua função deve somar as matrizes A e B e armazenar o resultado na matriz C.

#include<conio.h>
#include<stdio.h>
#define l 50
#define c 50
int somar (int matrizA[][col], int matrizB[][col],int matrizC[][col], int lin, int col)
{
    int i, j;
    for(i=0;i<lin;i++)
   {
         for(j=0;j<col;j++)
         {
                 matrizC[i][j]=matrizA[i][j]+matrizB[i][j];
                 printf("  %d",&matrizC[i][j]);
         }
   }  
}
main()
{
int matrizA[l][c], matrizB[l][c], matrizC[l][c], lin, col, i, j;
printf("Digite o numero de linhas: ");
scanf("%d",&lin);    
printf("\nDigite o numero de colunas: ");
scanf("%d",&col);
for(i=0;i<lin;i++)
{
         for(j=0;j<col;j++)
         {
                printf("\nDigite o valor para a matriz A (%dx%d): ", i,j);
                scanf("%d",&matrizA[i][j]);
         }
}
for(i=0;i<lin;i++)
{
         for(j=0;j<col;j++)
         {
                  printf("\nDigite o valor para a matriz B (%dx%d): ", i,j);
                 scanf("%d",&matrizB[i][j]);
          }
}
 for(i=0;i<lin;i++)
 {
         for(j=0;j<col;j++)
         {
                 printf("\nDigite o valor para a matriz C (%dx%d): ", i,j);
                 scanf("%d",&matrizC[i][j]);
         }
  }  
  somar(matrizA[col],matrizB[col],matrizC[col],lin,col); 
  getch();      
}

12. Escreva uma função que recebe uma string (str) e um caracter qualquer (car) e retorna a primeira posição da string onde este caracter está armazenado ou retorna -1 se o caracter não estiver na string.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
int cal (char palavra[], char car){
     int i;
     for(i=0;i<strlen(palavra);i++){
           if (palavra[i]==car)
           {
                 return (i);            
           }                        
     }
     return (-1);
}         
int main(){
     char palavra[101];
     char car;
     printf ("Digite uma palavra:");
     scanf ("%s",&palavra);
     printf ("Digite um caracter:");
     fflush (stdin);
     scanf ("%c",&car);
     printf ("A posicao eh:%d",cal(palavra,car));
     getch();
} 

Até o próximo post que terá  exercícios mais avançados, preparem-se.

Abraços

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 155 other followers