Escolar Documentos
Profissional Documentos
Cultura Documentos
Myriam e Ricardo
1. Complete o programa abaixo de forma a ler do teclado dois valores em ponto flutuante, armazenando-os nas variáveis
n1 e n2. Efetue a soma de n1 e n2, atribuindo o resultado na variável aux. Imprima o valor de aux com apenas duas
casas decimais - dica: a função printf possui opções de formatação para esta finalidade!
1 # include < stdio .h >
2 int main () {
3 float n1 , n2 aux ;
4
5 printf ( " Digite o primeiro valor : " ) ;
6 scanf ( " % f " , & n1 ) ;
7
8 .......... COMPLETAR ..........
9
10 printf ( " % f " , aux ) ;
11 return 0;
12 }
Solução (corrigida)
1 # include < stdio .h >
2 int main () {
3 int n1 , n2 ; //
4 float aux ;
5 printf ( " Digite o primeiro valor : " ) ;
6 scanf ( " % d " , & n1 ) ;
7 printf ( " Digite o segundo valor : " ) ;
8 scanf ( " % d " , & n2 ) ;
9
10 aux =( n1 + n2 ) /2.0; // ao dividir por um float ( constante 2.0) o problema desaparece
11 printf ( " A media dos valores digitados eh : %.2 f " , aux ) ; // .2 f significa imprimir com 2 casa depois do pto
decimal
12 return 0;
13 }
7. Considere o trecho de código abaixo. Ele lê um número inteiro do teclado e o imprime como se fosse um número em
ponto flutuante. Implemente o programa e observe se ocorre um erro de compilação ou um erro de execução. Qual a
correção necessária para que o programa execute sem erros?
1 # include < stdio .h >
2 int main () {
3 int aux ;
4
5 printf ( " Digite um numero inteiro : " ) ;
6 scanf ( " % d " , & aux ) ;
7 printf ( " % f " , aux ) ;
8 return 0;
9 }
1 // o erro ~ c de execu ~
A
A§~
A £o porque a convers ~ ~
A £o de tipos no printf A c possivel ( ler um char e imprimir como int e
vice - versa ) mas nao de int para float
2 # include < stdio .h >
3 int main () {
4 int aux ;
5 printf ( " Digite um numero inteiro : " ) ;
6 scanf ( " % d " , & aux ) ;
7 printf ( " O numero lido e impresso de forma errada eh % f \ n " , aux ) ; // correcao : imprimir como inteiro (% d )
8 printf ( " O numero lido e impresso de forma correta eh % d \ n " , aux ) ;
9 return 0;
10 }
8. Considere o programa abaixo. Ele lê um caractere e o imprime como se fosse um número inteiro. Que número é esse
exibido pelo programa? É um erro de execução ou ele tem algum significado?
1 # include < stdio .h >
2 int main () {
3 char aux ;
4
5 printf ( " Digite um caracter : " ) ;
6 scanf ( " % c " , & aux ) ;
7 printf ( " % d " , aux ) ;
8
9 return 0;
10 }
1 // N~
a o ha erro !
2 # include < stdio .h >
3
4 int main () {
5 char aux ;
6 printf ( " Digite um caractere : " ) ;
7 scanf ( " % c " , & aux ) ;
8 printf ( " % d " , aux ) ; // o valor inteiro impresso corresponde ao codigo ASCII do caractere fornecido como entrada
9 return 0;
10 }
9. Faça um programa que calcule o perı́metro (2base + 2altura) de um retângulo.
1 # include < stdio .h >
2
3 int main ()
4 {
5 float base , altura ;
6
7
8 printf ( " Digite a base e a altura do retangulo : " ) ;
9 scanf ( " % f % f " , & base , & altura ) ;
10
11 printf ( " o perimetro do retangulo de base %.2 f e altura %.2 f eh igual a %.2 f " , base , altura , 2* base +2* altura ) ;
12 return 0;
13 }
10. Faça um programa que calcule e mostre o volume de uma esfera sendo fornecido o valor de seu raio (r). A fórmula
para calcular o volume é: p4{3q P I r3 . Considere (atribua) para a constante PI o valor 3.14159. Dica: cuidado com
o resultado de 4/3 ;-)
Solução a
1 # include < stdio .h >
2 # define PI 3.14159
3
4 int main ( )
5 {
6 int r ;
7 double volume ; // com float nao eh possivel armazenar um valor muito grande ( como ultimo teste indicado na lista )
8 printf ( " Entre com o raio da esfera ( inteiro ) : " ) ;
9 scanf ( " % d " , & r ) ;
10 volume = (4.0 / 3.0) * PI * r * r * r ;
11 printf ( " Volume da esfera de raio % d eh igual a : %.3 lf " , r , volume ) ;
12 return 0;
13 }
Solução b
1 // Resoluç~
a o do Ex2 usando a funcao matemática pow (...)
2 # include < stdio .h >
3 # include < math .h >
4 # define PI 3.14159
5
6 int main ( )
7 {
8 int r ;
9 double volume ; // com float nao eh possivel armazenar um valor muito grande ( como ultimo teste indicado na lista )
10 printf ( " Entre com o raio da esfera ( inteiro ) : " ) ;
11 scanf ( " % d " , & r ) ;
12 volume = (4.0 / 3.0) * PI * pow (r ,3) ;
13 printf ( " Volume da esfera de raio % d eh igual a : %.3 lf " , r , volume ) ;
14 return 0;
15 }
11. Faça um programa que leia três valores inteiros e apresente o máximo dos três valores lidos seguido da mensagem “eh
o maior”. Utilize a fórmula:
a b abspa bq
maxAB
2
Obs. abs() é uma função da biblioteca stdlib.h! Para isso lembre de incluir stdlib.h de forma similar stdio.h.
1 # include < stdio .h >
2 # include < stdlib .h >
3
4 int main ( void )
5 {
6 int a , b , c , maior ;
7
8 printf ( " Digite 3 valores inteiros ( separados por ENTER ) " ) ;
9 scanf ( " % d " , & a ) ;
10 scanf ( " % d " , & b ) ;
11 scanf ( " % d " , & c ) ;
12
13
14 maior = ( a + b + abs (a - b ) ) /2; // maior entre a e b
15 maior = ( c + maior + abs (c - maior ) ) /2; // maior entre c e ( a e b )
16 printf ( " \ n % d eh maior \ n " , maior ) ;
17 return 0;
18 }
12. Modifique o programa anterior para imprimir também o menor (NÃO use o condicional if - veja se consegue abstrair
como deve ser a fórmula do menor a partir do entendimento de como funciona a fórmula do maior).
1 # include < stdio .h >
2
3
4 int main ( void )
5 {
6 int a , b , c , menor ;
7
8 printf ( " Digite 3 valores inteiros ( separados por ENTER ) " ) ;
9 scanf ( " % d " , & a ) ;
10 scanf ( " % d " , & b ) ;
11 scanf ( " % d " , & c ) ;
12
13
14 menor = ( a + b - abs (a - b ) ) /2; // menor entre a e b
15 menor = ( c + menor - abs (c - menor ) ) /2; // maior entre c e ( a e b )
16 printf ( " \ n % d eh menor \ n " , menor ) ;
17 return 0;
18 }
13. Calcule o consumo médio de um automóvel sendo fornecidos a distância total percorrida (em Km, representada como
um inteiro) e o total de combustı́vel gasto (em litros, representado por um valor real). Apresente o valor que representa
o consumo médio do automóvel com 3 casas após a vı́rgula, seguido da mensagem ”km/l”.
Solução b
1 # include < stdio .h >
2 # include < math .h >
3
4 # define C1 50
5 # define C2 5
6 # define C3 1
7
8 int main ( void )
9 {
10 int total ;
11 scanf ( " % d " ,& total ) ;
12 printf ( " \ n % d cedulas de R$ % d .00\ n " , total / C1 , C1 ) ;
13 printf ( " \ n % d cedulas de R$ % d .00\ n " , total % C1 / C2 , C2 ) ;
14 printf ( " \ n % d cedulas de R$ % d .00\ n " , total % C1 % C2 / C3 , C3 ) ;
15 return 0;
16 }
Solução c
1 # include < stdio .h >
2 # include < math .h >
3
4
5 int main ( void )
6 {
7 int total , c1 , c2 , c3 , r ;
8 printf ( " Por favor entre com o total a ser dividido em cedulas : " ) ;
9 scanf ( " % d " ,& total ) ;
10 printf ( " Por favor entre com o conjunto de 3 cedulas a serem usadas na divisao : " ) ;
11 scanf ( " % d % d % d " ,& c1 ,& c2 ,& c3 ) ; // assumindo que só ha um conjunto de 3 cédulas possı́vel
12
13 r = total ;
14
15 printf ( " \ n % d cedulas de R$ % d .00\ n " ,r / c1 , c1 ) ;
16 r = r % c1 ;
17 printf ( " \ n % d cedulas de R$ % d .00\ n " ,r / c2 , c2 ) ;
18 r = r % c2 ;
19 printf ( " \ n % d cedulas de R$ % d .00\ n " ,r / c3 , c3 ) ;
20 return 0;
21 }
15. Faça um algoritmo que dado um número de segundos, converta para dias, horas, minutos e segundos. Por exemplo,
7322 segundos correspondem a 0 dias, 2 horas, 2 minutos e 2 segundos.
1 # include < stdio .h >
2 # include < math .h >
3
4 # define DIA_SEG (24*60*60)
5 # define HORA_SEG (60*60)
6 # define MIN_SEG 60
7
8 int main ( void )
9 {
10 int totalSeg , rSeg , dias , horas , mins , segs ;
11 printf ( " Digite o total de segundos : " ) ;
12 scanf ( " % d " , & totalSeg ) ;
13 dias = totalSeg / DIA_SEG ; // quantos dias ( em segundos ) podem ser subtraidos do total de segundos fornecido pelo
usuario
14 rSeg = totalSeg % DIA_SEG ; // quantos segundos restam apos retirar repetidamente os dias
15 horas = rSeg / HORA_SEG ; // quantos horas ( em segundos ) podem ser subtraidas do que restou da retirada dos dias
16 rSeg = rSeg % HORA_SEG ; // quantos segundos restam apos retirar repetidamente as horas
17 mins = rSeg / MIN_SEG ; // quantos minutos ( em segundos ) podem ser subtraidos do que restou da retirada das horas
18 segs = rSeg % MIN_SEG ; // quantos segundos restam apos retirar repetidamente os minutos
19 printf ( " \ n % d correspondem a : % d dias , % d horas , % d min , % d seg \ n " , totalSeg , dias , horas , mins , segs ) ;
20 return 0;
21 }
16. Faça um programa que, dado um número inteiro como entrada, retorne seu último dı́gito.
1 # include < stdio .h >
2
3
4 int main ( void )
5 {
6 int num ;
7
8
9 printf ( " Digite um valor ( inteiro base 10) : " ) ;
10 scanf ( " % d " , & num ) ;
11 printf ( " o ultimo digito de % d eh igual a % d " , num , num %10) ;
12 return 0;
13 }
17. Construa um programa que receba o valor de uma temperatura em graus Celsius (C) e calcule a sua temperatura
correspondente em graus Farenheit (F ):
C
pF 32q 5
9
Solução b
1 # include < stdio .h >
2
3 # define R 15
4 # define G 2.6
5 # define P 8
6
7 int main ( void )
8 {
9 float distancia , ga s to Fi na n ce ir o ;
10 int quantPedag ;
11
12
13 printf ( " Digite a distancia entre as cidades : " ) ;
14 scanf ( " % f " , & distancia ) ;
15 printf ( " Digite a quantidade de pedagios : " ) ;
16 scanf ( " % d " , & quantPedag ) ;
17
18 gastoFin an ce i ro = distancia / R * G + quantPedag * P ;
19 printf ( " O gasto financeiro para se viajar %.2 f KM contendo % d pedagios eh de R$ %.2 f " , distancia , quantPedag ,
gas to F in an ce i ro ) ;
20 return 0;
21 }
Solução c
1 # include < stdio .h >
2
3
4
5 int main ( void )
6 {
7 float distancia , gastoFinanceiro , precogas , precopedag ;
8 int quantPedag , rendimento ;
9
10
11 printf ( " Digite a distancia entre as cidades : " ) ;
12 scanf ( " % f " , & distancia ) ;
13 printf ( " Digite a quantidade de pedagios e o preco unico cobrado na rodovia : " ) ;
14 scanf ( " % d % f " , & quantPedag ,& precopedag ) ;
15 printf ( " Digite o rendimento do carro e o preco da gasolina : " ) ;
16 scanf ( " % d % f " , & rendimento ,& precogas ) ;
17
18 gastoFin an ce i ro = distancia / rendimento * precogas + quantPedag * precopedag ;
19 printf ( " O gasto financeiro para se viajar %.2 f KM contendo % d pedagios eh de R$ %.2 f " , distancia , quantPedag ,
gas to F in an ce i ro ) ;
20 return 0;
21 }
19. Faça um programa que leia 3 valores que correspondem às três notas de um aluno. A seguir, calcule a média do aluno,
sabendo que a primeira nota tem peso 2, a segunda nota tem peso 3 e a terceira nota tem peso 5. Considere que cada
nota pode ir de 0 até 10.0. Imprima a média com 1 dı́gito após o ponto decimal.
1 # include < stdio .h >
2 # define P1 2
3 # define P2 3
4 # define P3 5
5
6 int main ( void )
7 {
8 float n1 , n2 , n3 , media ;
9
10 printf ( " Digite as 3 notas " ) ;
11 scanf ( " % f " , & n1 ) ;
12 scanf ( " % f " , & n2 ) ;
13 scanf ( " % f " , & n3 ) ;
14
15
16 media = ( P1 * n1 + P2 * n2 + P3 * n3 ) /( P1 + P2 + P3 ) ;
17 printf ( " A media ponderada entre as notas %.1 f %.1 f %.1 f eh igual a %.1 f " , n1 , n2 , n3 , media ) ;
18 return 0;
19 }