Curso Técnico Superior
Profissional em Redes e
Sistemas Informáticos
FUNDAMENTOS DE PROGRAMAÇÃO
2015/2016
Exercícios: Capítulo 4 – Estruturas de decisão
SOLUÇÕES
1. Implemente um programa para ler do teclado o ano de nascimento do utilizador. O valor
introduzido só será aceite se este estiver no intervalo compreendido entre 1900 e 2015.
#include <stdio.h>
int main(void)
{
int numero;
printf("Introduza o seu ano de nascimento: ");
scanf("%d", &numero);
if(numero > 2015 || numero < 1900)
{
printf("O ano de nascimento e INVALIDO");
}
else
{
printf("O ano de nascimento e VALIDO");
}
return 0;
}
2. Escreva um programa que peça um número ao utilizador e mostre a mensagem “Número é
superior a zero” caso o número introduzido seja superior a zero e “Número é inferior ou igual a
zero” caso contrário.
#include <stdio.h>
int main(int argc, char *argv[])
{
int number;
//Pede o valor
printf("Introduza um valor superior, igual ou inferior a zero: ");
//lê o valor
scanf("%d", &number);
//se o número for superior a 0
if(number > 0)
{
printf("O numero e superior a zero.\n");
}
else //caso contrário é inferior ou igual a 0
{
printf("O numero e inferior ou igual a zero.\n");
}
return 0;
}
Fundamentos de Programação - Exercícios
Página 1
3. Considere um grande armazém que está a aplicar taxas de desconto aos seus produtos e que
estas variam de acordo com o total que cada cliente tem a pagar, segundo a seguinte tabela:
Compras até 500€
0% de desconto
Compras de 500€ a 1250€
4% de desconto
Compras de 1250€ a 2000€
6% de desconto
Compras superiores a 2000€
8% de desconto
O programa deve determinar a taxa de desconto a aplicar e o valor líquido a cobrar. O montante
das compras é dado.
#include <stdio.h>
#define DSCNT1 0.04
#define DSCNT2 0.06
#define DSCNT3 0.08
int main(int argc, char *argv[])
{
float valorTotalConpras, result;
printf("Introduza o valor total das compras: ");
scanf("%f", &valorTotalConpras);
if(valorTotalConpras <= 500)
{
printf("Valor a pagar e: %0.2f euros, a taxa e de 0%%", valorTotalConpras);
}
else if(valorTotalConpras > 500 && valorTotalConpras <= 1250)
{
result = (float)valorTotalConpras - (valorTotalConpras*DSCNT1);
printf("Valor a pagar e: %0.2f euros, a taxa e de 4%%", result);
}
else if(valorTotalConpras > 1250 && valorTotalConpras <= 2000)
{
result = (float)valorTotalConpras - (valorTotalConpras*DSCNT2);
printf("Valor a pagar e: %0.2f euros, a taxa e de 6%%", result);
}
else//superior a 2000 euros
{
result = (float)valorTotalConpras - (valorTotalConpras*DSCNT3);
printf("Valor a pagar e: %0.2f euros, a taxa e de 8%%", result);
}
return 0;
}
4. Escreva um programa que determine se um número inteiro é par ou ímpar. Caso o valor
introduzido seja igual a zero deverá ser apresentada uma mensagem de aviso.
#include <stdio.h>
int main(void)
{
int numero;
printf("Introduza um numero: ");
scanf("%d", &numero);
if(numero % 2 == 0)
{
printf("Numero par");
}
else
{
printf("Numero impar");
Fundamentos de Programação - Exercícios
Página 2
}
return 0;
}
5. Escreva um programa que peça ao utilizador o comprimento de três linhas e indique ao utilizador
se essas linhas podem ou não formar um triângulo. Em caso afirmativo, o programa deve também
indicar se o triângulo é escaleno (lados todos diferentes), isósceles (dois lados iguais) ou equilátero
(todos os lados iguais).
Nota: Considerando a, b e c o comprimento de três linhas. Essas linhas podem formar um
triangulo se |a - b| < c e c < a + b. (Use a função fabs() para calcular o módulo, esta função está
presente na biblioteca math.h).
#include <stdio.h>
#include <math.h>
int main(void)
{
float linha_1, linha_2, linha_3;
printf("Introduza o valor da linha 1: ");
scanf("%f", &linha_1);
printf("Introduza o valor da linha 2: ");
scanf("%f", &linha_2);
printf("Introduza o valor da linha 3: ");
scanf("%f", &linha_3);
if((fabs(linha_1 - linha_2) < linha_3) && (linha_3 < linha_1 + linha_2))
{
printf("As linhas PODEM formar um triangulo: ");
// triangulo equilatero -> todos os lados iguais
if(linha_1 == linha_2 && linha_2 == linha_3)
{
printf("equilatero\n");
}
// triangulo isosceles -> dois lados iguais
else if(linha_1 == linha_2 || linha_1 == linha_3 || linha_2 == linha_3)
{
printf("isosceles\n");
}
else
{
printf("escaleno\n");
}
}
else
{
printf("As linhas NAO PODEM formar um triangulo: ");
}
return 0;
}
6. Escreva um programa que peça ao utilizador três números inteiros e a ordem pela qual os deseja
ver (crescente ou decrescente). O resultado deverá ser os três números ordenados pela ordem
indicada.
Por exemplo:
Introduza tres numeros inteiros: 5 2 6
Qual a ordem que os deseja ver (C)rescente ou (D)ecrescente: C
2
5
6
#include <stdio.h>
Fundamentos de Programação - Exercícios
Página 3
int main(void)
{
int numero_1, numero_2, numero_3;
char ordem;
printf("Introduza tres numeros inteiros: \n");
fflush(stdin);
scanf("%d %d %d", &numero_1, &numero_2, &numero_3);
printf("Qual a ordem que os deseja ver (C)rescente ou (D)ecrescente: ");
fflush(stdin);
scanf("%c", &ordem);
switch(ordem)
{
case 'c':
case 'C':
if(numero_1 < numero_2)
{
if(numero_2 < numero_3)
{
printf("%d %d %d\n", numero_1, numero_2, numero_3);
}else if(numero_1 < numero_3)
{
printf("%d %d %d\n", numero_1, numero_3, numero_2);
}else
{
printf("%d %d %d\n", numero_3, numero_1, numero_2);
}
}
else
{
if(numero_2 < numero_3)
{
if(numero_1 < numero_3)
{
printf("%d %d %d\n", numero_2, numero_1, numero_3);
}else
{
printf("%d %d %d\n", numero_2, numero_3, numero_1);
}
}
else
{
printf("%d %d %d\n", numero_3, numero_2, numero_1);
}
}
break;
case 'd':
case 'D':
if(numero_1 > numero_2)
{
if(numero_2 > numero_3)
{
printf("%d %d %d\n", numero_1, numero_2, numero_3);
}
else if(numero_1 > numero_3)
{
printf("%d %d %d\n", numero_1, numero_3, numero_2);
}
else
{
printf("%d %d %d\n", numero_3, numero_1, numero_2);
}
}
else
{
if(numero_2 > numero_3)
{
if(numero_1 > numero_3)
{
printf("%d %d %d\n", numero_2, numero_1, numero_3);
}
else
{
printf("%d %d %d\n", numero_2, numero_3, numero_1);
}
}
else
{
printf("%d %d %d\n", numero_3, numero_2, numero_1);
}
}
Fundamentos de Programação - Exercícios
Página 4
break;
default:
printf("Ordem invalida!");
}
return 0;
}
7. Pretende-se elaborar um programa que simule uma calculadora rudimentar, cujas operações
possíveis sejam:

