Point Out Errors

Question 1 :

Point out the error, if any in the for loop.

#include
int main()
{
    int i=1;
    for(;;)
    {
        printf("%d\n", i++);
        if(i>10)
           break;
    }
    return 0;
}


A). There should be a condition in the for loop
B). The two semicolons should be dropped
C). The for loop should be replaced with while loop.
D). No error
Answer : Option D

Explanation :

Step 1: for(;;) this statement will genereate infinite loop.
Step 2: printf("%d\n", i++); this statement will print the value of variable i and increement i by 1(one).
Step 3: if(i>10) here, if the variable i value is greater than 10, then the for loop breaks.

Hence the output of the program is
1
2
3
4
5
6
7
8
9
10


Question 2 :

Point out the error, if any in the program.

#include
int main()
{
    int a = 10;
    switch(a)
    {
    }
    printf("This is c program.");
    return 0;
}


A). Error: No case statement specified
B). Error: No default specified
C). No Error
D). Error: infinite loop occurs
Answer : Option C

Explanation :

There can exists a switch statement, which has no case.


Question 3 :

Point out the error, if any in the program.

#include
int main()
{
    int i = 1;
    switch(i)
    {
        printf("This is c program.");
        case 1:
            printf("Case1");
            break;
        case 2:
            printf("Case2");
            break;
    }
return 0;
}


A). Error: No default specified
B). Error: Invalid printf statement after switch statement
C). No Error and prints "Case1"
D). None of above
Answer : Option C

Explanation :

switch(i) becomes switch(1), then the case 1: block is get executed. Hence it prints "Case1".
printf("This is c program."); is ignored by the compiler.
Hence there is no error and prints "Case1".


Question 4 :

Point out the error, if any in the while loop.

#include
int main()
{
    int i=1;
    while()
    {
        printf("%d\n", i++);
        if(i>10)
           break;
    }
    return 0;
}


A). There should be a condition in the while loop
B). There should be at least a semicolon in the while
C). The while loop should be replaced with for loop.
D). No error
Answer : Option A

Explanation :

The while() loop must have conditional expression or it shows "Expression syntax" error.
Example: while(i > 10){ ... }


Question 5 :

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

#include
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.
Answer : Option C

Explanation :

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


Question 6 :

Point out the error, if any in the program.

#include
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.
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.


Question 7 :

Point out the error, if any in the program.

#include
int main()
{
    int i = 1;
    switch(i)
    {
        case 1:
           printf("Case1");
           break;
        case 1*2+4:
           printf("Case2");
           break;
    }
return 0;
}


A). Error: in case 1*2+4 statement
B). Error: No default specified
C). Error: in switch statement
D). No Error
Answer : Option D

Explanation :

It prints "Case1"


Question 8 :

Point out the error, if any in the while loop.

#include
int main()
{
    void fun();
    int i = 1;
    while(i <= 5)
    {
        printf("%d\n", i);
        if(i>2)
            goto here;
    }
return 0;
}
void fun()
{
    here:
    printf("It works");
}


A). No Error: prints "It works"
B). Error: fun() cannot be accessed
C). Error: goto cannot takeover control to other function
D). No error
Answer : Option C

Explanation :

A label is used as the target of a goto statement, and that label must be within the same function as the goto statement.

Syntax: goto <identifier> ;

Control is unconditionally transferred to the location of a local label specified by <identifier>.
Example:

#include 
int main()
{
    int i=1;
    while(i>0)
    {
        printf("%d", i++);
        if(i==5)
          goto mylabel;
    }
    mylabel:
    return 0;
}

Output: 1,2,3,4


Question 9 :

Point out the error, if any in the program.

#include 
int main()
{
    int a = 10, b;
    a >=5 ? b=100: b=200;
    printf("%d\n", b);
    return 0;
}


A). 100
B). 200
C). Error: L value required for b
D). Garbage value
Answer : Option C

Explanation :

Variable b is not assigned.
It should be like:
b = a >= 5 ? 100 : 200;