C Programming



1. Which of the following statements should be used to obtain a remainder after dividing 3.14 by 2.1 ?

A. rem = 3.14 % 2.1;
B. rem = modf(3.14, 2.1);
C. rem = fmod(3.14, 2.1);
D. Remainder cannot be obtain in floating point division.

Answer: Option C

Explanation:

fmod(x,y) - Calculates x modulo y, the remainder of x/y. 
This function is the same as the modulus operator. But fmod() performs floating point divisions.

Example:

#include <stdio.h>
#include <math.h>

int main ()
{
  printf ("fmod of 3.14/2.1 is %lf\n", fmod (3.14,2.1) );
  return 0;
}

Output:

fmod of 3.14/2.1 is 1.040000




2. What are the types of linkages?

A. Internal and External
B. External, Internal and None
C. External and None
D. Internal

Answer: Option B

Explanation:

External Linkage-> means global, non-static variables and functions.
Internal Linkage-> means static variables and functions with file scope.
None Linkage-> means Local variables.




3. Which of the following special symbol allowed in a variable name?

A. * (asterisk)
B. | (pipeline)
C. - (hyphen)
D. _ (underscore)

Answer: Option D

Explanation:

Variable names in C are made up of letters (upper and lower case) and digits. The underscore character ("_") is also permitted. Names must not begin with a digit.

Examples of valid (but not very descriptive) C variable names:
=> foo 
=> Bar 
=> BAZ 
=> foo_bar 
=> _foo42 
=> _ 
=> QuUx 




4. Is there any difference between following declarations?

1 : extern int fun();
2 : int fun();

A. Both are identical
B. No difference, except extern int fun(); is probably in another file
C. int fun(); is overrided with extern int fun();
D. None of these

Answer: Option B

Explanation:

extern int fun(); declaration in C is to indicate the existence of a global function and it is defined externally to the current module or in another file.

int fun(); declaration in C is to indicate the existence of a function inside the current module or in the same file.




5. How would you round off a value from 1.66 to 2.0?

A. ceil(1.66)
B. floor(1.66)
C. roundup(1.66)
D. roundto(1.66)

Answer: Option A

Explanation:

/* Example for ceil() and floor() functions: */

#include<stdio.h>
#include<math.h>

int main()
{
    printf("\n Result : %f" , ceil(1.44) );
    printf("\n Result : %f" , ceil(1.66) );

    printf("\n Result : %f" , floor(1.44) );    
    printf("\n Result : %f" , floor(1.66) );

    return 0;
}
// Output:
// Result : 2.000000
// Result : 2.000000
// Result : 1.000000
// Result : 1.000000





6. By default a real number is treated as a

A. float
B. double
C. long double
D. far double

Answer: Option B

Explanation:

In computing, 'real number' often refers to non-complex floating-point numbers. It include both rational numbers, such as 42 and 3/4, and irrational numbers such as pi = 3.14159265...

When the accuracy of the floating point number is insufficient, we can use the double to define the number. The double is same as float but with longer precision and takes double space (8 bytes) than float.

To extend the precision further we can use long double which occupies 10 bytes of memory space.




7. Which of the following is not user defined data type?

1:
struct book
{
    char name[10];
    float price;
    int pages;
};

2:
long int l = 2.35;

3:
enum day {Sun, Mon, Tue, Wed};

A. 1
B. 2
C. 3
D. Both 1 and 2

Answer: Option B

Explanation:

C data types classification are

Primary data types:

int
char
float
double
void

Secondary data types (or) User-defined data type:

Array
Pointer
Structure
Union
Enum

So, clearly long int l = 2.35; is not User-defined data type. 
(i.e.long int l = 2.35; is the answer.)




8. Is the following statement a declaration or definition?
extern int i;

A. Declaration
B. Definition
C. Function
D. Error

Answer: Option A

Explanation:

Declaring is the way a programmer tells the compiler to expect a particular type, be it a variable, class/struct/union type, a function type (prototype) or a particular object instance. (ie. extern int i)

Declaration never reserves any space for the variable or instance in the program's memory; it simply a "hint" to the compiler that a use of the variable or instance is expected in the program. This hinting is technically called "forward reference".




9. Identify which of the following are declarations

1: extern int x;
2: float square ( float x ) { ... }
3: double pow(double, double);

A. 1
B. 2
C. 1and 3
D. 3

Answer: Option C

Explanation:

extern int x; - is an external variable declaration.

double pow(double, double); - is a function prototype declaration.

Therefore, 1 and 3 are declarations. 2 is definition.




10. In the following program, where is the variable "a" getting 'defined' and where it is getting 'declared'?

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

A. extern int a is declaration, int a = 20 is the definition
B. int a = 20 is declaration, extern int a is the definition
C. int a = 20 is definition, a is not defined
D. a is declared, a is not defined

Answer: Option A

Explanation:

- During declaration we tell the datatype of the Variable.

- During definition the value is initialized.




11. When we mention the prototype of a function?

A. Defining
B. Declaring
C. Prototyping
D. Calling

Answer: Option B

Explanation:

A function prototype in C or C++ is a declaration of a function that omits the function body but does specify the function's name, argument types and return type.

While a function definition specifies what a function does, a function prototype can be thought of as specifying its interface.





12. What is the output of the program given below ?

#include<stdio.h>
int main()
{
    enum status { pass, fail, atkt};
    enum status stud1, stud2, stud3;
    stud1 = pass;
    stud2 = atkt;
    stud3 = fail;
    printf("%d, %d, %d\n", stud1, stud2, stud3);
    return 0;
}

