Wednesday, March 9, 2011

C programming Language Technical Interview Questions and Answers

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

8.       # include
aaa() {
  printf("hi");
 }
bbb(){
 printf("hello");
 }
ccc(){
 printf("TechPreparation.com");
 }
main()
{
  int (*ptr[3])();
  ptr[0]=aaa;
  ptr[1]=bbb;
  ptr[2]=ccc;
  ptr[2]();
}

Answer:
TechPreparation.com

Explanation:
ptr is array of pointers to functions of return type int.ptr[0] is assigned to address of the function aaa. Similarly ptr[1] and ptr[2] for bbb and ccc respectively. ptr[2]() is in effect of writing ccc(), since ptr[2] points to ccc.
9.       #include
main()
{
FILE *ptr;
char i;
ptr=fopen("zzz.c","r");
while((i=fgetch(ptr))!=EOF)
printf("%c",i);
}

Answer:
contents of zzz.c followed by an infinite loop 

Explanation:
The condition is checked against EOF, it should be checked against NULL.
10.       main()
{
 int i =0;j=0;
 if(i && j++)
            printf("%d..%d",i++,j);
printf("%d..%d,i,j);
}

Answer:
0..0

Explanation:
The value of i is 0. Since this information is enough to determine the truth value of the boolean expression. So the statement following the if statement is not executed.  The values of i and j remain unchanged and get printed.
11.     main()
{
 int i;
 i = abc();
 printf("%d",i);
}
abc()
{
 _AX = 1000;
}

Answer:
1000

Explanation:
Normally the return value from the function is through the information from the accumulator. Here _AH is the pseudo global variable denoting the accumulator. Hence, the value of the accumulator is set 1000 so the function returns value 1000.
12.       int i;
            main(){
int t;
for ( t=4;scanf("%d",&i)-t;printf("%d\n",i))
                        printf("%d--",t--);
                        }
            // If the inputs are 0,1,2,3 find the o/p

Answer:
            4--0
                        3--1
                        2--2     

Explanation:
Let us assume some x= scanf("%d",&i)-t the values during execution
                        will be,
          t        i       x
          4       0      -4
          3       1      -2
          2       2       0
13.       main(){
  int a= 0;int b = 20;char x =1;char y =10;
  if(a,b,x,y)
        printf("hello");
 }

Answer:
hello

Explanation:
The comma operator has associativity from left to right. Only the rightmost value is returned and the other values are evaluated and ignored. Thus the value of last variable y is returned to check in if. Since it is a non zero value if becomes true so, "hello" will be printed.
14.       main(){
 unsigned int i;
 for(i=1;i>-2;i--)
                        printf("c aptitude");
}

Explanation:
i is an unsigned integer. It is compared with a signed value. Since the both types doesn't match, signed is promoted to unsigned value. The unsigned equivalent of -2 is a huge value so condition becomes false and control comes out of the loop.
15. In the following pgm add a  stmt in the function  fun such that the address of
'a' gets stored in 'j'.
main(){
  int * j;
  void fun(int **);
  fun(&j);
 }
 void fun(int **k) {
  int a =0;
  /* add a stmt here*/
 }

Answer:
                        *k = &a
Explanation:
The argument of the function is a pointer to a pointer.
16. What are the following notations of defining functions known as?
i.      int abc(int a,float b)
                        {
                        /* some code */
 }
ii.    int abc(a,b)
        int a; float b;
                        {
                        /* some code*/
                        }

Answer:
i.  ANSI C notation
ii. Kernighan & Ritche notation

Blog List