Buscar

Ficha Exercicios Praticos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introdução à Programação 
Cursos Técnicos Superiores Profissionais: 1º ano - 1º semestre 2015/2016 
 Pág. 1 
Ficha Prática n.º 3 
Funções em C 
Exercícios 
1. 
1.1. Implemente uma função “maior(N1, N2)” que devolva o maior de dois números inteiros passados como 
parâmetro 
 
int maior (int N1, int N2) 
{ 
if (N1 > N2) 
 return (N1); 
else 
 return (N2); 
} 
 
1.2. Escreva um programa em C que determine o maior de três números inteiros, usando a função anterior. 
 
#include<stdio.h> 
#include<math.h> 
 
int maior(int a,int b){ 
 if (a>b) 
 return a; 
 else return b; 
} 
int main(){ 
 int n1,n2,n3,m; 
 printf("Digite um numero: "); 
 scanf("%d",&n1); 
 printf("Digite outro numero: "); 
 scanf("%d",&n2); 
 printf("Digite outro numero: "); 
 scanf("%d",&n3); 
 m=maior(n1,n2); 
 m=maior(n3,m); 
 printf("O maior numero e: %d", m); 
} 
 
 Pág. 2 
2. 
2.1. Implemente uma função “imprime(N)” que imprima no ecrã a mensagem “Olá mundo!” N vezes 
 
void imprime (int N) 
{ 
 int i; 
 for (i=1;i<=N; i++) 
 printf ("Ola Mundo\n\n"); 
} 
 
2.2. Escreva um programa em C que solicite ao utilizador o número de vezes que deseja imprimir a mensagem 
e que a imprima utilizando a função anterior. 
 
#include<stdio.h> 
#include<math.h> 
 
void imprime (int N) 
{ 
 int i; 
 for (i=1;i<=N; i++) 
 printf ("Ola Mundo\n\n"); 
} 
 
