Buscar

Exercicios Praticos (Resolução)

Prévia do material em texto

Introdução à Programação 
Cursos Técnicos Superiores Profissionais: 1º ano - 1º semestre 2015/2016 
 
Exercícios 
 
1) Escreva um programa que leia três números A, B e C e imprima o valor do maior. Assumir valores distintos e 
reais. 
 
#include <stdlib.h> 
#include <stdio.h> 
main( ) 
{// declarar variáveis 
float A, B, C, max; 
//1. [Ler dados] 
printf( "Digite tres numeros A, B, C\n" ); 
scanf("%f%f%f",&A,&B,&C); 
// 2. [Determinar o maior valor, comparando pares] 
if (A > B) 
{ 
if (A > C) 
{ 
max = A ; //( A > B , A > C ) 
printf( "\nO maior valor eh o A\n" ); 
} 
else 
{ 
max = C ; // (A > B e C >A ) 
printf( "\nO maior valor eh o C\n" ); 
} 
} 
else 
{ 
if (B > C) // ( B > A, B > C ) 
{ 
max = B; 
printf( "\nO maior valor eh o B\n" ); 
} 
else 
{ 
max = C; // ( C > B > A ) 
printf( "\nO maior valor eh o C\n" ); 
} 
} 
// 3. [Imprimir o maior valor] 
printf ("\nMaior valor =%f\n\n", max); 
system("pause"); 
} //4. Fim do programa 
 
 
 Pág. 1 
2) Refaça o programa anterior para imprimir os 3 números na ordem crescente. 
 
#include <stdlib.h> 
#include <stdio.h> 
main ( ) 
{ 
int a, b, c, maior, meio, menor ; // declaração de variáveis. 
// Leitura de dados 
printf(" Entre com tres numeros inteiros\n"); 
scanf("%d%d%d",&a,&b,&c); 
 
if ( a > b ) 
if ( a > c ) 
{ 
maior = a; 
if ( b > c ) 
{ 
meio = b; 
menor = c; 
} 
else 
{ 
meio = c; 
menor = b; 
} 
} 
else 
{ 
maior = c; 
meio = a; 
menor = b; 
} 
else 
if ( a > c ) 
{ 
maior = b; 
meio = a; 
menor = c; 
} 
else 
{ 
menor = a; 
if ( b > c ) 
{ 
maior = b; 
meio = c; 
} 
else 
{ 
maior = c; 
meio = b; 
} 
} 
printf("Em ordem crescente: %d %d %d\n\n", menor, meio, maior); 
system("pause"); 
} //fim programa 
 
 
 Pág. 2 
 
3) Escreva um programa que calcule quando um ano é Bissexto. 
(a) Divisível por 100 e 400. 
(b) Não divisível por 100 e divisível por 4. 
(c) Os demais anos não são Bissextos. 
 
# include <stdio.h> 
# include <stdlib.h> 
main ( ) 
{ 
int ano, resto; 
printf("Forneca o ano:"); 
scanf("%d",&ano); 
if (ano%100 == 0) 
if (ano%400 == 0) 
printf("O Ano %d é bissexto \n\n", ano); 
else 
printf(" O Ano %d não é bissexto \n\n", ano); 
else 
if (ano%4 == 0) 
printf("O Ano %d é bissexto \n\n", ano ); 
else 
printf(" O Ano %d não é bissexto \n", ano); 
system("pause"); 
} 
 
 
 
4) Refazer o programa do Ano Bissexto usando Condições Compostas. 
 
# include <stdio.h> 
# include <stdlib.h> 
main ( ) 
{ 
int ano, resto; 
printf("Forneca o ano:"); 
scanf("%d",&ano); 
if ((ano%100 == 0) && (ano%400 == 0)) 
printf("O Ano %d é bissexto \n\n", ano); 
else 
{ 
if ((ano%4 == 0) && (ano%100 != 0)) 
printf("O Ano %d é bissexto \n\n", ano ); 
else 
printf(" O Ano %d não é bissexto \n", ano); 
} 
system("pause"); 
} 
 
 
 
 Pág. 3 
5) Escreva um programa que some os primeiros N números inteiros, sendo N definido pelo utilizador 
 
# include <stdio.h> 
# include <stdlib.h> 
 
int main() 
{ 
int n, i, soma; 
 
printf("Calculo da soma dos primeiros N numeros.\nIndique N:"); 
/* ler um número inteiro */ 
scanf("%d", & n); 
/* na variável soma, será acumulado o resultado */ 
soma = 0; 
/* a variável i vai iterar de 1 a N */ 
i = 1; 
while(i <= n) 
{ 
/* a variável soma vai acumulando o resultado de 1 até i */ 
soma = soma + i; 
/* mostrar o resultado parcial */ 
printf("\n adicionar %d, parcial %d", i, soma); 
/* incrementar a variável i */ 
i = i + 1; 
} 
/* mostrar resultado final */ 
printf("\nTotal: %d\n", soma); 
} 
 
 
6) Escreva um programa que leia as horas, minutos e segundos, e calcule o número de segundos que passaram 
desde o início do dia. 
 
# include <stdio.h> 
# include <stdlib.h> 
 
