MAC 110 – Introdu¸c˜ao `a Computa¸c˜ao
Bacharelado em Matem´atica Computacional – Primeiro Semestre de 2008 Primeira Prova – 11 de abril de 2008
Nome do aluno:
Assinatura:
No. USP: Curso: Professor:
Instru¸ c˜ oes
1. N˜ao destaque as folhas deste caderno.
2. Preencha o cabe¸calho acima.
3. A prova pode ser feita a l´apis. Cuidado com a legibilidade.
4. A prova consta de 3 quest˜oes. Verifique antes de come¸car a prova se o seu caderno de quest˜oes est´a completo.
5. N˜ao ´e permitido o uso de folhas avulsas para rascunho.
6. N˜ao ´e permitido a consulta a livros, apontamentos ou colegas.
7. N˜ao ´e necess´ario apagar rascunhos no caderno de quest˜oes.
8. Qualquer quest˜ao pode ser resolvida em qualquer p´agina. Se a resposta n˜ao est´a na p´agina corres- pondente ao enunciado da quest˜ao, indique claramente em qual p´agina se encontra a resposta.
DURAC¸ ˜AO DA PROVA: 2 horas
Quest˜ao Valor Nota
1 2,5
2 3,5
3 4,0
1. (valor: 2,5 pontos)
Simule a execu¸c˜ao do programa abaixo, destacando a sa´ıda do programa. Considere que a sa´ıda do programa consiste de tudo que resulta dos comandos printf.
#include <stdio.h>
int main() {
int n, m, i, k, NUSP;
scanf("%d", &NUSP);/* digite seu n´umero USP */
n = NUSP % 10;
printf("Ultimo digito = %d\n", n);
if (n > 5) n = n - 4;
else
if (n < 3) n = n + 2;
else
n = n + 1;
printf("n = %d\n", n);
m = 6;
i=1;
while (i < n){
printf("m = %d\n", m);
i = i + m % n;
printf("i = %d\n", i);
m = 23;
}
for (k=2; k < m; k++){
if (m == 7) m=m+2;
else m=m/k;
if (m > 2 || k < 3)
printf("m = %d k = %d\n", m, k);
else
printf("m = %d\n",m);
for (i=1; i<k; i++) n = n + 1;
}
printf("Valores finais: %d %d\n",k,n);
return 0;
}
Para efeito de corre¸c˜ao s´o ser´a considerada a sa´ıda do programa. Vocˆe pode usar a tabela abaixo como bem entender. Cada turma esta habituada a simular de maneira diferente, fazendo tabelas com “caras” diferentes da abaixo.
n m i k NUSP
2. (Valor: 3.5) Escreva um programa em C que leia um inteiro positivo n e uma seq¨uˆencia de n n´umeros inteiros e imprima quantos segmentos de n´umeros iguais consecutivos comp˜oem essa seq¨uˆencia.
Exemplo 1: Dados
10
5 12 12 30 4 4 4 4 12 12
o seu programa deve imprimir 5, pois a seq¨uˆencia dada ´e formada por 5 segmentos de n´umeros iguais consecutivos.
Exemplo 2: Dados
5
4 4 4 4 4
o seu programa deve imprimir 1, pois a seq¨uˆencia dada ´e formada por um ´unico segmento de n´umeros iguais consecutivos.
Simule a execu¸c˜ao do seu programa para os seguintes dados:
10
5 2 2 3 4 4 4 4 1 1
3. (valor: 4,0 pontos) Dizemos que um n´umero natural ´eparelho se a soma dos seus d´ıgitos ´e par.
Exemplos: O n´umero 1376 n˜ao ´e parelho, pois a soma dos seus d´ıgitos ´e 1 + 3 + 7 + 6 = 17. J´a o n´umero 12337 ´e parelho, pois a soma dos seus d´ıgitos ´e 1 + 2 + 3 + 3 + 7 = 16.
Escreva um programa em C que leia um inteiro n ≥ 0 e uma seq¨uˆencia com n n´umeros naturais, e imprima o maior n´umero parelho da seq¨uˆencia. Caso a seq¨uˆencia n˜ao tenha nenhum n´umero parelho, o seu programa deve imprimir uma mensagem adequada.
Exemplo 1: Dados
6
124 252 123 79 80 173
o seu programa deve imprimir 123. (Apenas os n´umeros 123, 79 e 80 s˜ao parelhos, e o 123 ´e o maior deles.)
Exemplo 2: Dados
9
121 34 130 202 18 467 123 19 283
o seu programa deve imprimir 202. (Apenas os n´umeros 121, 130, 202, 18 123, e 19 s˜ao parelhos, e o maior deles ´e o 202.)
Exemplo 3: Dados
3
151 7 34