Programação 1

Aula prática 3. Respostas



1. A função printf(..)
 Qual será o output (saída) do programa a seguir?

   #include <stdio.h>

   main()
   {  int i = 67;
      printf("%d %c %f\n", i, i, i);
   }
 
Resposta:   67 C  0.000000                                                             . 



2. Variáveis e a sua capacidade de armazenamento

a)  sim = 32701? , não = 32823?  Imprima o que resulta declarando uma variavelde tipo inteiro cada valor:
b)  Qué resultado obteve? 3270 e, -32713 .Inteiros só podem armazenar até o número: 32767
c)  Como devería  modificar o tipo da variável inteira para poder armazenar este último número?: long int

2.2)Que resultado obtem se imprimir? 1.42
Que acontecia se n3 fose declarada como de tipo inteiro? Resultado = 1.



3. Cálculos
 Qual será o output do programa a seguir?

   #include <stdio.h>

   main()
   {
      unsigned int a, b;
      a = 2500;
      b = a * a;
      printf("%d*%d=%d\n", a, a, b);
   }
 
 
Resposta:      24080                                                          .

Agora verifica. Elimina o erro. : redeclarar as variáveis como long int; Resultado correcto a imprimir: 6.250.000



4. Utilizando a instrução if : nota final
Imagina que a uma dada cadeira, a nota de frequência é obtida da seguinte forma: um trabalho com peso 30% e um teste com peso 70%. Fazer um programa que calcula a vossa nota de frequência dessa cadeira. Se a nota de frequência for inferior a 9.5, o computador deve imprimir a mensagem: "tem de ir a exame". Caso contrário, imprime a mensagem: "Passaste com x valores".

#include <stdio.h>

void main()
{
 float tra, trab = 0.3;
 float final, tes, teste = 0.7;
 
 printf("\nnota teste?: "); scanf("%f", &tes);
 printf("\nnota trabalho?: "); scanf("%f", &tra);
 final = (trab * tra) + (teste * tes);
 if  (final  <  9.5)
   printf("\ndeve ir a exame");
 else
   printf("\nPassaste com %.1f valores", final);
}



5. if 2: estruturas mais complicadas.
5a) Faz um programa que pede ao utilizador 3 números e escrevo-os no ecrã na ordem decrescente:

#include <stdio.h>

void main()
{
  int n1, n2, n3, temp;
 
  clrscr();
  printf("\nEste programa recebe tres inteiros DISTINTOS e vai escrever-os na\ ordem decrescente. \n");
  printf("\nprimeiro n£mero: "); scanf("%d", &n1);
  printf("\nsegundo n£mero:  "); scanf("%d", &n2);
  printf("\nterceiro n£mero: ");   scanf("%d", &n3);

  /*estrategia:  sempre manter os numeros na ordem correcta  onde n1 ´= maior */
  if (n2 > n1)
    {temp = n1;  n1= n2;  n2 = temp;  }

  if (n3 > n1)
    {temp = n1; n1= n3; n3 = temp;  }

  if (n3 > n2)
    {temp = n2; n2 = n3; n3 = temp; }

  printf("\n\ordem decrescente: %d  %d  %d", n1,n2,n3);
}

Alternativamente você podia ter feito este programa utilizando 6 instruções if. sem mudar os valores das variáveis onde foram inicialmente atribuídas.



6.Mais cálculos

#include <stdio.h>
#include "hbstuff.h"

void main()
{
  float x1,x2,y1,y2;
  float m;

  printf("\ninserir coordenadas primer punto(x1):");
  scanf("%f", &x1);
  printf("\ninserir coordenadas primer punto(y1):");
  scanf("%f", &y1);
  printf("\ninserir coordenadas segundo punto(x2):");
  scanf("%f", &x2);
  printf("\ninserir coordenadas segundo punto(y2):");
  scanf("%f", &y2);

  m = ((y2 - y1) / (x2 -x1));
  printf("\n Pendente: %.2f", m);
  getch();
}