21.
Determine Output:
void main()
{
      int i=1, j=2;
      switch(i)
      {
            case 1: printf("GOOD"); break;
            case j: printf("BAD"); break;
      }
}

22.
Determine Output:
void main()
{
      int i;
      printf("%d", scanf("%d", &i)); // value 10 is given as input here
}

23.
Determine Output:
void main()
{
      int i=0;
      for(;i++;printf("%d", i));
      printf("%d", i);
}

24.
Determine Output:
void main()
{
      struct xx
      {
            int x=3;
            char name[] = "hello";
      };
      struct xx *s = malloc(sizeof(struct xx));
      printf("%d", s->x);
      printf("%s", s->name); 
}

25.
Determine output:
void main()
{
      extern int i;
      i=20;
      printf("%d", sizeof(i));
}

26.
Determine Output:
void main()
{
      int i=0, j=0;
      if(i && j++)
            printf("%d..%d", i++, j);
      printf("%d..%d", i, j);
}

27.
Determine Output:
void main()
{
      static int i=5;
      if(--i){
            main();
            printf("%d ", i);
      }
}

28.
Determine Output:
void main()
{
      int i=-1, j=-1, k=0, l=2, m;
      m = i++ && j++ && k++ || l++;
      printf("%d %d %d %d %d", i, j, k, l, m);
}

29.
Determine Output:
void main()
{
      int i = -1;
      +i;
      printf("i = %d, +i = %d", i, +i);
}

30.
Determine Output:
void main()
{
      char *str1 = "abcd";
      char str2[] = "abcd";
      printf("%d %d %d", sizeof(str1), sizeof(str2), sizeof("abcd"));
}