Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Lista 1
Prof. Glauber M. Cabral
glauber@decsi.ufop.br
DECSI - ICEA - UFOP
4 de Abril de 2014
1. Voc, como programador, responsvel por modelar os problemas reais no computador. Como parte
disto, voc deve escolher os tipos das variveis que armazenaro os dados no seu programa. Para
cada problema abaixo, defina o tipo de varivel que deve ser usada.
a) O nmero de portas de uma casa.
b) A idade dos alunos ingressantes.
c) O conceito para avaliao de desempenho de um aluno, medido em A, B, C, D e E.
d) O conceito para avaliao de desempenho de um aluno, medido em um intervalo de 0 (inclusive)
a 10 (inclusive), com incrementos de 0, 5.
e) O salrio de um funcionrio.
f ) A resposta para uma pergunta cujas respostas possveis so Verdadeiro ou Falso.
g) A resposta para uma pergunta cujas respostas possveis so a, b, c, d e e.
1
2. Sobre o funcionamento do tipo de dados char, responda o que est armazenado na varivel abaixo
em cada linha:
char numero;
numero = 9;
numero = 9;
Entrada e Sada
7. Codifique um programa que leia dois valores inteiros nas variveis a e b e troque os valores contidos
nas variveis. Para verificar a troca, imprima o contedo das variveis aps a leitura e aps a troca
dos valores.
2
8. Codifique um programa que pergunte ao usurio a altura e a base de um retngulo e imprima a rea
e o permetro deste retngulo.
9. Codifique um programa que pergunte ao usurio o raio de um crculo e imprima a rea e o permetro
deste crculo.
10. Codifique um programa que leia os trs lados de um tringulo e imprima a rea e o permetro deste
tringulo. Para o clculo da rea, deve-se utilizar a frmula de Heron:
Area =
em que
aux =
4
11.
12.
13.
14.
15.
16.
17.
18.
Desvios Condicionais: if
19. Codifique um programa que leia um caractere de operao aritmtica (+, , , /), dois nmeros e
exiba na tela a operao, seguida do seu resultado.
20. Codifique um programa que leia um nmero de 1 a 12, indicativo um ms, e imprima o nomedo ms
correspondente, por extenso.
21. Codifique um programa que pergunte um cdigo de funcionrio e, de acordo com o valor digitado,
apresente o cargo correspondente, segundo a tabela abaixo. Caso seja digitado um cdigo que no
esteja na tabela, deve-se avisar que o cdigo invlido.
22. Codifique um programa que leia a nota de um aluno e exiba o conceito correspondente, segundo as
seguintes regras:
Cdigo
101
102
103
104
105
106
Cargo
Vendedor
Atendente
Auxiliar Tcnico
Assistente
Coordenador de Grupo
Gerente
23. Codifique um programa que leia um caractere (C, c, F ou f ) indicando a unidade de medida da
temperatura de entrada e uma temperatura de entrada. O programa deve realizar a converso da
temperatura inserida, da unidade de entrada para a outra unidade dispnvel, utilizando a seguinte
frmula de Converso: C = (5/9) (F 32). A sada do programa deve exigir a temperatura aps
converso, com 2 casas decimais, e a unidade da temperatura aps converso.
Estruturas de Repetio
24. Codifique um programa que leia 10 valores, conte quantos destes valores so negativos e imprima
esta informao.
25. Escreva um programa que leia 6 valores e encontre o maior e o menor deles. Mostre o resultado.
26. Faa um programa que l um valor N inteiro e positivo e que calcula e escreve o fatorial de N (N!).
27. A prefeitura de uma cidade fez uma pesquisa entre seus habitantes, coletando dados sobre o salrio
e nmero de filhos. A prefeitura deseja saber:
32. Escrever um programa que gere e escreva os 4 primeiros nmeros perfeitos. Um nmero perfeito
aquele que igual a soma dos seus divisores exceto o prprio nmero. (Ex.: 6 = 1 + 2 + 3; 28 =
1+2+4+7+14 etc).
33. Elabore um programa em C para calcular a raiz quadrada de um nmero positivo, usando o roteiro
abaixo, baseado no mtodo de aproximaes sucessivas de Newton. O programa dever prover 25
aproximaes.
Seja Y o nmero do qual se deseja a raiz quadrada. Obtemos:
a primeira aproximao para a raiz quadrada de Y por X1 = Y2 ;
2
n +Y
as demais aproximaes para a raiz quadrada de Y por Xn+1 = X2X
n
Funes
34. Codifique uma funo que receba por parmetro a idade de uma pessoa, expressa em anos, meses e
dias, e retorne essa idade expressa em dias. Desconsidere anos bissextos.
35. Codifique uma funo que receba a mdia final de um aluno passado por parmetro e retorne o seu
conceito (atravs de uma varivel char), conforme a Tabela 1:
Nota
De 0 a 49
De 50 a 69
De 70 a 89
De 90 a 100
Conceito
D
C
B
A
Tabela 1:
36. Codifique uma funo com a assinatura int contaimpar(int n1, int n2) que retorne o nmero de
inteiros impares que existem entre n1 e n2 (inclusive ambos, se for o caso). Caso o valor de n2 seja
menor que o de n1, a funo deve tratar o invervalo como sendo de n2 at n1 sem que o invocador
da funo perceba.
Ex :
n = contaimpar ( 1 0 , 1 9 ) ; / n r e c e b e 5 ( r e f e r e n t e a : 1 1 , 1 3 , 1 5 , 1 7 , 1 9 ) /
n = contaimpar ( 5 , 1 ) ; / n r e c e b e 3 ( r e f e r e n t e a : 1 , 3 , 5 ) /
37. Codifique uma funo com a assinatura void estacao(int dia, int mes) que exiba no vdeo qual a
estao do ano correspondente data passada por parmetro. Lembre-se que a primavera comea
em 23 de setembro, o vero em 21 de dezembro, o outono em 21 de maro e o inverno em 21 de
junho.
Ex:
estacao ( 2 5 , 1 0 ) ; / Deve i m p r i m i r a mensagem : 25/10 e primavera . /
estacao ( 2 9 , 1 2 ) ; / Deve i m p r i m i r a mensagem : 29/12 e v e r a o . /
38. Codifique uma funo com a assinatura int somaintervalo(int n1, int n2) que retorne a soma dos
nmeros inteiros que existem no intervalo fechado entre n1 e n2 (ou seja, incluindo n1 e n2). Caso
o valor de n2 seja menor que o de n1, a funo deve tratar o invervalo como sendo de n2 at n1 sem
que o invocador da funo perceba.
Ex:
5
n=somaintervalo ( 3 , 6 ) ; / n r e c e b e 18 ( r e f e r e n t e a : 3 + 4 + 5 + 6 ) /
n=somaintervalo ( 5 , 5 ) ; / n r e c e b e 5 ( r e f e r e n t e a : 5 ) /
n=somaintervalo ( 2 ,3) ; / n r e c e b e 3 ( r e f e r e n t e a : 2 + 1 + 0 + 1 + 2+ 3 ) /
n=somaintervalo ( 4 , 0 ) ; / n r e c e b e 10 ( r e f e r e n t e a : 4 + 3 + 2 + 1 + 0 ) /
39. Codifique uma funo com a assinatura int multiplica_intervalo(int n1, int n2) que retorne o
produto dos nmeros inteiros que existem no intervalo fechado entre n1 e n2 (ou seja, incluindo n1
e n2), excluindo-se o nmero 0, caso esteja no intervalo. Caso o valor de n2 seja menor que o de n1,
a funo deve tratar o invervalo como sendo de n2 at n1 sem que o invocador da funo perceba.
Ex:
n=multiplica_intervalo ( 3 , 6 ) ; / n r e c e b e 360 ( r e f e r e n t e a : 3 4 5 6 ) /
n=multiplica_intervalo ( 5 , 5 ) ; / n r e c e b e 5 ( r e f e r e n t e a : 5 ) /
n=multiplica_intervalo ( 2 ,3) ; / n r e c e b e 12 ( r e f e r e n t e a : 2 1 1 2 3 ) /
40. Codifique uma funo que receba um nmero inteiro n passado por parmetro e devolve o primeiro
nmero da srie de fibonacci que maior ou igual a n.
41. Para o programa a seguir:
1
#i n c l u d e <s t d i o . h>
2
3
4
i n t soma1 ( i n t q , i n t c ) ;
i n t soma2 ( i n t ra ) ;
5
6
7
int i = 10;
int j = 20;
8
9
10
i n t main ( ) {
i n t i , k , ra , p ;
11
p = 10;
ra = 5 ;
12
13
14
f o r ( i = 0 ; i< 3 ; i++){
k = soma1 ( ra , p ) ;
ra = soma2 ( k ) ;
printf ( "%d , %d\n " , ra , k ) ;
}
15
16
17
18
19
20
21
22
return 0;
23
24
25
26
i n t soma1 ( i n t q , i n t c ) {
i n t soma = q+i+c ;
r e t u r n soma ;
6
27
28
29
30
31
32
33
i n t soma2 ( i n t ra ) {
int k = j ;
ra = ra + k ;
r e t u r n ra ;
}
a) Determine quais so as variveis locais e globais deste programa, identificando a que funo
pertence cada varivel local.
b) Mostre o que ser impresso na tela do computador quando for executado este programa.