Programming mcq

Q.1       What is the output of the following program?

main ( )

{     int x = 2, y = 5;

       if (x < y) return (x = x+y); else printf (“z1”);



                   (A)  z2                                                (B)  z1z2

(C)    Compilation error                         (D)  None of these 


            Ans: D

            There is no compilation error but there will no output because function is returning a value and if statement is true in this case.


Q.2       Choose the correct one

(A)   Address operator can not be applied to register variables                                          

(B)   Address operator can be applied to register variables

                          (C) Use of register declaration will increase the execution time

                   (D)  None of the above


              Ans: D

            A register access is much faster than a memory access, keeping the frequently accessed variables in the register will lead to faster execution of programs.


Q.3       What is the following program doing?

                   main ()

         { int d = 1;


                    printf(“%d\n”, d++);

         while (d < = 9);}                        

                   (A)  Adding 9 integers                         (B)  Adding integers from 1 to 9

(C)  Displaying integers from 1 to 9      (D)  None of these


             Ans: C

            d starting from 1 is incrementing one by one till d=9 so the printf statement is printing numbers from 1 to 9.


Q.4       What is the output of the following program?

                   main ( )

         {    extern int x;

               x = 20;

                printf(“\n%d”, x);



                   (A)  0                                                  (B)  20

(C)    error                                            (D)  garbage value


            Ans: C

            Output of the given program will be “Linker error-undefined symbol x”. External variables are declared outside a function.


Q.5       If x is one dimensional array, then pick up the correct answer

(A)     *(x + i) is same as &x[i]               (B)  *&x[i] is same as x + i

(C)  *(x + i) is same as x[i] +1             (D)  *(x + i) is same as *x[i]


            Ans: A

            num[i] is same as *(num+i)


Q.6       Consider the following declaration

                      int a, *b = &a, **c = &b;

                   The following program fragment

                       a = 4;

             **c = 5;                                               

(A)     does not change the value of a      (B)  assigns address of c to a

(C)  assigns the value of b to a             (D)  assigns 5 to a


            Ans: D

            The given statements assigns 5 to a


Q.7       Choose the correct answer                                           

(A)     enum variable can not be assigned new values            

(B)     enum variable can be compared

(C)     enumeration feature increase the power of C

(D)    None of the above


            Ans: C

            The enumerated data types give an opportunity to invent our own data typeand define what value the variable of this data type can take.


Q.8       The content of file will be lost if it is opened in                               

(A)    w mode                                        (B)  w+ mode

(C)  a mode                                         (D)  a+ mode


            Ans: A

            When the mode is writing, the contents are deleted and the file is opened as a new file.


Q.9       Consider the following code segment:

                  int a[10], *p1, *p2;

        p1 = &a[4];

        p2 = &a[6];

                  Which of the following statements is incorrect w.r.t. pointers? 

                  (A)  p1 + 2                                           (B)  p2 – 2

                  (C)  p2 + p1                                         (D)  p2 – p1                                         


Ans: C

Addition of two pointers is not allowed.       


Q.10     The second expression (j – k) in the following expression will be evaluated

                   (i + 5) && (j – k)

(A) if expression (i + 5) is true.            

(B) if expression (i + 5) is false.

(C)  irrespective of whether (i + 5) is true or false.             

(D)  will not be evaluated in any case.


              Ans: A

In a compound logical expression combined with &&, the second expression is evaluated only if first is evaluated in true.


Q.11           In the for statement: for (exp1; exp2; exp3) { … }

                   where exp1, exp2 and exp3 are expressions. What is optional?

(A)    None of the expressions is optional.

(B)    Only exp1 is optional.

(C)    Only exp1 and exp3 are optional.

(D)   All the expressions are optional.


              Ans: D

             All the expressions are optional. For (;;) is a valid statement in C.


Q.12     The output of the following code segment will be

                          char x = ‘B’;

    switch (x) {

    case ‘A’: printf(“a”);

    case ‘B’: printf(“b”);

    case ‘C’: printf(“c”);


                   (A)  B                                                 (B)  b

                   (C)  BC                                               (D)  bc


              Ans: D

Since there is no break statement, all the statement after case’B’ are executed.


Q.13           What will be the output of the following code segment?

         main( ) {

    char s[10];

    strcpy(s, “abc”);

    printf(“%d %d”, strlen(s), sizeof(s));


(A)    3 10                                            (B)  3 3

(C)  10 3                                             (D)  10 10


Ans: A 

strlen(s) give the length of the string, that is 3 and sizeof(s) give the size of array s that is 10.


Q.14     Which of the following is the odd one out?

(A)  j = j + 1;                                        (B)  j =+ 1;

(C)  j++;                                                (D)  j += 1;

              Ans: B

j=+1 is odd one out as rest all means incrementing the value of variable by 1.


Q.15     Which of the following is true for the statement:

                   NurseryLand.Nursery.Students = 10;

(A)   The structure Students is nested within the structure Nursery.   

(B)  The structure NurseryLand is nested within the structure Nursery.

(C)  The structure Nursery is nested within the structure NurseryLand.

(D) The structure Nursery is nested within the structure Students.    


              Ans: C

              The structure Nursery is nested within the structure NurseryLand.


Q.16     What will be the output of the following code segment, if any?

         myfunc ( struct test t) {

    strcpy(t.s, “world”);


 main( ) {

struct test { char s[10]; } t;   

    strcpy(t.s, “Hello”);

    printf(“%s”, t.s);


    printf(“%s”, t.s);


(A)    Hello Hello                                   (B) world world

(C) Hello world                                   (D) the program will not compile


              Ans: D

The program will not compile because undefined symbol s for myfunc( ) function. Structure should be defined before the main and the function where it is called.


Q.17     If a function is declared as void fn(int *p), then which of the following statements is valid to call function fn?

(A)   fn(x) where x is defined as int x; 

(B)   fn(x) where x is defined as int *x;

(C) fn(&x) where x is defined as int *x;

(D) fn(*x) where x is defined as int *x;


Ans: B

Function void fn(int *p) needs pointer to int as argument. When x is defined as int *x, then x  is pointer to integer and not *x.


Q.18     What is the following function computing? Assume a and b are positive integers.

  int fn( int a, int b) {

    if (b == 0)

          return b;


          return (a * fn(a, b – 1));


(A)  Output will be 0 always                (B)  Output will always be b

(C)  Computing ab                               (D)  Computing a + b


Ans: A

The output is always be 0 because b is decremented in recursive function fn each time by 1 till the terminating condition b==0 where it will return 0.


Q.19     What is the output of the following C program? 

                                                      # include <stdio.h>

main ( )


            int a, b=0;

            static int c [10]={1,2,3,4,5,6,7,8,9,0};

            for (a=0; a<10;+ + a)

            if ((c[a]%2)= = 0) b+ = c [a];

            printf (“%d”, b);


                  (A)  20                                                 (B)  25

                  (C)  45                                                 (D)  90                                                 


Ans: A

printf statement will print b which is sum of the those values from array c which get divided by 2, that is 2+4+6+8=20.


Q.20     If a, b and c are integer variables with the values a=8, b=3 and c=-5. Then what is the value of the arithmetic expression:

                   2 *  b + 3 * (a-c)

(A)   45                                               (B)  6

(C)  -16                                              (D)  -1


              Ans: A

              the value of the arithmetic expression is 45 as 2*3+3*(8—5)=6+3*13=6+39=45


Q.21     A global variable is a variable                                    

(A)  declared in the main ( ) function.

(B) declared in any function other than the main ( ) function.

(C)  declared outside the body of every function.

(D) declared any where in the C program.


              Ans: C

              A global variable is declared outside the body of every function.


Q.22     main ( ) is an example of

                   (A)  library function                              (B)  user defined function

                   (C)  header                                          (D)  statement


              Ans: A

main() is a special function used by C system to tell the computer where the program starts.


Q.23     While incrementing a pointer, its value gets increased by the length of the data type to which it points. This length is called 

(A)   scale factor                                   (B)  length factor

(C)  pointer factor                                (D)  increment factor

              Ans: D

While incrementing a pointer, its value gets increased by the length of the data type to which it points.


Q.24     The first digit of a decimal constant must be

(A)  a zero                                           (B)  a non zero number

(C)  a negative number                         (D)  an integer


              Ans: D

Decimal constants consist of a set of digit, 0 to 9, preceded by an optional – or + sign.


Q.25     What is the output of the following statement:

                   printf (“%-3d”,12345);

(A)   1 2 3                                            (B)  -1 2 3

(C)  1 2 3 4 5                                      (D)  12    


              Ans: C

printf statement would print 12345.


Q.26     A single character input from the keyboard can be obtained by using the function.

                   (A) printf ( )                                         (B) scanf ( )

(C) putchar ( )                                     (D) getchar ( )


              Ans: D

              Reading a single character can be done by using the function getchar( ).


Q.27     The function ftell  ( )

(A)  reads a character from a file         

(B)   reads an integer from a file

(C) gives the current position in the file

(D) sets the position to the beginning of the file.


Ans: C

ftell( ) takes a file pointer and returns a number of type long, that corresponds to the current position.


Q.28     If the variables i, j and k are assigned the values 5,3 and 2 respectively, then the expression i = j + ( k + + = 6 ) + 7

                   (A)  gives an error message                  (B)  assigns a value 16 to i

(C)  assigns a value 18 to i                   (D)  assigns a value 19 to i


              Ans: A

              It gives an error message-Lvalue required.


Q.29     If an integer needs two bytes of storage, then the maximum value of a signed integer is                                      

                  (A)  216-1                                             (B)  215-1

                  (C)  216                                                (D)  215                                                 


Ans: B

            If we use a 16 bit word length, the size of the integer value is limited to the range

 -215 to 215-1

Q.30     Literal means

                                                                       (A)  a string      (B)  a string constant

(C)  a character                                   (D)  an alphabet


            Ans: B

Literal means a string constant.


Q.31     If ‘y’ is of integer type then the expressions


(A)   must yield the same value.

(B)  must yield different values.

(C)  may or may not yield the same value.

(D) none of the above.


            Ans: C

The expression may or may not yield the same value.


Q.32     In the following code fragment

                    int x, y = 2, z, a;

         x=(y*=2) + (z=a=y);

         printf (‘%d’,x);

                   (A)  prints 8                                        

                   (B)  prints 6

(C) prints 6 or 8 depending on the compiler         

(D)  is syntactically wrong


              Ans: A

              It will print 8 because x=(y*=2)+(z=a=y)=4+4=8.


Q.33           A possible output of the following program fragment is                   

                   for (i=getchar();; i=get.char())

                   if (i==‘x’) break;

                   else putchar(i); 

(A)    mi                                                (B)  mix

(C)  mixx                                             (D)  none of the above


              Ans: D

              None of the above as it is wrong syntax.


Q.34           In a for loop, if the condition is missing, then,

(A)  It is assumed to be present and taken to be false.

(B)     It is assumed to be present and taken to be true.

(C)     It results in a syntax error.

(D)  Execution will be terminated abruptly.


              Ans: B


Q.35     If storage class is missing in the array definition, by default it will be taken to be

                   (A)  automatic

(B)  external

(C)  static

(D) either automatic or external depending on the place of occurrence.


              Ans: A

            A variable declared inside inside a function without storage class specification is, by default, an automatic variable.


Q.36     The maximum number of dimensions an array can have in C is

                   (A) 3                                                   (B) 4

(C) 5                                                   (D) compiler dependent


              Ans: D

C allows arrays of three or more dimensions. The exact limit is determined by the compiler.


Q.37     puts(argv[0]);

(A)  prints the name of the source code file.         

(B) prints argv.

(C) prints the number of command line arguments.             

(D) prints the name of the executable code file.


              Ans: D

argv[0] represent the filename where the executable code of the program is stored.




Q.39     Which amongst the following expression uses bitwise operator?

(A)  a++                                              (B)  !a>5

                   (C)  a|b                                               (D)  a!=b


Ans: C

              | is bitwise OR.


Q.40     The output of the following program is


                           main( )

            {   float y;


                printf(“%7.2f”, y);



   (A) 1 9 8 . 7 3 6 (B) 1 9 8 . 7 3   


(C)   1 9 8 . 7 4 (D) 1 9 8 . 7 4  


Ans: C

              The printf statement is giving formatted output till two places of decimal.



Q.41     Which is not dynamic memory allocation function?

                   (A)  malloc                                          (B)  free

(C)    alloc                                            (D)  calloc


Ans: C

              Three dynamic memory allocation functions are: malloc, calloc and free


Q.42     Which header file is used for screen handling function:-

(A)    IO.H                                            (B) STDLIB.H

(C) CONIO.H                                    (D) STDIO.H


Ans: D

The header file stdio.h contains definitions of constants,macros and types, along with function declarations for standard I/O functions.  


Q.43     Choose the directive that is used to remove previously defined definition of the macro name that follows it –

(A)   # remdef                                       (B)  # pragma

(C) # undef                                          (D) # define


Ans: C

            The preprocessor directive  #undef OKAY would cause the definition of OKAY to be removed from the system.


Q.44     The output of the following is

                              x = ‘a’;

             printf(“%d”, x);


(A) ‘a’                                                (B)  a

(C)  97                                               (D)  None of the above       


Ans: C

              The printf statement is printing ascii value of a, that is 97.


Q.45     Consider the following statement

int j, k, p;

float q, r, a;

a = j/k;


         If q=7.2, r=20, j=3, k=2

                    The value of a and p is

(A)   a=1.5, p=3.6                                (B)  a=2, p=3                  

(C)  a=1.5, p=4                                   (D)  a=1, p=3


Ans: C

a=3/2=1.5 and p=q/r=7.2/2=3.6 is rounded off to 4.


Q.46           Choose the function that returns remainder of x/y –

(A)  remainder( )                                 (B) mod( )

(C)  modulus( )                                   (D) rem( )


Ans: C

modulus( ) function produces the reminder of an integer division.


Q.47           What is the output of following program:-

int q, *p, n;

q = 176;             If the address of q is 2801

p = &q;              and p is 2600

n = *p;

             printf(“%d”, n);

                   (A)  2801                                            (B)  176

(C)  2600                                            (D)  None of the above


Ans: B

              n is assigned a the value which is present at the address of q and that value is 176.


Q.48     Consider the following statements-

x = 5;

y = x >3 ? 10 : 20;

                    The value of y is

(A)  10                                                (B)  20

(C)  5                                                  (D)  3


Ans: A

Since x=5 is greater than 3 so y is assigned value 10. It is equivalent to if-else statements.


Q.49     Determine which of the following is an invalid character constant.

(A)  ‘\a’                                               (B)  ‘T’

                   (C)  ‘\0’                                              (D)  ‘/n’


Ans: D

newline character constant is “\n” not “/n”.


Q.50     What is the name of built-in function for finding square roots?

                   (A)  square(x)                                      (B)  sqr(x)

                   (C)  sqrt(x)                                          (D)  No built-in function


Ans: C

sqrt(x) is a built-in function for finding square roots.


Q.51     What is the output of following statement?

for(i=1; i<4; i++)

printf(“%d”,(i%2) ? i : 2*i);

                   (A)  1   4   3                                        (B)  1   2   3

(C)   2   4   6                                       (D)  2   2   6

Ans: A

for i=1, (i%2) is true so the statement will print 1; for for i=2, (i%2) is false so the statement will print 2*i=2*2=4; for for i=3, (i%2) is again true so the statement will print 3; for i=4, the statement is out from the loop.


Q.52     Which of the following statement is true about a function?

(A) An invoking function must pass arguments to the invoked function.                              

(B)    Every function returns a value to the invoker.

(C)    A function may contain more than one return statement.                                             

(D)  Every function must be defined in its own separate file.


Ans: A

An invoking function must pass arguments to the invoked function.


Q.53     What is the output of the following program?

                                                                       main( )


     int i=4, z=12;

     if(i=5 || z>50)





(A)  hello                                              (B)  hye

(C) syntax error                                   (D) hellohye


Ans: A

i=5 will assign value 5 to i so the if statement (i=5||z>50) is true so “printf” statement will print hello.