+ (soma)

- (subtração)

x (multiplicação)

/ (divisão)
O programa deverá pedir ao utilizador dois números inteiros e o sinal de operação a aplicar a
esses números. Deverá, por fim, apresentar no monitor, o respectivo resultado.
Notas:

Caso o utilizador seleccione um operador fora das possibilidades atrás mencionadas,
deverá ser dada ao utilizador a mensagem: “operador desconhecido”.

O programa deve indicar “Erro – divisão por zero” se numa divisão o divisor for zero.
Exemplo:
Introduza os numeros e a operacao a realizar: 5*2
Resultado: 10
#include <stdio.h>
int main(void)
{
float valor1, valor2, resultado;
char operacao;
printf("Introduza os numeros e a operacao a realizar: ");
scanf("%f %c %f", &valor1, &operacao, &valor2);
switch(operacao)
{
case '+':
resultado= valor1 + valor2 ;
printf(" O resultado e: %f ", resultado);
break;
case '-':
resultado = valor1 - valor2 ;
printf(" O resultado e: %f ", resultado);
break;
case '/':
if(valor2 == 0)
{
printf("Erro - Divisão por zero");
}
else
{
resultado = valor1 / valor2;
printf(" O resultado e: %f", resultado);
}
break;
case '*':
resultado = valor1 * valor2;
Fundamentos de Programação - Exercícios
Página 5
printf(" O resultado e: %f", resultado);
break;
default:
printf("Erro:operador desconhecido");
}
return 0;
}
8. Implemente um programa que em função do valor da cilindrada do automóvel indique o valor do
imposto de circulação, com base na seguinte tabela:
Cilindrada
Imposto de
circulação
<= 1000
15€
] 1000, 1300 ]
25€
]1300, 1500]
30€
]1500, 1800]
40€
> 1800
50€
#include <stdio.h>
int main(void)
{
int cilindrada;
printf("Introduza a cilindrada do automovel: ");
scanf("%d", &cilindrada);
if(cilindrada > 0 && cilindrada <= 1000)
{
printf("O seu imposto de circulacao tem o valor
}
else if (cilindrada > 1000 && cilindrada <=1300)
{
printf("O seu imposto de circulacao tem o valor
}
else if(cilindrada > 1300 && cilindrada <= 1500)
{
printf("O seu imposto de circulacao tem o valor
}else if(cilindrada > 1500 && cilindrada <= 1800)
{
printf("O seu imposto de circulacao tem o valor
}
else if (cilindrada > 1800)
{
printf("O seu imposto de circulacao tem o valor
}
else
{
printf("Valor que introduziu e invalido");
}
de 15 euros");
de 25 euros");
de 30 euros");
de 40 euros");
de 50 euros");
return 0;
}
9. Uma relação matemática é dada pela seguinte forma:
Y=
Ax2 + Bx + C
(para x<5)
2
Ax – Bx –C ;
(para x=5)
2
(para x>5)
Ax + Bx
Escreva um programa que leia os valores A, B, C e x do teclado e calcule Y.
#include <stdio.h>
int main(void)
{
float a, b, c, y, x;
printf("Introduza o valor de A B C: ");
scanf("%f %f %f",&a, &b, &c);
Fundamentos de Programação - Exercícios
Página 6
printf("Introduza o valor de x:");
scanf("%f",&x);
if(x < 5)
{
y = (a*(x*x))+(b*x + c);
}
else if (x == 5)
{
y= (a*(x*x)) - (b*x) -c;
}
else if(x > 5)
{
y = (a*(x*x)) + (b*x);
}
printf("O valor de y e : %.3f",y);
return 0;
}
10. Escreva um programa que indique se uma determinada letra pedida ao utilizador é maiúscula ou
minúscula.
Sugestão: use as funções islower() e/ou isupper().
#include <stdio.h>
int main(void)
{
char letra;
printf("Introduza uma letra:");
scanf("%c", &letra);
if(islower(letra))
{
printf("A letra que introduziu e minuscula");
}
else
{
printf("A letra que introduziu e maiuscula");
}
return 0;
}
Fundamentos de Programação - Exercícios
Página 7
Download

Cap 4 - Folha Exercicios - Estruturas de Decisao