type your search

Wednesday, January 18, 2012

C Programming Puzzles

C programming is very important topic for freshers, interviewers usually asks questions from C,C++,Data structures when it comes to programming. So i am starting this Topic , i will gather some good puzzles and keep on continuing this topic. I will also post the answers to the puzzles listed here soon.

The puzzles mostly covers on typo mistakes, basic understanding of some C concepts , i will explain the answers tho these puzzles covering those concepts also, And please use comment section.

A small poll here, should i post the answers just below each puzzle or should i post the answer in some other post and link it from here. I will post the answers in 3 days.Poll through comments.

 
1)
#include <stdio.h>

main()
{
 auto int i = 0;
 printf("%d\n",i);

 {
  int i = 2;
  printf("%d\n",i);
  {
   i+=1;
   printf("%d\n",i);
  }
  printf("%d\n",i);
 }
 printf("%d\n",i);
 printf("%d\n",reset());
 printf("%d\n",ret10());
 printf("%d\n",reset());
 printf("%d\n",ret10());
}


int reset()
{
 int j = 0;
 return(j);
}

int ret10()
{
 static int i = 10;
 i+=1;
 return(i);
}


2)
#include <stdio.h>
#include<string.h>
main()
{
 struct emp1
 {
  char *name;
  int age;
 };
 struct emp2
 {
  char *cp;
  struct emp1 e1;
 }e2 = {"ghi",{"jkl",123}};

 struct emp1 e3 = {"rwer",2341};
 printf("\n%s %d\n",e3.name,e3.age);
 printf("\n%s %s %d\n",e2.cp,e2.e1.name,e2.e1.age);
}

3)
#include <stdio.h>
struct xyz
{
 int xyz ;
}
;

main()
{
 union xyz
 {
  int xyz;
 }
 ;
}

4)
#include <stdio.h>
main()
{
 char s[] = "Bouquets and Brickbats";
 printf("\n%c, ",*(&s[2]));
 printf("%s, ",s+5);
 printf("\n%s",s);
 printf("\n%c",*(s+2));
}

5)
#include <stdio.h>
#include <stdio.h>
struct s
{
 char *st;
 struct s *sptr;
};
main()
{
 int i;
 struct s *p[3];
 static struct s a[]={
  {"abcd",a+1},
  {"pqrs",a+2},
  {"stuv",a}
 };
 for( i=0;i<3;i++ )
  p[i] = a[i].sptr;
 swap(*p,a);
 printf("%s %s %s \n",p[0]->st,(*p)->st, (*p)->sptr->st);
}

swap(p1,p2)
struct s *p1,*p2;
{
 char *temp;
 temp = p1->st;
 p1->st = p2->st;
 p2->st = temp;
}

6)
#include <stdio.h>
Swap( int *x , int *y)
{
 int tmp = *x ;
 *x = *y ;
 *y = tmp;
}
main()
{
 int a = 1, b = 2;
 Swap(&a, &b);
 printf("%d %d\n", a, b);
}

7)
#include <stdio.h>
main()
{
 int i;
 scanf("%d",&i);
 switch(i) {
  printf("\nHello");
  case 1: printf("\none");
  break;
  case 2: printf("\ntwo");
  break;
 }
}

8)
#include <stdio.h>
main()
{
 int x;
 x = 3;
 f(x);
 printf("MAIN");

}

f(int n)
{
 printf("F");
 if (n != 0)
  f(n-1);
}


9)
#include <stdio.h>
main()
{
 int ptr[] = {1,2,23,6,5,6};
 char str[] = {'a','b','c','d','e','f','g','h'};

 printf("pointer differences are %ld, %d",&ptr[3], &str[3]-&str[0]);
}

10)
#include <stdio.h>
main()
{
 char a,b,c;
 scanf("%c %c %c",&a,&b,&c);
 printf("%c %c %c ", a, b, c);
 }

11)
#include <stdio.h>
#define PRINT(int) printf( "int = %d ", int)
main()
{
 int x=03,y=02,z=01;
 PRINT (x | y & ~z);
 PRINT (x & y && z);
 PRINT (x ^ (y & ~z));
}

12)
#include <stdio.h>
main()
{
 int a = 10000;
 char b='c';
 int i,j;

 printf("%d,%d",printf("%d\n",a),printf("%c\n",b));
}

13)
#include <stdio.h>
#define PR(a)   printf("%d\t",(int) (a));
#define PRINT(a,b,c) PR(a);PR(b);PR(c);
#define MAX(a,b) (a<b?b:a)
main(){
 int x = 1,y = 2;
 PRINT(MAX(x++,y),x,y);
 PRINT(MAX(x++,y),x,y);
}

