Online C Programming Test - C Programming Test 2



Loading...  Loading Test...

Instruction:

  • Total number of questions : 20.
  • Time alloted : 20 minutes.
  • Each question carry 1 mark, no negative marks.
  • DO NOT refresh the page.
  • All the best :-).

1.

How many times the while loop will get executed if a short int is 2 byte wide?

#include<stdio.h>
int main()
{
    int j=1;
    while(j <= 255)
    {
        printf("%c %d\n", j, j);
        j++;
    }
    return 0;
}

A.
Infinite times
B.
255 times
C.
256 times
D.
254 times

Your Answer: Option (Not Answered)

Correct Answer: Option B

Explanation:

The while(j <= 255) loop will get executed 255 times. The size short int(2 byte wide) does not affect the while() loop.

Learn more problems on : Control Instructions

Discuss about this problem : Discuss in Forum

2.

Which of the following errors would be reported by the compiler on compiling the program given below?

#include<stdio.h>
int main()
{
    int a = 5;
    switch(a)
    {
	case 1:
	printf("First");

	case 2:
	printf("Second");

	case 3 + 2:
	printf("Third");

	case 5:
	printf("Final");
	break;

    }
    return 0;
}

A.
There is no break statement in each case.
B.
Expression as in case 3 + 2 is not allowed.
C.
Duplicate case case 5:
D.
No error will be reported.

Your Answer: Option (Not Answered)

Correct Answer: Option C

Explanation:

Because, case 3 + 2: and case 5: have the same constant value 5.

Learn more problems on : Control Instructions

Discuss about this problem : Discuss in Forum

3.

Point out the error, if any in the program.

#include<stdio.h>
int main()
{
    int P = 10;
    switch(P)
    {
       case 10:
       printf("Case 1");

       case 20:
       printf("Case 2");
       break;

       case P:
       printf("Case 2");
       break;
    }
    return 0;
}

A.
Error: No default value is specified
B.
Error: Constant expression required at line case P:
C.
Error: There is no break statement in each case.
D.
No error will be reported.

Your Answer: Option (Not Answered)

Correct Answer: Option B

Explanation:

The compiler will report the error "Constant expression required" in the line case P: . Because, variable names cannot be used with case statements.

The case statements will accept only constant expression.

Learn more problems on : Control Instructions

Discuss about this problem : Discuss in Forum

4.

What will be the output of the program?

#include<stdio.h>
int main()
{
    int i=2;
    printf("%d, %d\n", ++i, ++i);
    return 0;
}

A.
3, 4
B.
4, 3
C.
4, 4
D.
Output may vary from compiler to compiler

Your Answer: Option (Not Answered)

Correct Answer: Option D

Explanation:

The order of evaluation of arguments passed to a function call is unspecified.

Anyhow, we consider ++i, ++i are Right-to-Left associativity. The output of the program is 4, 3.

In TurboC, the output will be 4, 3.

In GCC, the output will be 4, 4.

Learn more problems on : Expressions

Discuss about this problem : Discuss in Forum

5.

In the expression a=b=5 the order of Assignment is NOT decided by Associativity of operators

A.
True
B.
False

Your Answer: Option (Not Answered)

Correct Answer: Option B

Explanation:

The equal to = operator has Right-to-Left Associativity. So it assigns b=5 then a=b.

Learn more problems on : Expressions

Discuss about this problem : Discuss in Forum

6.

What is the notation for following functions?

1.  int f(int a, float b)
    {
        /* Some code */
    }

2.  int f(a, b)
    int a; float b;
    {
        /* Some code */
    }

A.
1. KR Notation
2. ANSI Notation
B.
1. Pre ANSI C Notation
2. KR Notation
C.
1. ANSI Notation
2. KR Notation
D.
1. ANSI Notation
2. Pre ANSI Notation

Your Answer: Option (Not Answered)

Correct Answer: Option C

Explanation:

KR Notation means Kernighan and Ritche Notation.

Learn more problems on : Functions

Discuss about this problem : Discuss in Forum

7.

How many times the program will print "IndiaBIX" ?

#include<stdio.h>

int main()
{
    printf("IndiaBIX");
    main();
    return 0;
}

