Instituto de Computação - UNICAMP

MC102# - Prova 1 - Gabarito

Islene Calciolari Garcia


Questão 1 (2.5 pontos) Escreva a saída do programa abaixo:
#include <stdio.h>                        

int main() {
  int i, j;
  
  for (i = 0; i < 4; i++) {
   for (j = 0; j < 4 - i; j++)
     printf("+");    
   for (j = 0; j < 2 * i; j++)
     printf("-");
   for (j = 0; j < 4 - i; j++)
     printf("+");     
   printf("\n");
  }
  return 0;
}  

Resposta

++++++++
+++--+++
++----++
+------+
Questão 2 (2.5 pontos) Escreva um programa que calcule um conceito (A, B, C, D ou E) de acordo com o valor da nota de um aluno. Estruture o seu programa com comandos do tipo if-else.

Resposta

#include <stdio.h>                        

int main() {
  float nota;
  printf("Nota: ");
  scanf("%f", ¬a);

  if (nota > 10 || nota < 0)
    printf("Nota deve estar no intervalo de 0 a 10.\n");
  else if (nota >= 8.5)
    printf("Conceito A.\n");
  else if (nota >= 7.0)
    printf("Conceito B.\n");
  else if (nota >= 5.0)
    printf("Conceito C.\n");
  else if (nota >= 3.0)
    printf("Conceito D.\n");
  else
    printf("Conceito E.\n");
  return 0;
}
Observação: verificar se a nota estava no intervalo 0..10 não era obrigatório.

Muitos alunos cometeram um erro semelhante. Colocaram vários comandos if separados, sendo que apenas o último tem um else associado. Veja o exemplo abaixo:

#include <stdio.h>                        

int main() {
  float nota;
  printf("Nota: ");
  scanf("%f", ¬a);

  if (nota<= 10 && nota >= 8.5)
    printf("Conceito A.\n");
  if (nota< 8.5 && nota >= 7.0)
    printf("Conceito B.\n");
  if (nota < 7.0 && nota >= 5.0)
    printf("Conceito C.\n");
  if (nota < 5.0 && nota >= 3.0)
    printf("Conceito D.\n");
  else
    printf("Conceito E.\n");  /* Executado para qualquer nota
                                 maior do 5.0 e menor do que 3.0 */                                 
  return 0;
}

Questão 3 (2.5 pontos) Escreva um programa que imprime, em ordem crescente, os números ímpares menores ou iguais a um valor N fornecido pelo usuário. Veja o exemplo abaixo:

  N: 7
  1
  3
  5
  7

Resposta

#include <stdio.h>                        

int main() {
  int i, n;
  printf("N: ");
  scanf("%d", &n);

  for (i = 1; i <= n; i+=2) 
    printf("%d\n", i);

  return 0;
}
Questão 4 (2.5 pontos) Escreva um programa que, dada uma seqüência de N inteiros fornecidos pelo usuário, determina se esta seqüência está em ordem crescente. Leia todos os números antes de exibir a resposta. Veja os exemplos abaixo:
  Exemplo 1: 
  N: 7                                     
  1 5 8 2 17 21 53                         
  Não está em ordem crescente.             

  Exemplo 2:
  N: 7 
  3 5 10 16 24 32 61
  Ordem crescente.   

Resposta

#include <stdio.h>                        

int main() {
  int i, n;
  int ord;
  int ant, atual;

  printf("N: "); 
  scanf("%d", &n);

  ord = 1; /* Considera sequencia ordenada */
  scanf("%d", &ant);

  for (i = 1; i < n; i++) {
    scanf("%d", &atual);
    if (ant > atual)
      ord = 0;
    ant = atual;
  }

  if (ord) 
    printf("Ordem crescente.\n");
  else
    printf("Não está em ordem crescente.\n");
  return 0;
}