Logo Passei Direto
Buscar

lista02(com respostas)

Ferramentas de estudo

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Universidade Tecnológica Federal do Paraná
Departamento Acadêmico de Informática
IF61C – Fundamentos de Programação 1 (2013-2)
Prof. Bogdan Tomoyuki Nassu
Lista de Exercícios – Aula 2
(*) 1. Dado o código-fonte do “Hello World!”, gerado automaticamente pelo Code::Blocks...
a) O que acontece se tirarmos o \n do argumento do printf?
b) O que acontece se em vez do \n tentarmos simplesmente pular uma linha, como abaixo?
printf("Hello world!
");
c) O que acontece se colocarmos um \n entre as palavras, como abaixo?
printf("Hello\nworld!\n");
d) O que acontece se usarmos 2 printf's?
printf("Hello ");
printf("world!\n");
e) Modifique o programa para que a sua saída seja exatamente igual ao código-fonte do Hello world!.
Dica: use a sequência de escape \t para imprimir uma tabulação.
Dica: use a sequência de escape \\ para imprimir uma barra invertida.
Dica: você não pode simplesmente colocar aspas duplas (") dentro de uma string. O compilador 
interpreta essas aspas como sendo o final da string, não como algo a ser impresso. Tente consultar a 
referência para descobrir o que fazer para poder imprimir as aspas.
(*) 2. Modifique o código-fonte do Hello World!, acrescentando ou removendo espaços e linhas entre 
símbolos. Por exemplo:
#include <stdio.h>
#include<stdlib.h>
int main () {
 printf ( "Hello world!\n") ;return 0;
}
Tente observar quando a alteração não tem efeito sobre o programa, quando a saída é modificada, e 
quando a alteração impede a compilação do programa.
(*) 3. Escreva 3 programas em C que mostrem os números no intervalo [1, 5], separados por vírgulas:
a) Um programa que use 5 variáveis para armazenar os números.
b) Um programa que use 5 constantes numéricas, mas nenhuma variável.
c) Um programa que não use nem variáveis nem constantes numéricas.
(*) 4. Escreva 3 programas em C que calculem e mostrem a média de 5 números reais:
a) Um que use 5 variáveis para armazenar os números e 1 variável para armazenar o resultado.
b) Um que use 5 variáveis para armazenar os números, mas não usa variáveis para armazenar o 
resultado.
c) Um que não use variáveis, apenas constantes numéricas.
(*) 5. Modifique o programa da questão 4.a para que ele mostre a média dos 2 primeiros números, dos 
3 primeiros números, e dos 4 primeiros números, antes de mostrar a média total. Por exemplo, se os 
números forem 1, 2, 3, 4 e 5, as médias serão:
1 e 2 – 1.5
1 a 3 – 2
1 a 4 – 2.5
1 a 5 – 3
O programa deve usar uma única variável para todas as médias.
(*) 6. Escreva um programa em C que atribua a uma variável um valor e mostre na tela o quadrado 
deste valor.
(**) 7. Um sub-problema básico e recorrente em programação é a troca dos valores de duas variáveis. 
Por exemplo, se no começo do programa tivermos que var1 tem valor 1 e var2 tem valor 2; no final 
do programa var1 deve ter o valor 2 e var2 o valor 1. Escreva um programa que realiza esta troca, 
mostrando os valores das variáveis antes e depois da troca. Os valores iniciais só podem ser digitados 
uma única vez.
(**) 8. O que será impresso pelo programa abaixo? (Importante: tente descobrir somente analisando o 
código, só execute o programa para conferir o resultado.)
#include <stdio.h>
int main ()
{
 int x, y, z;
 x = 10;
 y = x;
 z = y;
 y = 15;
 x = z;
 printf ("%d %d %d\n", x, y, z);
 return (0);
}
(**) 9. Escreva um programa que converta um dado número de segundos em dias, horas, minutos e 
segundos. Por exemplo, 7322 segundos correspondem a 0 dia, 2 horas, 2 minutos e 2 segundos.
(***) 10. Sabendo o custo de fábrica de um carro e que são pagos sobre este custo (a) 45% de imposto 
e (b) 12% de lucro do distribuidor, escreva um programa que mostre o preço de um carro ao 
consumidor e os valores pagos pelo imposto e pelo lucro.
Universidade Tecnológica Federal do Paraná
Departamento Acadêmico de Informática
IF61C – Fundamentos de Programação 1 (2013-2)
Prof. Bogdan Tomoyuki Nassu
Lista de Exercícios 2 – Aula 2 - Respostas
1.
a) A diferença é sutil – com o \n, o programa pula uma linha entre o Hello
world! impresso e as informações de execução (Process returned 0...).
b) O programa nem sequer compila. Você não pode “quebrar” a string desta forma,
e pular uma linha entre aspas não é igual a fazer o programa pular uma linha.
c) A saída fica sendo:
Hello
world!
d) A saída fica igual à original. Usar 2 printf's não faz com que uma linha seja
pulada, apenas o \n tem este efeito.
printf("Hello\n");
printf("world!\n");
e)
#include <stdio.h>
#include <stdlib.h>
int main()
{
 printf("#include <stdio.h>\n");
 printf("#include <stdlib.h>\n\n");
 printf("int main()\n");
 printf("{\n");
 printf("\tprintf(\"Hello world!\\n\");\n");
 printf("\treturn 0;\n");
 printf("}\n");
 return 0;
}
2. Teste e investigue! O que se pode afirmar é que as únicas alterações que
modificam a saída do programa são aquelas feitas dentro da string passada como
parâmetro à função printf. Qualquer outra alteração não tem efeito ou impede a
compilação do programa.
3.
a)
#include <stdio.h>
int main ()
{
 int num1 = 1;
 int num2 = 2;
 int num3 = 3;
 int num4 = 4;
 int num5 = 5;
 printf ("%d, %d, %d, %d, %d\n", num1, num2, num3, num4, num5);
 return (0);
}
b)
#include <stdio.h>
int main ()
{
 /* Passamos os números diretamente como parâmetros para a função printf. */
 printf ("%d, %d, %d, %d, %d\n", 1, 2, 3, 4, 5);
 return (0);
}
c)
#include <stdio.h>
int main ()
{
 /* Ao colocar os números dentro da string (entre aspas), eles não são
 interpretados como constantes numéricas, e sim como texto. */
 printf ("1, 2, 3, 4, 5\n");
 return (0);
}
4.
a)
#include <stdio.h>
int main ()
{
 double num1 = 10.4, num2 = 8.5, num3 = 7.2, num4 = 9.9, num5 = 3.2, media;
 /* A média é a soma dos valores dividida pelo número de valores. Atenção aos
 parêntesis! Se você não colocá-los, apenas o último termo (num5) será 
 dividido por 5.*/
 media = (num1 + num2 + num3 + num4 + num5)/5;
 printf ("%.2f\n", media);
 return (0);
}
b)
#include <stdio.h>
int main ()
{
 double num1 = 10.4, num2 = 8.5, num3 = 7.2, num4 = 9.9, num5 = 3.2;
 printf ("%.2f\n", (num1 + num2 + num3 + num4 + num5)/5);
 return (0);
}
c)
#include <stdio.h>
int main ()
{
 printf ("%.2f\n", (10.4 + 8.5 + 7.2 + 9.9 + 3.2)/5);
 return (0);
}
5.
#include <stdio.h>
int main ()
{
 double num1 = 1, num2 = 2, num3 = 3, num4 = 4, num5 = 5, media;
 media = (num1 + num2)/2;
 printf ("%.2f\n", media);
 media = (num1 + num2 + num3)/3;
 printf ("%.2f\n", media);
 media = (num1 + num2 + num3 + num4)/4;
 printf ("%.2f\n", media);
 media = (num1 + num2 + num3 + num4 + num5)/5;
 printf ("%.2f\n", media);
 return (0);
}
6.
/* Note que eu posso multiplicar a variável por ela mesma, e jogar o resultado 
direto no printf. Se você tem algum conhecimento sobre programação e usou a 
função pow, tente refletir sobre como a solução que está aqui é mais simples, 
direta, e eficiente. */
#include <stdio.h>
int main ()
{
 int x = 4;
 printf ("%d\n", x*x);
 return (0);
}
7.
/* A ideia mais simples para resolver este problema envolve uma analogia, que é
a mesma dos "copos de suco" da lista anterior. Existe uma outra solução, mais
matemática. Suponha que começamos com var1=x e var2=y:
var1 = var1 + var2; -> var1 = x+y;
var2 = var1 - var2; -> var2 = (x+y)-y = x;
var1 = var1 - var2; -> var1 = (x+y)-x = y;
*/
#include <stdio.h>
int main ()
{
 int var1, var2, tmp;
 var1 = 2;
 var2 = 4;
 printf ("%d\t%d\n", var1, var2);
 tmp = var1;
 var1 = var2;
 var2 = tmp;
 printf ("%d\t%d\n", var1, var2);
 return (0);
}8. Resposta: 10 15 10. Mais importante do que adivinhar o resultado é entender
que executando o algoritmo passo a passo, podemos descobrir o que ele faz.
9.
/* Note que as variáveis aqui têm nomes mnemônicos. É fácil entender o que cada
 variável representa. Se usássemos coisas como a, b e c, o significado de cada
 variável para o programa seria bem menos claro. */
