Wednesday, March 9, 2011

C programming Language Technical Interview Questions and Solution

Predict the output or error(s) for the following:

1.     struct aaa{
struct aaa *prev;
int i;
struct aaa *next;
};
main()
{
 struct aaa abc,def,ghi,jkl;
 int x=100;
 abc.i=0;abc.prev=&jkl;
 abc.next=&def;
 def.i=1;def.prev=&abc;def.next=&ghi;
 ghi.i=2;ghi.prev=&def;
 ghi.next=&jkl;
 jkl.i=3;jkl.prev=&ghi;jkl.next=&abc;
 x=abc.next->next->prev->next->i;
 printf("%d",x);
}

Answer:
2

Explanation:
above all statements form a double circular linked list;
abc.next->next->prev->next->i
this one points to "ghi" node the value of at particular node is 2.
2.       struct point
 {
 int x;
 int y;
 };
struct point origin,*pp;
main()
{
pp=&origin;
printf("origin is(%d%d)\n",(*pp).x,(*pp).y);
printf("origin is (%d%d)\n",pp->x,pp->y);

           
Answer:
origin is(0,0)
origin is(0,0)

Explanation:
pp is a pointer to structure. we can access the elements of the structure either with arrow mark or with indirection operator.
Note:
Since structure point  is globally declared x & y are initialized as zeroes
3.       main()
{
 int i=_l_abc(10);
             printf("%d\n",--i);
}
int _l_abc(int i)
{
 return(i++);
}

Answer:
9

Explanation:
return(i++) it will first return i and then increments. i.e. 10 will be returned.
4.       main()
{
 char *p;
 int *q;
 long *r;
 p=q=r=0;
 p++;
 q++;
 r++;
 printf("%p...%p...%p",p,q,r);
}

Answer:
0001...0002...0004

Explanation:
++ operator  when applied to pointers increments address according to their corresponding data-types.
5.      main()
{
 char c=' ',x,convert(z);
 getc(c);
 if((c>='a') && (c<='z'))  x=convert(c);  printf("%c",x);
}
convert(z)
{
  return z-32;
}

Answer:
Compiler error

Explanation:
declaration of convert and format of getc() are wrong.
6.      main(int argc, char **argv)
{
 printf("enter the character");
 getchar();
 sum(argv[1],argv[2]);
}
sum(num1,num2)
int num1,num2;
{
 return num1+num2;
}

Answer:
Compiler error.

Explanation:
argv[1] & argv[2] are strings. They are passed to the function sum without converting it to integer values. 
7.       # include 
int one_d[]={1,2,3};
main()
{
 int *ptr;
 ptr=one_d;
 ptr+=3;
 printf("%d",*ptr);
}

Answer:
garbage value

Explanation:
ptr pointer is pointing to out of the array range of one_d.

No comments:

Blog List