Buscar

lista02(com respostas)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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);
}

Outros materiais