Here are a compiled set of questions that have been asked by HCL in various institutions during their campus interview process. I have got these questions from IITKGP LAN. These questions are usually posted in the various job/campus related yahoo groups. I am just coping and pasting from the various text files, not sure about accuracy of the answers, do check urself if you have any doubts.

Section I - C Programming
  1. Which of the following about the following two declaration is true
    i ) int *F()
    ii) int (*F)()
    Choice :
    a) Both are identical
    b) The first is a correct declaration and the second is wrong
    c) The first declaraion is a function returning a pointer to an integer and the second is a pointer to function returning int
    d) Both are different ways of declarin pointer to a function
    Answer : c) The first de...
  2. What are the values printed by the following program?
    #define dprint(expr) printf(#expr "=%d\n",expr)
    main() {
    int x=7;
    int y=3;
    dprintf(x/y);
    }
    Choice:
    a) #2 = 2 b) expr=2 c) x/y=2 d) none
    Answer: c)x/y=2
  3. output of the following.
    main()
    {
    int i;
    char *p;
    i=0X89;
    p=(char *)i;
    p++;
    printf("%x\n",p);
    }
    ans:0X8A
  4. When an array is passed as parameter to a function, which of thefollowing statement is correct, choice:
    a) The function can change values in the original array
    b) In C parameters are passed by value. The funciton cannot change the original value in the array
    c) It results in compilation error when the function tries to access the elements in the array
    d) Results in a run time error when the funtion tries to access the elements in the array
    Answer: a) The fu.
  5. The type of the controlling _expression of a switch statement cannot be of the type
    a) int b) char c) short d)float e) none
    Answer : d)float
  6. What is the value assigned to the variable X if b is 7 ?
    X = b>8 ? b <<3>4 ? b>>1:b;
    a) 7 b) 28 c) 3 d) 14 e) None
    ans: 3;
  7. Which is the output produced by the following program
    main()
    {
    int n=2;
    printf("%d %d\n", ++n, n*n);
    }
    a) 3,6 b) 3,4 c) 2,4 d) cannot determine
    Answer : b) 3,4
  8. What is th output of the following program?
    int x= 0x65;
    main()
    {
    char x;
    printf("%d\n",x)
    }
    a) compilation error b) 'A' c) 65 d) unidentified
  9. What is the output of the following program
    main()
    {
    int a=10;
    int b=6;
    if(a=3)
    b++;
    printf("%d %d\n",a,b++);
    }
    a) 10,6 b)10,7 c) 3,6 d) 3,7 e) none
    Answer : d) 3,7
  10. What can be said of the following program?
    main()
    {
    enum Months {JAN =1,FEB,MAR,APR};
    Months X = JAN;
    if(X==1)
    {
    printf("Jan is the first month");
    }
    }
    a) Does not print anything
    b) Prints : Jan is the first month
    c) Generates compilation error
    d) Results in runtime error
    Answer: b) Prints : Jan..
  11. What is the output of the following program?
    main()
    {
    char *src = "Hello World";
    char dst[100];
    strcpy(src,dst);
    printf("%s",dst);
    }
    strcpy(char *dst,char *src)
    {
    while(*src) *dst++ = *src++;
    }
    a) "Hello World" b)"Hello" c)"World" d) NULL e) unidentified
    Answer: d) NULL
  12. What is the output of the following program?
    main()
    {
    int l=6;
    switch(l)
    { default : l+=2;
    case 4: l=4;
    case 5: l++;
    break;
    }
    printf("%d",l);
    }
    a)8 b)6 c)5 d)4 e)none
    Answer : c)5
  13. What is the output of the following program?
    main()
    {
    int x=20;
    int y=10;
    swap(x,y);
    printf("%d %d",y,x+2);
    }
    swap(int x,int y)
    {
    int temp;
    temp =x;
    x=y;
    y=temp;
    }
    a)10,20 b) 20,12 c) 22,10 d)10,22 e)none
    Answer:d)10,22
  14. What is the output of the following problem ?
    #define INC(X) X++
    main()
    {
    int X=4;
    printf("%d",INC(X++));
    }
    a)4 b)5 c)6 d)compilation error e) runtime error
    Answer : d) compilation error
  15. what can be said of the following
    struct Node {
    char *word;
    int count;
    struct Node left;
    struct Node right;
    }
    a) Incorrect definition
    b) structures cannot refer to other structure
    c) Structures can refer to themselves. Hence the statement is OK
    d) Structures can refer to maximum of one other structure
    Answer :c)
  16. What is the size of the following union. Assume that the size of int =2, size of float =4 and size of char =1.
    Union Tag{
    int a;
    flaot b;
    char c;
    };
    a)2 b)4 c)1 d) 7
  17. What is printed when this program is executed
    main()
    {
    printf ("%d\n",f(7));
    }
    f(X)
    {
    if (x<= 4)
    return x;
    return f(--x);
    }
    a) 4
    b) 5
    c) 6
    d) 7
    ans: a
  18. On a machine where pointers are 4 bytes long, what happens when the following code is executed.
    main()
    {
    int x=0,*p=0;
    x++; p++;
    printf ("%d and %d\n",x,p);
    }
    a) 1 and 1 is printed
    b) 1 and 4 is printed
    c) 4 and 4 is printed
  19. Which of the following is the correct code for strcpy, that is used to copy the contents from src to dest?
    a) strcpy (char *dst,char *src)
    {
    while (*src)
    *dst++ = *src++;
    }
    b) strcpy (char *dst,char *src)
    {
    while(*dst++ = *src++)
    }
    c) strcpy (char *dst,char *src)
    {
    while(*src)
    { *dst = *src;
    dst++; src++;
    }
    }
    d) strcpy(char *dst, char *src)
    {
    while(*++dst = *++src);
    }
    ans:b
  20. Consider the following program
    main()
    {
    int i=20,*j=&i;
    f1(j);
    *j+=10;
    f2(j);
    printf("%d and %d",i,*j);
    }
    f1(k)
    int *k;
    {
    *k +=15;
    }
    f2(x)
    int *x;
    {
    int m=*x,*n=&m;
    *n += 10;
    }
    The values printed by the program will be
    a) 20 and 55
    b) 20 and 45
    c) 45 and 45
    d) 45 and 55
    e) 35 and 35
  21. what is printed when the following program is compiled and
    executed?

    int
    func (int x)
    {
    if (x<=0)
    return(1);
    return func(x -1) +x;
    }
    main()
    {
    printf("%d\n",func(5));
    }
    a) 12
    b) 16
    c) 15
    d) 11