Point Out Correct Statements

Question 1 :

Which of the following is correct way to define the function fun() in the below program?

#include
int main()
{
    int a[3][4];
    fun(a);
    return 0;
}


A).
void fun(int p[][4])
{
}
B).
void fun(int *p[4])
{
}
C).
void fun(int *p[][4])
{
}
D).
void fun(int *p[3][4])
{
}
Answer : Option A

Explanation :

void fun(int p[][4]){ } is the correct way to write the function fun(). while the others are considered only the function fun() is called by using call by reference.


Question 2 :

Which of the following statements mentioning the name of the array begins DOES NOT yield the base address?
1: When array name is used with the sizeof operator.
2: When array name is operand of the & operator.
3: When array name is passed to scanf() function.
4: When array name is passed to printf() function.


A). A
B). A, B
C). B
D). B, D
Answer : Option B

Explanation :

The statement 1 and 2 does not yield the base address of the array. While the scanf() and printf() yields the base address of the array.


Question 3 :

Which of the following statements are correct about the program below?

#include
int main()
{
    int size, i;
    scanf("%d", &size);
    int arr[size];
    for(i=1; i<=size; i++)
    {
        scanf("%d", arr[i]);
        printf("%d", arr[i]);
    }
    return 0;
}


A). The code is erroneous since the subscript for array used in for loop is in the range 1 to size.
B). The code is erroneous since the values of array are getting scanned through the loop.
C). The code is erroneous since the statement declaring array is invalid.
D). The code is correct and runs successfully.
Answer : Option C

Explanation :

The statement int arr[size]; produces an error, because we cannot initialize the size of array dynamically. Constant expression is required here.
Example: int arr[10];
One more point is there, that is, usually declaration is not allowed after calling any function in a current block of code. In the given program the declaration int arr[10]; is placed after a function call scanf().


Question 4 :

Which of the following statements are correct about 6 used in the program?
int num[6];
num[6]=21;


A). In the first statement 6 specifies a particular element, whereas in the second statement it specifies a type.
B). In the first statement 6 specifies a array size, whereas in the second statement it specifies a particular element of array.
C). In the first statement 6 specifies a particular element, whereas in the second statement it specifies a array size.
D). In both the statement 6 specifies array size.
Answer : Option B

Explanation :

The statement 'B' is correct, because int num[6]; specifies the size of array and num[6]=21; designates the particular element(7th element) of the array.


Question 5 :

Which of the following statements are correct about an array?
1: The array int num[26]; can store 26 elements.
2: The expression num[1] designates the very first element in the array.
3: It is necessary to initialize the array at the time of declaration.
4: The declaration num[SIZE] is allowed if SIZE is a macro.


A). 1
B). 1,4
C). 2,3
D). 2,4
Answer : Option B

Explanation :

1. The array int num[26]; can store 26 elements. This statement is true.
2. The expression num[1] designates the very first element in the array. This statement is false, because it designates the second element of the array.
3. It is necessary to initialize the array at the time of declaration. This statement is false.
4. The declaration num[SIZE] is allowed if SIZE is a macro. This statement is true, because the MACRO just replaces the symbol SIZE with given value.

Hence the statements '1' and '4' are correct statements.