#include <stdio.h>
int main ()
{
 int segundos_total = 180122;
 int dias, horas, minutos, segundos;
 /* 1 dia tem 24 horas, 1 hora tem 60 minutos, 1 minuto tem 60 segundos. */
 /* Note que, quando usado com inteiros, o operador / dá somente a parte
 inteira da divisão. */
 /* Desconta os dias do total de segundos. */
 dias = segundos_total / (24 * 60 * 60);
 segundos_total = segundos_total - (dias * 24 * 60 * 60);
 /* Desconta as horas do total de segundos. */
 horas = segundos_total / (60 * 60);
 segundos_total = segundos_total - (horas * 60 * 60);
 /* Desconta os minutos do total de segundos. */
 minutos = segundos_total / 60;
 segundos = segundos_total - (minutos * 60);
 printf ("%d dias, %d horas, %d minutos, %d segundos\n",
 dias, horas, minutos, segundos);
 return (0);
}
10.
/* Usamos aqui doubles para representar os valores, o que garante mais precisão 
do que teríamos usando apenas inteiros. Novamente, os nomes mnemônicos ajudam a
deixar claro o funcionamento do programa. */
#include <stdio.h>
int main ()
{
 double custo = 10000;
 double imposto, lucro, preco;
 imposto = custo * 0.45; /* 45% de imposto. */
 lucro = custo * 0.12; /* 12% de lucro. */
 preco = custo + imposto + lucro; /* O preço é a soma dos 3. */
 printf ("Imposto: %.2f\n", imposto);
 printf ("Lucro: %.2f\n", lucro);
 printf ("Preco: %.2f\n", preco);
 return (0);
}