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",¬as[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



