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