A.
Infinite times
B.
32767 times
C.
65535 times
D.
Till stack overflows

Your Answer: Option (Not Answered)

Correct Answer: Option D

Explanation:

A call stack or function stack is used for several related purposes, but the main reason for having one is to keep track of the point to which each active subroutine should return control when it finishes executing.

A stack overflow occurs when too much memory is used on the call stack.

Here function main() is called repeatedly and its return address is stored in the stack. After stack memory is full. It shows stack overflow error.

Learn more problems on : Functions

Discuss about this problem : Discuss in Forum

8.

What will be the output of the program?

#include<stdio.h>
#define SQR(x)(x*x)

int main()
{
    int a, b=3;
    a = SQR(b+2);
    printf("%d\n", a);
    return 0;
}

A.
25
B.
11
C.
Error
D.
Garbage value

Your Answer: Option (Not Answered)

Correct Answer: Option B

Explanation:

The macro function SQR(x)(x*x) calculate the square of the given number 'x'. (Eg: 102)

Step 1: int a, b=3; Here the variable a, b are declared as an integer type and the variable b is initialized to 3.

Step 2: a = SQR(b+2); becomes,

=> a = b+2 * b+2; Here SQR(x) is replaced by macro to x*x .

=> a = 3+2 * 3+2;

=> a = 3 + 6 + 2;

=> a = 11;

Step 3: printf("%d\n", a); It prints the value of variable 'a'.

Hence the output of the program is 11

Learn more problems on : C Preprocessor

Discuss about this problem : Discuss in Forum

9.

A preprocessor directive is a message from programmer to the preprocessor.

A.
True
B.
False

Your Answer: Option (Not Answered)

Correct Answer: Option A

Explanation:

True, the programmer tells the compiler to include the preprocessor when compiling.

Learn more problems on : C Preprocessor

Discuss about this problem : Discuss in Forum

10.

What will be the output of the program ?

#include<stdio.h>

int main()
{
    char *p;
    p="hello";
    printf("%s\n", *&*&p);
    return 0;
}

A.
llo
B.
hello
C.
ello
D.
h

Your Answer: Option (Not Answered)

Correct Answer: Option B

Learn more problems on : Pointers

Discuss about this problem : Discuss in Forum

11.

How will you free the allocated memory ?

A.
remove(var-name);
B.
free(var-name);
C.
delete(var-name);
D.
dalloc(var-name);

Your Answer: Option (Not Answered)

Correct Answer: Option B

Learn more problems on : Structures, Unions, Enums

Discuss about this problem : Discuss in Forum

12.

In a file contains the line "I am a boy\r\n" then on reading this line into the array str using fgets(). What will str contain?

A.
"I am a boy\r\n\0"
B.
"I am a boy\r\0"
C.
"I am a boy\n\0"
D.
"I am a boy"

Your Answer: Option (Not Answered)

Correct Answer: Option C

Explanation:

Declaration: char *fgets(char *s, int n, FILE *stream);

fgets reads characters from stream into the string s. It stops when it reads either n - 1 characters or a newline character, whichever comes first.

Therefore, the string str contain "I am a boy\n\0"

Learn more problems on : Input / Output

Discuss about this problem : Discuss in Forum

13.

Which files will get closed through the fclose() in the following program?

#include<stdio.h>

int main()
{
    FILE *fs, *ft, *fp;
    fp = fopen("A.C", "r");
    fs = fopen("B.C", "r");
    ft = fopen("C.C", "r");
    fclose(fp, fs, ft);
    return 0;
}

A.
"A.C" "B.C" "C.C"
B.
"B.C" "C.C"
C.
"A.C"
D.
Error in fclose()

Your Answer: Option (Not Answered)

Correct Answer: Option D

Explanation:

Extra parameter in call to fclose().

Learn more problems on : Input / Output

Discuss about this problem : Discuss in Forum

14.

If the file 'source.txt' contains a line "Be my friend" which of the following will be the output of below program?

#include<stdio.h>

int main()
{
    FILE *fs, *ft;
    char c[10];
    fs = fopen("source.txt", "r");
    c[0] = getc(fs);
    fseek(fs, 0, SEEK_END);
    fseek(fs, -3L, SEEK_CUR);
    fgets(c, 5, fs);
    puts(c);
    return 0;
}

