MAC 115 – Introdução à Computação Instituto de Física – Primeiro Semestre de 2004 - Noturno

Prova 1′ – 17/06/2004

Instruções:

1. A prova pode ser feita a lápis. Cuidado com a legibilidade.

2. Não é permitido o uso de folhas avulsas para rascunho.

3. Não é necessário apagar rascunhos no caderno de soluções.

\underline{Questão 1} (valor: 1 ponto)

Simule a execução do programa abaixo destacando a sua saída (o que “vai sair na tela”). Não apague seus rascunhos. Dado de entrada (a ser lido):

8
/*************************************************************
 Programa a ser simulado
 *************************************************************/
#include <stdio.h>
int Lucas(int n);
int main()
{
  int n;
  scanf("%d", &n);
  printf("L_%d = %d\n", n, Lucas(n));
  return 0;
}
int Lucas(int n)
{
  int a = 1, b = 3, t, i;
  if (n == 1) return 1;
  if (n == 2) return 3;
  for (i = 3; i <= n; i++) {
    { t = a + b; a = b; b = t; }
  return b;
}

\underline{Questão 2} (valor: 1 ponto)

Faça uma função de protótipo

  void imprima_triangulo(int n);

que, ao ser chamado com imprima_triangulo(n), imprime um triângulo da forma

1 2 ...   n
2 3 ... n
3 .. n
...
n

Por exemplo, para n = 1, …, 4, os resultados devem ser

1
1 2
2
1 2 3
2 3
3
1 2 3 4
2 3 4
3 4
4

\underline{Questão 3} (valor: 2 pontos)

(i) Escreva uma função de protótipo

       int max_el(int a[][MMAX], int m, int n);

que recebe uma matriz inteira a, com m linhas e n colunas, com todas as entradas não-negativas, e devolve o valor da maior entrada de a. Ademais, a sua função deve trocar uma entrada de a de maior valor por −1.

(ii) Escreva uma função de protótipo

       void imprima_decr(int a[][MMAX], int m, int n);

que imprime as entradas de a em ordem decrescente. Você deve usar a função max_el(), mesmo que você não a tenha feito.