Baixe o app para aproveitar ainda mais
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; }
Compartilhar