14)
#include <stdio.h>
main()
{
 unsigned int i=1;
 for(;i>=0;i--)  printf("hello: %u\n",i);
}

15)
#include <stdio.h>
main()
{
 struct ist{
  int x;
  int y;
};

 struct list{
  int x;
  struct ist next;
 }head;
  head.x = 100;
  head.next.x=10;
  printf("%d %d", head.x,head.next.x);
}

16)
#include <stdio.h>
main()
{
 typedef union
 {
  struct
  {
   char c1,c2;
  } s;
  long j;
  float x;
 } U;

 U example;
 example.s.c1 = 'a';
 example.s.c2 = 'b';
   example.j = 5;
 printf("%c %c %d", example.s.c1, example.s.c2, example.j);
}

17)
#include <stdio.h>
main()
{
 struct s1
 {       char *str;
  struct s1 *ptr;
 };
 static struct s1 arr[] = { {"Hyderabad",arr+1},{"Bangalore",arr+2},
{"Delhi",arr}};
 struct s1 *p[3];
 int i;

 for(i=0;i<=2;i++)
  p[i] = arr[i].ptr;

 printf("%s\n",(*p)->str);
 printf("%s\n",(++*p)->str);
 printf("%s\n",((*p)++)->str);
}

18)
#include <stdio.h>
main()
{
 struct s1
 {       char *str;
  struct s1 *ptr;
 };
 static struct s1 arr[] = {{"Hyderabad",arr+1},
  {"Bangalore",arr+2},
  {"Delhi",arr}
 };
 struct s1 *p[3];
 int i;

 for(i=0;i<=2;i++)       p[i] = arr[i].ptr;

 printf("%s  ",(*p)->str);
 printf("%s ",(++*p)->str);
 printf("%s ",((*p)++)->str);
}

19)
#include <stdio.h>
main()
{
 char input[] = "SSSWILTECH1\1\1";
 int i, c;
 for ( i=2; (c=input[i])!='\0'; i++){
  switch(c){
   case 'a': putchar ('i'); continue;
   case '1': break;
   case 1: while (( c = input[++i]) != '\1' && c!= '\0');
   case 9: putchar('S');
   case 'E': case 'L': continue;
   default: putchar(c);continue;
  }
  putchar(' ');
 }
 putchar('\n');
}

20)
#include <stdio.h>
main()
{
 int i, n, m, b, x[25];
 int f1(int, int, int j[25]);
 for(i=0;i<25;i++) x[i] = i;
 i=0; m = 24;
 b=f1(i, m, x);
 printf("res %d\n",b);
}

int f1( int p, int q, int a[25])
{
int m1,m2;
if (q==0)
 return(a[p]);
 else
 { 
 m1 = f1 (p, q/2, a);
 m2 = f1(p+q/2+1,q/2,a);
 if(m1<m2)
  return (m2);
 else
  return(m1);
 }
}

21)
#include <stdio.h>
main()
{
 int a[3][4] ={1,2,3,4,5,6,7,8,9,10,11,12} ;
 int i,j,k=99 ;
 for(i=0;i<3;i++)
  for(j=0;j<4;j++)
  if(a[i][j] < k) k = a[i][j];
 printf("%d", k);
}

22)
#include <stdio.h>
main()
{
 int a,b,c;
 for (b=c=10;a= "Love Your INDIA \
                           TFy!QJu ROo TNn(ROo)SLq SLq ULo+UHs UJq TNn*
RPn/QPbEWS_JSWQAIJO^NBELP\
                           eHBFHT}TnALVlBLOFAKFCFQHFOQIAIREETMSQGCSQOU
HATFAJKSbEALGSkMCSlOASn^r\
                           ^r\\tZvYxXyT|S~Pn SPm SOn TNn 
ULo0ULo#ULo-WHq!WFs XDt!"[b+++6];)
  while(a-->64) putchar (++c=='Z'?c=c/9:33^b&1);
}

23)
#include <stdio.h>
main()
{
 char *p = "hello world!";
 *(p+0) = 'H';
 printf("%s",p);
}

24)
#include <stdio.h>
main()
{
 unsigned int m[] = { 0x01,0x02, 0x04, 0x08,0x10, 0x20, 0x40, 0x80};
 unsigned int n,i;
 printf("%d",m[7]);
 scanf("%d",&n);
 for(i=0;i<=7;i++)
 {  if (n& m[i])
  printf("\nyes");
  else
   printf("\nno");
 }
}

25)
#include <stdio.h>
main()
{
 int a,b=2,c;
 int *pointer;
 c = 3;
 pointer = &c;
 a = c/*pointer*/;
 b = c /* assigning 3 to b*/;
 printf("a = %d; b = %d", a,b);
}

solve them and comment the solutions.

No comments:

Post a Comment