int main(){ 
 int n; 
 printf("Introduza o numero de vezes que pretende imprimir a frase 'Ola 
Mundo'"); 
 scanf("%d",&n); 
 imprime(n); 
} 
3. 
3.1. Implemente uma função “media(N1, N2)” que devolva a média de dois números reais passados como 
parâmetro. 
 
float media (float N1, float N2) 
{ 
 float mediafinal; 
 mediafinal=(N1+N2)/2; 
 return (mediafinal); 
} 
 
 Pág. 3 
3.2. Escreva um programa em C que determine a média de dois números reais, usando a função anterior 
 
#include<stdio.h> 
#include<math.h> 
 
float media (float N1, float N2) 
{ 
 float mediafinal; 
 mediafinal=(N1+N2)/2; 
 return (mediafinal); 
} 
 
void main(){ 
 float n1,n2,n3; 
 float m; 
 printf("Introduza o primeiro numero -> "); 
 scanf("%f",&n1); 
 printf("Introduza o segundo numero -> "); 
 scanf("%f",&n2); 
 m=media(n1,n2); 
 printf("Media do numero %f e do numero %f -> %.3f", n1,n2,m); 
} 
 
4. Escreva um programa em C que pergunta um valor em metros e imprime o valor correspondente em 
decímetros, centímetros e milímetros. 
Utilize uma função para calcular cada medida. 
 
#include <stdio.h> 
 
float decimetro(float metro) 
 { 
 float d; 
 d=metro*10; 
 return d; 
 } 
 
float centimetro(float metro) 
 { 
 float c; 
 c=metro*100; 
 return c; 
 } 
 
float milimetro(float metro) 
 { 
 float m; 
 m=metro*1000; 
 return m; 
 } 
 
 main() 
 { 
 
 float metro, d, c,m; 
 
 printf("Introduza o valor em METROS que pretende converter -> "); 
 scanf("%f",&metro); 
 Pág. 4 
 
 printf("%.2f metro(s) eh equivalente a %.2f 
decimetro(s).\n",metro,decimetro(metro)); 
 printf("%.2f metro(s) eh equivalente a %.2f 
centimetro(s).\n",metro,centimetro(metro)); 
 printf("%.2f metro(s) eh equivalente a %.2f 
milimetro(s).\n",metro,milimetro(metro)); 
 
 } 
 
5. Escreva um programa em C que simule o funcionamento de uma calculadora. 
 
Utilize funções para cada uma das operações e para 
criar o menu. 
 
O programa só deve terminar quando o utilizador 
escolher a opção [S]. 
 
 
 
 
 
 
 
 
#include <stdio.h> 
 
void soma(float num1, float num2) 
{ 
 printf("%.2f + %.2f = %.2f", num1, num2, num1 + num2); 
} 
 
void subtrair(float num1, float num2) 
{ 
 printf("%.2f - %.2f = %.2f", num1, num2, num1 - num2); 
} 
 
void multiplicar(float num1, float num2) 
{ 
 printf("%.2f * %.2f = %.2f", num1, num2, num1 * num2); 
} 
 
void dividir(float num1, float num2) 
{ 
 if (num2==0) printf("Nao eh possivel dividir por zero"); 
 else printf("%.2f / %.2f = %.2f", num1, num2, num1 / num2); 
} 
 
float pedenumero1() 
*********** CALCULADORA EM C ********* 
 
--------------------------------- 
Escolha uma das seguintes opções: 
--------------------------------- 
[+] - Somar 
[-] – Subtrair 
[*] – Multiplicar 
[/] – Dividir 
[S] - Sair 
 
> + 
Introduza o primeiro valor: 
> 20 
Introduza o segundo valor: 
> 30 
20 + 30 = 50 
 Pág. 5 
{ 
 float num1; 
 
 printf("\nIntroduza o primeiro numero: "); 
 printf("\n> "); 
 scanf("%f",&num1); 
 return (num1); 
} 
 
float pedenumero2() 
{ 
 float num2; 
 
 printf("\nIntroduza o segundo numero: "); 
 printf("\n> "); 
 scanf("%f",&num2); 
 return (num2); 
} 
 
void menu() 
{ 
 printf("\n\n\n***************** CALCULADORA EM C *****************\n\n"); 
 printf("----------------------------------------------------\n"); 
 printf(" Escolha uma das seguintes op篥s:\n"); 
 printf("----------------------------------------------------\n"); 
 printf("[+] - Somar\n"); 
 printf("[-] - Subtrair\n"); 
 printf("[*] - Multiplicar\n"); 
 printf("[/] - Dividir\n"); 
 printf("[S] - Sair\n\n"); 
} 
 
int main() 
{ 
 char operacao; 
 int sair=0; 
 float num1, 
 num2; 
 do 
 { 
 
 menu(); 
 
 printf("> "); 
 scanf("%c",&operacao); 
 
 switch( operacao ) 
 { 
 case '+': 
 num1=pedenumero1(); 
 num2=pedenumero2(); 
 soma(num1, num2); 
 break; 
 
 case '-': 
 num1=pedenumero1(); 
 num2=pedenumero2(); 
 subtrair(num1, num2); 
 break; 
 
 case '*': 
 Pág. 6 
 num1=pedenumero1(); 
 num2=pedenumero2(); 
 multiplicar(num1, num2); 
 break; 
 
 case '/': 
 num1=pedenumero1(); 
 num2=pedenumero2(); 
 dividir(num1, num2); 
 break; 
 
 case 'S': 
 sair=1; 
 break; 
 
 case 's': 
 sair=1; 
 break; 
 
 default: 
 printf("Digitou uma operacao invalida."); 
 
 } 
 fflush(stdin); // Limpa o buffer 
 } 
 while (sair!=1); 
} 
 
 
 
 Pág. 7 
6. Escreva um programa em C que pergunta o total gasto pelo cliente de uma loja, imprime as opções de 
pagamento e imprime o valor total das prestações se existirem. 
Opções: 
 Opção 1: em dinheiro com 10% de desconto 
 Opção 2: em duas vezes (sem desconto) 
 Opção 3: entre 3 a 10 prestações com 3% de juros ao mês – apenas para compras superiores a 500 € 
Exemplo: 
 
 
 
 
 
 
 
 
 
 
 
 
 Pág. 8 
O juro simples 
O juro simples, ou seja, o juro relativo a um determinado período de tempo, corresponde ao capital a multiplicar 
pelo valor da taxa de juro nesse mesmo período. O juro simples é também definido como "juro corrido". 
fonte: 
Banco de Portugal http://clientebancario.bportugal.pt/pt-
PT/TaxasJuroCambio/TaxasdeJuro/Paginas/Jurosimplesjurocomposto.aspx#include <stdio.h> 
int escolha (float valor) { 
 int c; 
 
 printf("------------------------------------------------------------------\n"); 
 printf(" Escolha uma das seguintes opcoes de pagamento:\n"); 
 printf("------------------------------------------------------------------\n"); 
 
 printf("[1] - em dinheiro com 10%% de desconto\n"); 
 printf("[2] - em duas vezes (sem desconto)\n"); 
 printf("[3] - entre 3 e 10 prestacoes com 3%% de juros ao mes (apenas para 
compras superiores a 500 euros)\n"); 
 
 c = getch (); 
 if (c == '3') 
 if (valor < 500.00) 
 c = 'i'; 
 else 
 { 
 printf ("Escolha o numero de prestacoes (3 a 10): "); 
 scanf ("%d", &c); 
 } 
 return (c); 
} 
 
 
void main() { 
 float valor; 
 int c, aux; 
 
 printf("\n\n\n***************** GESTAO DE PAGAMENTOS *****************\n\n"); 
 printf("------------------------------------------------------------------\n"); 
 printf(" Introduza o montante gasto pelo cliente em euros:\n"); 
 printf("------------------------------------------------------------------\n"); 
 
 printf("> "); 
 scanf("%f", &valor); 
 
 c = escolha(valor); 
 
 switch (c) { 
 case '1': 
 printf("Escolheu pagar em dinheiro! Valor a pagar: %.2f euros.\n", 
valor*0.9); 
 break; 
 case '2': 
 printf("Duas prestacoes de: %.2f euros.\n", valor/2.0); 
 Pág. 9 
 break; 
 case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: 
 aux = c; 
 valor=((valor*0.03)*c)+valor; 
 printf("## Escolheu pagar em %d prestacoes!\n",c); 
 printf("Valor total: %.2f euros\n", valor); 
 printf("Valor de cada prestacao: %.2f euros\n\n\n",valor/c ); 
 break; 
 case 'i': 
 printf("So eh possivel dividir entre 3 e 10 prestacoes caso o valor a 
pagar seja superior a 500 euros"); 
 break; 
 default: printf("Opcao invalida! \n"); 
 } 
} 
 
7. Escreva uma função que receba três notas de um aluno e os pesos de cada uma das provas. 
A função deve calcular e retornar a média ponderada das notas do aluno 
 
#include <stdio.h> 
#include <stdlib.h> 
 
float media(float n1,float n2,float n3,int p1,int p2,int p3); 
 
main() 
 { 
 float n1=0.0,n2=0.0,n3=0.0,res=0.0; 
 int p1,p2,p3; 
 printf("Digite a Primeira Nota: "); 
 scanf(" %f",&n1); 
 printf("Qual peso da Primeira Nota: "); 
 scanf("%d",&p1); 
 printf("Digite a Segunda Nota: "); 
 scanf(" %f",&n2); 
 printf("Qual peso da Segunda Nota: "); 
 scanf("%d",&p2); 
 printf("Digite a Terceira Nota: "); 
 scanf(" %f",&n3); 
 printf("Qual peso da Terceira Nota: "); 
 scanf("%d",&p3); 
 fflush(stdin); 
 res = media(n1,n2,n3,p1,p2,p3); 
 printf("\n A Media do Aluno: %6.2f\n",res); 
 } 
 
float media(float n1,float n2,float n3,int p1,int p2,int p3) 
 { 
 float m; 
 m=(((p1*n1)+(p2*n2)+(p3*n3))/(p1+p2+p3)); 
 return m; 
 } 
 
 Pág. 10 
8. Escreva um programa que solicite ao utilizador número de alunos de uma determinada Turma e as notas de 3 
exames para esse mesmo número de alunos. O programa deve calcular a média das provas de cada aluno, a 
média das provas da turma e o número de alunos aprovados e reprovados. 
Utilize funções na resolução do exercício. 
 
#include <stdio.h> 
#include <locale.h> 
 
calculomediaalunos(int n) 
{ 
 int i, j, naprov = 0, nreprov = 0; 
 float alunos[100], mturma = 0, temp1 = 0, temp2; 
 
 for (i = 0; i < n; i++) 
 { 
 for (j = 1; j <= 3; j++) { 
 printf("Intoduza a nota %d do aluno %d -> ", j, i+1); 
 scanf("%f", &temp2); 
 temp1 += temp2 / 3; 
 } 
 alunos[i] = temp1; 
 mturma = mturma + alunos[i]/n; 
 if (alunos[i] >= 9.50) 
 naprov++; 
 else 
 nreprov++; 
 temp1 = 0; 
 } 
 
 for (i = 0; i < n; i++) 
 printf("\nAluno %i:\nMedia: %.2f\n", i + 1, alunos[i]); 
 
 printf("\nMedia da Turma: %.2f\nAprovados: %i\nReprovados: %i\n\n", mturma, 
naprov, nreprov); 
} 
 
int main() { 
 setlocale(LC_ALL, "Portuguese"); 
 int n; 
 
 printf("Introduza o numero de alunos da turma -> "); 
 scanf("%i", &n); 
 
 calculomediaalunos(n); 
 
 return 0; 
} 
 
 
 Pág. 11 
9. 
9.1. Escreva uma função em linguagem C que recebe como argumento um número inteiro e determina se esse 
número é impar. 
A função deve devolver 0 se o número recebido for impar, caso o número não for impar a função deve 
devolver 1. 
 
int ParImpar(int num) 
{ 
 if(num%2 == 0) 
 return 1; 
 else 
 return 0; 
} 
 
 
9.2. Escreva um programa em C que recebe do teclado um número inteiro e determina se o número inserido 
é impar usando a função do problema anterior. O programa deve imprimir a mensagem “O número é 
impar” caso o número inserido for impar, caso contrário o programa deve imprimir a mensagem “O 
número não é impar”. 
 
#include<stdio.h> 
#include<stdlib.h> 
#include <locale.h> 
 
int ParImpar(int num) 
{ 
 if(num%2 == 0) 
 return 1; 
 else 
 return 0; 
} 
 
int main() 
{ 
 setlocale(LC_ALL, "Portuguese"); 
 int numero; 
 
 printf("\nIntroduza o nmero que pretende verificar se 頩mpar -> ") ; 
 scanf("%d",&numero); 
 
 if(ParImpar(numero)) 
 printf("O nmero n㯠頩mpar\n\n"); 
 else 
 printf("O nmero 頩mpar\n\n"); 
 
 
} 
 
 
 Pág. 12 
10. Escreva um programa em C que calcule o número de dias de um determinado mês de um Ano. 
Deve ter em atenção o facto de o ano poder ser bissexto. Utilize funções na resolução do exercício. 
 
 
 
 
 
 
 
#include <stdio.h> 
#include <locale.h> 
 
void mes_ano(int mes, int ano) 
{ 
 if(mes==2) 
 { 
 /* teste de ano bissexto */ 
 if(ano%400==0 || ano%4==0 && ano%100!=0) 
 printf("## FEVEREIRO de %d tem 29 dias ##",ano); 
 else 
 printf("## FEVEREIRO de %d tem 28 dias ##",ano); 
 } 
 else 
 switch(mes) 
 { 
 case 1: printf("## JANEIRO de %d tem 31 dias ##",ano); break; 
 case 3: printf("## MARǏ de %d tem 31 dias ##",ano); break; 
 case 4: printf("## ABRIL de %d tem 30 dias ##",ano); break; 
 case 5: printf("## MAIO de %d tem 31 dias ##",ano); break; 
 case 6: printf("## JUNHO de %d tem 30 dias ##",ano); break; 
 case 7: printf("## JULHO de %d tem 31 dias ##",ano); break; 
 case 8: printf("## AGOSTO de %d tem 31 dias ##",ano); break; 
 case 9: printf("## SETEMBRO de %d tem 30 dias ##",ano); break; 
 case 10: printf("## OUTUBRO de %d tem 31 dias ##",ano); break; 
 case 11: printf("## NOVEMBRO de %d tem 30 dias ##",ano); break; 
 case 12: printf("## DEZEMBRO de %d tem 31 dias ##",ano); break; 
 } 
} 
 
int main() 
{ 
 setlocale(LC_ALL, "Portuguese"); 
 int ano, mes, dias; 
 printf("\n\n******************* CALCULO DE DIAS *******************\n"); 
 printf("-------------------------------------------------------\n"); 
 printf("Introduza o ano: "); 
 printf("\n> "); 
 scanf("%d", &ano); 
 printf("Introduza o m곺 "); 
 printf("\n> ");scanf("%d", &mes); 
 mes_ano(mes,ano); 
 return 0; 
} 
******************* CÁLCULO DE DIAS ******************* 
------------------------------------------------------- 
Introduza o ano: 
> 2015 
Introduza o mês: 
> 2 
## NOVEMBRO de 2015 tem 30 dias ## 
 
 
 
 
 
 
 Pág. 13 
11. Escreva um programa que calcule dados estatísticos para um determinado grupo de indivíduos. O programa 
deve solicitar ao utilizador tamanho do grupo. 
Para cada individuo deve perguntar a idade, o sexo, o peso e a altura. 
O programa deve imprimir: 
 A maior e a menor altura do grupo; 
 A média de altura das mulheres; 
 O número de homens; 
 A média de peso dos homens; 
Utilize funções na resolução do exercício. 
 
#include <stdio.h> 
#include <stdlib.h> 
#include <locale.h> 
 
float medias(float peso_altura, int total) 
{ 
 float media; 
 
 if (total == 0) media = 0; 
 else media = peso_altura/total; 
 
 return media; 
} 
 
 
 
int main() 
{ 
 setlocale(LC_ALL, "Portuguese"); 
 char sexo; 
 float alt_mulher, maior_altura, menor_altura, mmulher; 
 float altu, peso, peso_homem=0, mpesohomem; 
 int i, mulher=0, homem=0, num, idade=0; 
 
 printf("\n\nIntroduza o nmero de elementos do grupo -> "); 
 scanf("%d", &num); 
 
 for(i=1;i<=num;i++) 
 { 
 printf("\nIdade: "); 
 scanf("%d", &idade); 
 fflush(stdin); 
 printf("\nSexo [M] Masculino |[F] Feminino: "); 
 scanf("%c",&sexo); 
 
 while(toupper(sexo)!='M' && toupper(sexo)!='F') 
 { 
 printf("Sexo invᬩdo"); 
 printf("\nSexo [M] Masculino |[F] Feminino: "); 
 fflush(stdin); 
 scanf("%c",&sexo); 
 } 
 
 Pág. 14 
 
 printf("\nPeso: "); 
 scanf("%f", &peso); 
 
 getchar(); 
 while(peso < 1 || peso > 300) 
 { 
 printf("Peso invᬩdo!!"); 
 printf("\nPeso: "); 
 scanf("%f", &peso); 
 getchar(); 
 } 
 
 printf("\nAltura: "); 
 scanf("%f", &altu); 
 while(altu < 0 || altu > 3) 
 { 
 printf("Altura invᬩdo!!"); 
 printf("\nAltura: "); 
 scanf("%f", &altu); 
 getchar(); 
 } 
 
 if (i==1) 
 { 
 maior_altura=altu; 
 menor_altura=altu; 
 } 
 else if (altu > maior_altura) 
 { 
 maior_altura = altu; 
 
 }else if (altu < menor_altura) 
 { 
 menor_altura = altu; 
 } 
 
 if ((sexo == 'F' || sexo == 'f')) 
 { 
 alt_mulher = alt_mulher + altu; 
 mulher++; 
 } 
 else 
 { 
 peso_homem = peso_homem + peso; 
 homem++; 
 } 
 } 
 
 printf("Maior Altura: %.2f\n", maior_altura); 
 printf("Menor Altura: %.2f\n", menor_altura); 
 printf("Media Altura das Mulheres: %.2f\n", medias(alt_mulher,mulher)); 
 printf("Nmero de Homens: %d\n", homem); 
 printf("Media Peso dos Homens: %.2f\n", medias(peso_homem,homem)); 
 
 return 0; 
 
}

Outros materiais