A. 0, 1, 2
B. 1, 2, 3
C. 0, 2, 1
D. 1, 3, 2

Answer: Option C

Explanation:

enum takes the format like {0,1,2..) so pass=0, fail=1, atkt=2

stud1 = pass (value is 0)

stud2 = atkt (value is 2)

stud3 = fail (value is 1)

Hence it prints 0, 2, 1




13. What will be the output of the program in 16 bit platform (Turbo C under DOS)?

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

A. 2
B. 4
C. vary from compiler
D. Linker Error : Undefined symbol 'i'

Answer: Option D

Explanation:

Linker Error : Undefined symbol 'i'
The statement extern int i specifies to the compiler that the memory for 'i' is allocated in some other program and that address will be given to the current program at the time of linking. 

But linker finds that no other variable of name 'i' is available in any other program with memory space allocated for it. Hence a linker error has occurred.




14. What is the output of the program?

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

A. 20
B. 0
C. Garbage Value
D. Error

Answer: Option A

Explanation:

extern int a; indicates that the variable a is defined elsewhere, usually in a separate source code module.

printf("%d\n", a); it prints the value of local variable int a = 20. Because, whenever there is a conflict between local variable and global variable, local variable gets the highest priority. 

So it prints 20.




15. What is the output of the program in Turbo C (in DOS 16-bit OS)?

#include<stdio.h>
int main()
{
    char *s1;
    char far *s2;
    char huge *s3;
    printf("%d, %d, %d\n", sizeof(s1), sizeof(s2), sizeof(s3));
    return 0;
}

A. 2, 4, 6
B. 4, 4, 2
C. 2, 4, 4
D. 2, 2, 2

Answer: Option C

Explanation:

Any pointer size is 2 bytes. (only 16-bit offset)
So, char *s1 = 2 bytes.
So, char far *s2; = 4 bytes.
So, char huge *s3; = 4 bytes.
A far, huge pointer has two parts: a 16-bit segment value and a 16-bit offset value.

Since C is a compiler dependent language, it may give different output in other platforms. The above program works fine in Windows (TurboC), but error in Linux (GCC Compiler).




16. What is the output of the program

#include<stdio.h>
int main()
{
    struct emp
    {
        char name[20];
        int age;
        float sal;
    };
    struct emp e = {"Tiger"};
    printf("%d, %f\n", e.age, e.sal);
    return 0;
}

A. 0, 0.000000
B. Garbage values
C. Error
D. None of above

Answer: Option A

Explanation:

When an automatic structure is partially initialized remaining elements are initialized to 0(zero).




17. What will be the output of the program?

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

A. 20
B. 40
C. Error
D. No Output

Answer: Option A

Explanation:

Whenever there is conflict between a local variable and global variable, the local variable gets priority.




18. What is the output of the program

#include<stdio.h>
int main()
{
    int x = 10, y = 20, z = 5, i;
    i = x < y < z;
    printf("%d\n", i);
    return 0;
}

A. 0
B. 1
C. Error
D. None of these

Answer: Option B

Explanation:

Since x < y turns to be TRUE it is replaced by 1. Then 1 < z is compared and to be TRUE. The 1 is assigned to i.




19. What is the output of the program

#include<stdio.h>
int main()
{
    extern int fun(float);
    int a;
    a = fun(3.14);
    printf("%d\n", a);
    return 0;
}
int fun(int aa)
{
    return (int)++aa;
}

A. 3
B. 3.14
C. 0
D. 4
E. Compile Error

Answer: Option E

Explanation:

2 Errors
1. Type mismatch in redeclaration of fun
2. Type mismatch in parameter aa




20. What is the output of the program

#include<stdio.h>
int main()
{
    int a[5] = {2, 3};
    printf("%d, %d, %d\n", a[2], a[3], a[4]);
    return 0;
}

A. Garbage Values
B. 2, 3, 3
C. 3, 2, 2
D. 0, 0, 0

Answer: Option D

Explanation:

When an automatic array is partially initialized, the remaining elements are initialized to 0.




21. What is the output of the program?

#include<stdio.h>
int main()
{
    union a
    {
        int i;
        char ch[2];
    };
    union a u;
    u.ch[0] = 3;
    u.ch[1] = 2;
    printf("%d, %d, %d\n", u.ch[0], u.ch[1], u.i);
    return 0;
}

A. 3, 2, 515
B. 515, 2, 3
C. 3, 2, 5
D. None of these

Answer: Option A

Explanation:

printf("%d, %d, %d\n", u.ch[0], u.ch[1], u.i); It prints the value of u.ch[0] = 3, u.ch[1] = 2 and it prints the value of u.i means the value of entire union size.






So the output is 3, 2, 515.




22. In the following program how long will the for loop get executed?

#include<stdio.h>
int main()
{
    int i=5;
    for(;scanf("%s", &i); printf("%d\n", i));
    return 0;
}

A. The for loop would not get executed at all
B. The for loop would get executed only once
C. The for loop would get executed 5 times
D. The for loop would get executed infinite times

Answer: Option D

Explanation:

During the for loop execution scanf() ask input and then printf() prints that given input. This process will be continued repeatedly because, scanf() returns the number of input given, the 

condition is always true(user gives a input means it reurns '1').

Hence this for loop would get executed infinite times.




23. What will be the output of the program?

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

A. 40 40
B. 20 40
C. 20
D. Error


Answer: Option B

Explanation:

In case of a conflict between a local variable and global variable, the local variable gets priority.



No comments:

Post a Comment

Note: only a member of this blog may post a comment.