A.
friend
B.
frien
C.
end
D.
Error in fseek();

Your Answer: Option (Not Answered)

Correct Answer: Option C

Explanation:

The file source.txt contains "Be my friend".

fseek(fs, 0, SEEK_END); moves the file pointer to the end of the file.

fseek(fs, -3L, SEEK_CUR); moves the file pointer backward by 3 characters.

fgets(c, 5, fs); read the file from the current position of the file pointer.

Hence, it contains the last 3 characters of "Be my friend".

Therefore, it prints "end".

Learn more problems on : Input / Output

Discuss about this problem : Discuss in Forum

15.

According to ANSI specifications which is the correct way of declaring main when it receives command-line arguments?

A.
int main(int argc, char *argv[])
B.
int main(argc, argv)
int argc; char *argv;
C.
int main()
{
    int argc; char *argv;
}
D.
None of above

Your Answer: Option (Not Answered)

Correct Answer: Option A

Learn more problems on : Command Line Arguments

Discuss about this problem : Discuss in Forum

16.

What will be the output of the program (myprog.c) given below if it is executed from the command line?
cmd> myprog one two three

/* myprog.c */
#include<stdio.h>
#include<stdlib.h>

int main(int argc, char **argv)
{
    printf("%s\n", *++argv);
    return 0;
}

A.
myprog
B.
one
C.
two
D.
three

Your Answer: Option (Not Answered)

Correct Answer: Option B

Learn more problems on : Command Line Arguments

Discuss about this problem : Discuss in Forum

17.

Point out the correct statement which correctly allocates memory dynamically for 2D array following program?

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int *p, i, j;
    /* Add statement here */
    for(i=0; i<3; i++)
    {
        for(j=0; j<4; j++)
        {
            p[i*4+j] = i;
            printf("%d", p[i*4+j]);
        }
    }
    return 0;
}

A.
p = (int*) malloc(3, 4);
B.
p = (int*) malloc(3*sizeof(int));
C.
p = malloc(3*4*sizeof(int));
D.
p = (int*) malloc(3*4*sizeof(int));

Your Answer: Option (Not Answered)

Correct Answer: Option D

Learn more problems on : Memory Allocation

Discuss about this problem : Discuss in Forum

18.

malloc() allocates memory from the heap and not from the stack.

A.
True
B.
False

Your Answer: Option (Not Answered)

Correct Answer: Option A

Learn more problems on : Memory Allocation

Discuss about this problem : Discuss in Forum

19.

Point out the error in the following program.

#include<stdio.h>
#include<stdarg.h>
void display(char *s, ...);
int fun1();
int fun2();

int main()
{
    int (*p1)();
    int (*p2)();
    p1 = fun1;
    p2 = fun2;
    display("IndiaBIX", p1, p2);
    return 0;
}
void display(char *s, ...)
{
    int (*pp1)();
    int (*pp2)();
    va_list ptr;

    va_start(ptr, s);
    pp1 = va_arg(ptr, int(*)());
    (*pp1)();

    pp2 = va_arg(ptr, int(*)());
    (*pp2)();

}
int fun1()
{
    printf("Hello");
}
int fun2()
{
    printf("Hi");
}

A.
Error: invalid function display() call
B.
Error: invalid va_start(ptr, s);
C.
Error: va_arg cannot extract function pointer from variable argument list.
D.
Error: Rvalue required for t

Your Answer: Option (Not Answered)

Correct Answer: Option C

Learn more problems on : Variable Number of Arguments

Discuss about this problem : Discuss in Forum

20.

What do the following declaration signify?

int (*ptr)[30];

A.
ptr is a pointer to an array of 30 integer pointers.
B.
ptr is a array of 30 integer function pointer.
C.
ptr is a array of 30 integer pointers.
D.
ptr is a array 30 pointers.

Your Answer: Option (Not Answered)

Correct Answer: Option A

Learn more problems on : Complicated Declarations

Discuss about this problem : Discuss in Forum

Submit your test now to view the Results and Statistics with answer explanation.