int main() 
{ 
int horas, minutos, segundos; 
printf("Calculo do numero de segundos desde o inicio do dia.\nHora: "); 
scanf("%d", & horas); 
printf("Minuto: "); 
scanf("%d", & minutos); 
printf("Segundos: "); 
scanf("%d", & segundos); 
 
printf("Numero de segundos desde o inicio do dia: %d", 
segundos + 60 *(minutos + 60 *horas)); 
} 
 
 
 Pág. 4 
7) Escreva um programa que multiplique os primeiros N números inteiros positivos (factorial de N), sendo N 
definido pelo utilizador 
 
 
# include <stdio.h> 
# include <stdlib.h> 
 
int main() 
{ 
int n, i, produto; 
printf("Calculo do produto dos primeiros N numeros.\nIndique N:"); 
scanf("%d", & n); 
 
produto = 1; 
i = 1; 
while(i <= n) 
{ 
/* utilização do operador *= em vez da atribuição e multiplicação */ 
produto *= i; 
/* resultado parcial */ 
printf(" Factorial(%d)=%d\n", i, produto); 
/* utilização do operador de incremento ++, em vez da atribuição 
 e soma com a unidade. */ 
i++; 
} 
 
printf("Resultado: %d", produto); 
} 
 
 
 
 
 Pág. 5 
8) Escreva um programa, utilizando condições compostas, que leia três números e imprima o maior e menor deles. 
Assume-se que os valores são diferentes. 
 
#include <stdlib.h> 
#include <stdio.h> 
main() 
{ 
float A,B, C,Max, Min; 
//1. [Ler dados] 
printf("Digite tres numeros diferentes\n" ); 
scanf("%f%f%f",&A,&B,&C); 
//2. [Determinar o maior e menor valor] 
if(A > B && A > C && B > C) 
{ 
Max = A; 
Min = C; 
} 
if(A > B && A > C && B < C) 
{ 
Max = A; 
Min = B; 
} 
if(B > A && B > C && A > C) 
{ 
Max = B; 
Min =C; 
} 
if(B > A && B > C && A < C) 
{ 
Max= B; 
Min = A; 
} 
if(C > A && C > B && B >A) 
{ 
Max =C; 
Min= A; 
} 
if (C > A && C > B && B < A) 
{ 
Max = C; 
Min = B; 
} 
//3. [Imprimir o maior e o menor valor] 
printf("Maior valor =%4.1f\n\n",Max); 
printf("Menor valor =%4.1f\n\n", Min); 
system( "PAUSE"); 
} 
 
 
 Pág. 6 
9) Crie uma calculadora usando a instrução SWITCH, que pergunte qual das operações básicas quer fazer (+, -, * e 
/), em seguida peça os dois números e mostre o resultado da operação matemática entre eles. 
 
 
#include <stdio.h> 
 
int main() 
{ 
 char operacao; 
 float num1, 
 num2; 
 
 printf("Escolha sua operação [+ - * / ]: "); 
 scanf("%c",&operacao); 
 
 printf("Introduza o primeiro número: "); 
 scanf("%f",&num1); 
 
 printf("Introduza o segundo número: "); 
 scanf("%f",&num2); 
 
 switch( operacao ) 
 { 
 case '+': 
 printf("%.2f + %.2f = %.2f", num1, num2, num1 + num2); 
 break; 
 
 case '-': 
 printf("%.2f - %.2f = %.2f", num1, num2, num1 - num2); 
 break; 
 
 case '*': 
 printf("%.2f * %.2f = %.2f", num1, num2, num1 * num2); 
 break; 
 
 case '/': 
 printf("%.2f / %.2f = %.2f", num1, num2, num1 / num2); 
 break; 
 
 default: 
 printf("Digitou uma operacao invalida."); 
 
 } 
 
} 
 
 
 Pág. 7 
10) Escreva um programa que faça o calculo final de uma dívida tendo em conta os meses de atraso e os juros. 
Utilize o switch e o case. Suponha que se atrasou a pagar uma conta. A cada mês que deixa de pagar, será cobrado 
1% de juros no valor inicial, ou seja, se o atraso for um mês, irá pagar 1%. Se atrasar 3 meses, irá pagar 3% etc. 
Vamos supor que o atraso é no máximo, 5 meses. O programa pede, como entrada o valor da dívida inicial e um 
valor de 0 até 5, que são os meses de atraso. 
 
 
#include <stdio.h> 
 
int main(void) 
{ 
 float valor_i, 
 valor_f; 
 int juros=0; 
 
 int meses; 
 
 printf("Qual o valor inicial da dda: "); 
 scanf("%f", &valor_i); 
 
 printf("Meses de atraso [1-5]?: "); 
 scanf("%d",&meses); 
 
 switch( meses ) 
 { 
 case 5: 
 juros=5; 
 break; 
 case 4: 
 juros=4; 
 break; 
 case 3: 
 juros=3; 
 break; 
 case 2: 
 juros=2; 
 break; 
 case 1: 
 juros=1; 
 break; 
 default: 
 printf("Nao digitou um valor valido de meses\n"); 
 
 } 
 printf("Juros: %d%\n",juros); 
 valor_f=( (1 + (juros/100.0))*valor_i); 
 printf("Valor final da divida: %.2f\n", valor_f); 
 
} 
 
 
 Pág. 8

Continue navegando