Programação Imperativa
Soluções da aula prática 4



1.
#include <stdio.h>
main()
{
  unsigned char a, b, c;

  printf("Give first operand: ");
  scanf("%d", &a);
  printf("Give second operand: ");
  scanf("%d", &b);
  c = a & b
  printf("%d & %d = %d\n", a, b, c);
  c = a && b
  printf("%d && %d = %d\n", a, b, c);
  c = a | b
  printf("%d | %d = %d\n", a, b, c);
}

Give first operand: 23
Give second operand: 11
23 & 11 = 1
23 && 11 = 3
71 | 15 = 79



2.
#include <stdio.h>
main()
{
  char opcao;
  double a, b;

  do
   {
    printf("Escolhe uma operação ( + - * / ):\n");
    scanf("%c", &opcao);
   }
  while ( (c!='+') && (c!='-') && (c!='*') && (c!='/') );
  printf("Introduz o primeiro operando\n");
  scanf("%f", &a);
  printf("Introduz o segundo operando\n");
  scanf("%f", &b);
  switch (opcao)
   {
     case '+': printf("%f + %f = %f\n", a, b, a+b);
               break;
     case '-': printf("%f - %f = %f\n", a, b, a-b);
               break;
     case '*': printf("%f * %f = %f\n", a, b, a*b);
               break;
     case '/': printf("%f + %f = %f\n", a, b, a/b);
   }
}

Escolhe uma operação ( + - * / ):
  /
Introduz o primeiro operando
  7
Introduz o segundo operando:
  2
7.0000 / 2.0000 = 3.5000



3.
#include <stdio.h>
main()
{
  float a;

  printf("Introduz a classificacao\n");
  scanf("%d", &a);
  if (a<=4.0)
    printf("Mau\n");
  else
    if (a<=9.0)
      printf("Mediocre\n");
    else
      if (a<=13.0)
        printf("Suficiente\n");
      else
        if (a<=17.0)
          printf("Bom\n");
        else
          printf("Muito bom\n");
}

Introduz a classificação:
  18
Muito Bom



4a.
#include <stdio.h>
main()
{
  int i;

  for (i=1; i<=10; i++)
    printf("Universidade do Algarve\n");
}



4b.
#include <stdio.h>
main()
{
  int i;

  for (i=1; i<=10000; i++)
   printf("%d ", i);
}



4c.
#include <stdio.h>
main()
{
  int i, n;

  printf("Introduz um numero:\n");
  scanf("%d", &n);
  for (i=1; i<=10; i++)
    printf("%d x %d = %d", n, i, n*i);
}



5.
#include <stdio.h>
main()
{
  unsigned char i, n;

  printf("Numero decimal (0..255): ");
  scanf("%d", &n);
  printf("binario: ");
  i=128;
  while (i>1)
    {
      printf("%d", (n&i)/i);
      i=i/2;
    }
}

Numero decimal (0..255): 33
binario: 00100001

Note:
128 = 10000000, 33 = 00100001, 33&128 = 00000000=0, (33&128)/128 = 0
 64 = 01000000, 33 = 00100001,  33&64 = 00000000=0,   (33&64)/64 = 0
 32 = 00100000, 33 = 00100001,  33&32 = 00100000=32,  (33&32)/32 = 1
 16 = 00010000, 33 = 00100001,  33&16 = 00000000=0,   (33&16)/16 = 0
  8 = 00001000, 33 = 00100001,   33&8 = 00000000=0,     (33&8)/8 = 0
  4 = 00000100, 33 = 00100001,   33&4 = 00000000=0,     (33&4)/4 = 0
  2 = 00000010, 33 = 00100001,   33&2 = 00000000=0,     (33&2)/2 = 0
  1 = 00000001, 33 = 00100001,   33&1 = 00000001=1,     (33&1)/1 = 1