52
C Programming :: Declarations and Initializations 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

C Programming

Embed Size (px)

Citation preview

Page 1: C Programming

C Programming :: Declarations and Initializations

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:

C

B

Page 2: C Programming

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?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 fileC.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.

D

B

Page 3: C Programming

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.66) );

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

return 0;}

// Output: Result : 2.000000// Output: Result : 1.000000

6.  By default a real number is treated as aA. 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.

A

B

Page 4: C Programming

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

1. Primary data types 1. int2. char3. float4. double5. void

2. Secondary data types (or) User-defined data type 1. Array2. Pointer3. Structure4. Union5. 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

B

A

Page 5: C Programming

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.1 and 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 definitionC.int a = 20 is definition, a is not definedD. a is declared, a is not defined

C

Page 6: C Programming

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.

C Programming Declarations and Initializations Find Output of Program

1.  What is the output of the program #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

A

B

C

Page 7: C Programming

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

2.  What will be the output of the program? #include<stdio.h>int main(){ extern int i; i = 20; printf("%d\n", sizeof(i)); return 0;}A. 2

B.4C.vary from compilerD. 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.

3.  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

D

Page 8: C Programming

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

4.  What is the output of the program #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 ohter platforms. The above program works fine in Windows (TurboC), but error in Linux (GCC Compiler).

5.  What is the output of the program #include<stdio.h>int main(){ struct emp

A

C

Page 9: C Programming

{ 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).

6.  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.

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

A

Page 10: C Programming

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.

8.  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(aa)float aa;{ return ((int)aa);}A. 3 B.3.14

C.0 D.Error

Answer: Option D

Explanation:

2 Errors1. Type mismatch in redeclaration of fun2. Type mismatch in parameter aa

9.  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

B

D

Page 11: C Programming

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

10.  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.

D

A

Page 12: C Programming

So the output is 3, 2, 515.

11.  In the following program how long will the for loop get executed? #include<stdio.h>int main(){ int i; 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 onceC.The for loop would get executed 5 timesD. 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.

12.  What will be the output of the program? #include<stdio.h>int main(){ int X=40;

D

Page 13: C Programming

{ 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.

C Programming > Declarations and Initializations > Point Out Errors

1.  Point out the error in the following program. #include<stdio.h>int main(){ display(); return 0;}void display(){ printf("IndiaBIX.com");}A. No error

B.display() doesn't get invokedC.display() is called before it is definedD. None of these

Answer: Option C

Explanation:

In this program the compiler will not know that the function display() exists. So, the compiler will generate "Type mismatch in redeclaration of function display()".

To over come this error, we have to add function prototype of function display().Another way to overcome this error is to define the function display() before the int main(); function.

B

C

Page 14: C Programming

#include<stdio.h>void display(); /* function prototype */

int main(){ display(); return 0;}void display(){ printf("IndiaBIX.com");}

Output: IndiaBIX.com

Note: This problem will not occur in modern compilers (this problem occurs in TurboC but not in GCC).

2.  Point out the error in the following program. #include<stdio.h>int main(){ void v = 0;

printf("%d", v);

return 0;}A. Error: Declaration syntax error 'v' (or) Size of v is unknown or zero.

B.Program terminates abnormally.C.No error.D. None of these.

Answer: Option A

3.  Point out the error in the following program. #include<stdio.h>struct emp{ char name[20]; int age;};int main(){ emp int xx; int a;

A

Page 15: C Programming

printf("%d\n", &a); return 0;}A. Error: in printf B.Error: in emp int xx;

C.No error. D.None of these.

Answer: Option B

Explanation:

There is an error in the line emp int xx;

To overcome this error, remove the int and add the struct at the begining of emp int xx;

#include<stdio.h>struct emp{ char name[20]; int age;};int main(){ struct emp xx; int a; printf("%d\n", &a); return 0;}

4.  Which of the following is correct about err used in the declaration given below? typedef enum error { warning, test, exception } err;A. It is a typedef for enum error.

B.It is a variable of type enum error.C.The statement is erroneous.D. It is a structure.

Answer: Option A

Explanation:

A typedef gives a new name to an existing data type. So err is a new name for enum error.

5.  Point out the error in the following program. #include<stdio.h>

B

A

Page 16: C Programming

int main(){ int (*p)() = fun; (*p)(); return 0;}int fun(){ printf("IndiaBix.com\n"); return 0;}A. Error: in int(*p)() = fun;

B.Error: fun() prototype not definedC.No errorD. None of these

Answer: Option B

Explanation:

The compiler will not know that the function int fun() exists. So we have to define the function prototype of int fun();To overcome this error, see the below program

#include<stdio.h>int fun(); /* function prototype */

int main(){ int (*p)() = fun; (*p)(); return 0;}int fun(){ printf("IndiaBix.com\n"); return 0;}

C Programming > Declarations and Initializations > Point Out Correct Statements

1.  Which of the definition is correct?A. int length; B.char int;

C.int long; D.float double;

B

A

Page 17: C Programming

Answer: Option A

Explanation:

int length; denotes that varaible length is int(integer) data type.

char int; here int is a keyword cannot be used a variable name.

int long; here long is a keyword cannot be used a variable name.

float double; here double is a keyword cannot be used a variable name.

So, the answer is int length;(Option A).

2.  Which of the following operations are INCORRECT?A.int i = 35; i = i%5; B.short int j = 255; j = j;

C.long int k = 365L; k = k; D.float a = 3.14; a = a%3;

Answer: Option D

Explanation:

float a = 3.14; a = a%3; gives "Illegal use of floating point" error.

The modulus (%) operator can only be used on integer types. We have to use fmod() function in math.h for float values.

3.  Which of the following correctly represents a long double constant?A. 6.68 B.6.68L

C.6.68f D.6.68LF

Answer: Option B

Explanation:

6.68 is double. 6.68L is long double constant. 6.68f is float constant. 6.68LF is not allowed in c.

4.  Which of the structure is incorrcet? 1 : struct aa

D

B

Page 18: C Programming

{ int a; float b;};

2 :

struct aa{ int a; float b; struct aa var;};

3 :

struct aa{ int a; float b; struct aa *var;};

A. 1 B.2

C.3 D.1, 2, 3

Answer: Option B

Explanation:

Option B gives "Undefined structure in 'aa'" error.

5.  Which of the structure is corrcet?

1 :

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

2 :

struct aa{ char name[10]; float price; int pages;}

3 :

struct aa{ char name[10]; float price; int pages;}

A. 1 B.2

C.3 D.All of above

B

A

Page 19: C Programming

Answer: Option A

Explanation:

In 2 and 3 semicolon are missing in structure element.

6.  1 : typedef long a;extern int a c;

2 : typedef long a;extern a int c;

3 : typedef long a;extern a c;

A. 1 correct B.2 correct

C.3 correct D.1, 2, 3 are correct

Answer: Option C

Explanation:

typedef long a;extern int a c; while compiling this statement becomes extern int long c;. This will result in to "Declaration syntax error".

typedef long a;extern a int c; while compiling this statement becomes extern long int c;. This will result in to "Too many types in declaration error".

typedef long a;extern a c; while compiling this statement becomes extern long c;. This is a valid c declaration statement. It says variable c is long data type and defined in some other file or module.

So, Option C is the correct answer.

C Programming > Floating Point Issues > General Questions

1.  What are the different types of real data type in C ?A. float, double B.short int, double, long int

C.float, double, long double D.double, long int, float

C

C

Page 20: C Programming

Answer: Option C

Explanation:

The floating point data types are called real data types. Hence float, double, and long double are real data types.

2.  What will you do to treat the constant 3.14 as a long double?A. use 3.14LD B.use 3.14L

C.use 3.14DL D.use 3.14LF

Answer: Option B

Explanation:

Given 3.14 is a double constant.

To specify 3.14 as long double, we have to add L to the 3.14. (i.e 3.14L)

3.  If the binary eauivalent of 5.375 in normalised form is 0100 0000 1010 1100 0000 0000 0000 0000, what will be the output of the program (on intel machine)? #include<stdio.h>#include<math.h>int main(){ float a=5.375; char *p; int i; p = (char*)&a; for(i=0; i<=3; i++) printf("%02x\n", (unsigned char)p[i]); return 0;}A. 40 AC 00 00 B.04 CA 00 00

C.00 00 AC 40 D.00 00 CA 04

Answer: Option C

4.  Which of the following range is a valid long double ?A. 3.4E-4932 to 1.1E+4932 B.3.4E-4932 to 3.4E+4932

C.1.1E-4932 to 1.1E+4932 D.1.7E-4932 to 1.7E+4932

Answer & Explanation

B

C

A

Page 21: C Programming

Answer: Option A

Explanation:

The range of long double is 3.4E-4932 to 1.1E+4932

5.  Which statement will you add in the following program to work it correctly? #include<stdio.h>int main(){ printf("%f\n", log(36.0)); return 0;}A. #include<conio.h> B.#include<math.h>

C.#include<stdlib.h> D.#include<dos.h>

Answer: Option B

Explanation:

math.h is a header file in the standard library of C programming language designed for basic mathematical operations.

Declaration syntax: double log(double);

6.  We want to round off x, a float, to an int value, The correct way to do isA. y = (int)(x + 0.5) B.y = int(x + 0.5)

C.y = (int)x + 0.5 D.y = (int)((int)x + 0.5)

Answer: Option A

Explanation:

Rounding off a value means replacing it by a nearest value that is approximately equal or smaller or greater to the given number.

y = (int)(x + 0.5); here x is any float value. To roundoff, we have to typecast the value of x by using (int)

Example:

#include <stdio.h>

B

A

Page 22: C Programming

int main (){ float x = 3.6; int y = (int)(x + 0.5); printf ("Result = %d\n", y ); return 0;}

Output:Result = 4.

7.  The binary equivalent of 5.375 isA. 101.101110111 B.101.011

C.101011 D.None of above

Answer: Option B

8.  A float occupies 4 bytes. If the hexadecimal equivalent of these 4 bytes are A, B, C and D, then when this float is stored in memory in which of the following order do these bytes gets stored?A. ABCD

B.DCBAC.0xABCDD. Depends on big endian or little endian architecture

Answer: Option D

9.  What will you do to treat the constant 3.14 as a float?A. use float(3.14f) B.use 3.14f

C.use f(3.14) D.use (f)(3.14)

Answer: Option B

10.  Which of the following statement obtains the remainder on dividing 5.5 by 1.3 ?A. rem = (5.5 % 1.3) B.rem = modf(5.5, 1.3)

C.rem = fmod(5.5, 1.3) D.Error: we can't divide

B

D

B

C

Page 23: C Programming

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 5.5 by 1.3 is %lf\n", fmod (5.5, 1.3) ); return 0;}

Output:fmod of 5.5 by 1.3 is 0.300000

C Programming > Floating Point Issues > Find Output of Program

1.  What will be the output of the program? #include<stdio.h>int main(){ float a=0.7; if(a < 0.7) printf("C\n"); else printf("C++\n"); return 0;}A. C B.C++

C.Compiler error D.Non of above

Answer: Option A

Explanation:

if(a < 0.7) here a is a float variable and 0.7 is a double constant. The float variable a is less than double constant 0.7. Hence the if condition is satisfied and it prints 'C'Example:

#include<stdio.h>int main()

A

Page 24: C Programming

{ float a=0.7; printf("%.10f %.10f\n",0.7, a); return 0;}

Output:0.7000000000 0.6999999881

2.  What will be the output of the program? #include<stdio.h>int main(){ float *p; printf("%d\n", sizeof(p)); return 0;}A. 2 in 16bit compiler, 4 in 32bit compiler

B.4 in 16bit compiler, 2 in 32bit compilerC.4 in 16bit compiler, 4 in 32bit compilerD. 2 in 16bit compiler, 2 in 32bit compiler

Answer: Option A

Explanation:

sizeof(x) returns the size of x in bytes.float *p is a pointer to a float.

In 16 bit compiler, the pointer size is always 2 bytes.In 32 bit compiler, the pointer size is always 4 bytes.

3.  What will be the output of the program? #include<stdio.h>int main(){ float fval=7.29; printf("%d\n", (int)fval); return 0;}A. 0 B.0.0

C.7.0 D.7

Answer: Option D

A

D

Page 25: C Programming

Explanation:

printf("%d\n", (int)fval); It prints '7'. because, we typecast the (int)fval in to integer. It converts the float value to the nearest integer value.

4.  What will be the output of the program? #include<stdio.h>#include<math.h>int main(){ printf("%f\n", sqrt(36.0)); return 0;}A. 6.0 B.6

C.6.000000 D.Error: Prototype sqrt() not found.

Answer: Option C

Explanation:

printf("%f\n", sqrt(36.0)); It prints the square root of 36 in the float format(i.e 6.000000).

Declaration Syntax: double sqrt(double x) calculates and return the positive square root of the given number.

5.  What will be the output of the program? #include<stdio.h>#include<math.h>int main(){ printf("%d, %d, %d\n", sizeof(3.14f), sizeof(3.14), sizeof(3.14l)); return 0;}A. 4, 4, 4 B.4, 8, 8

C.4, 8, 10 D.4, 8, 12

Answer: Option C

Explanation:

sizeof(3.14f) here '3.14f' specifies the float data type. Hence size of float is 4 bytes.

sizeof(3.14) here '3.14' specifies the double data type. Hence size of float is 8 bytes.

C

C

Page 26: C Programming

sizeof(3.14l) here '3.14l' specifies the long double data type. Hence size of float is 10 bytes.

Note: If you run the above program in Linux platform (GCC Compiler) it will give 4, 8, 12 as output. If you run in Windows platform (TurboC Compiler) it will give 4, 8, 10 as output. Because, C is a machine dependent language.

6.  What will be the output of the program? #include<stdio.h>int main(){ float f=43.20; printf("%e, ", f); printf("%f, ", f); printf("%g", f); return 0;}A. 4.320000e+01, 43.200001, 43.2 B.4.3, 43.22, 43.21

C.4.3e, 43.20f, 43.00 D.Error

Answer: Option A

Explanation:

printf("%e, ", f); Here '%e' specifies the "Scientific Notation" format. So, it prints the 43.20 as 4.320000e+01.

printf("%f, ", f); Here '%f' specifies the "Decimal Floating Point" format. So, it prints the 43.20 as 43.200001.

printf("%g, ", f); Here '%g' "Use the shorter of %e or %f". So, it prints the 43.20 as 43.2.

7.  What will be the output of the program? #include<stdio.h>int main(){ float a=0.7; if(a < 0.7f) printf("C\n"); else printf("C++\n"); return 0;}A. C B.C++

C.Compiler error D.Non of above

A

B

Page 27: C Programming

Answer: Option B

Explanation:

if(a < 0.7f) here a is a float variable and 0.7f is a float constant. The float variable a is not less than 0.7f float constant. But both are equal. Hence the if condition is failed and it goes to else it prints 'C++'Example:

#include<stdio.h>int main(){ float a=0.7; printf("%.10f %.10f\n",0.7f, a); return 0;}

Output:0.6999999881 0.6999999881

8.  What will be the output of the program? #include<stdio.h>#include<math.h>int main(){ float n=1.54; printf("%f, %f\n", ceil(n), floor(n)); return 0;}A. 2.000000, 1.000000 B.1.500000, 1.500000

C.1.550000, 2.000000 D.1.000000, 2.000000

Answer: Option A

Explanation:

ceil(x) round up the given value. It finds the smallest integer not < x.floor(x) round down the given value. It finds the smallest integer not > x.

printf("%f, %f\n", ceil(n), floor(n)); In this line ceil(1.54) round up the 1.54 to 2 and floor(1.54) round down the 1.54 to 1.

In the printf("%f, %f\n", ceil(n), floor(n)); statement, the format specifier "%f %f" tells output to be float value. Hence it prints 2.000000 and 1.000000.

9.  What will be the output of the program? #include<stdio.h>

A

Page 28: C Programming

int main(){ float d=2.25; printf("%e,", d); printf("%f,", d); printf("%g,", d); printf("%lf", d); return 0;}A. 2.2, 2.50, 2.50, 2.5

B.2.2e, 2.25f, 2.00, 2.25C.2.250000e+000, 2.250000, 2.25, 2.250000D. Error

Answer: Option C

Explanation:

printf("%e,", d); Here '%e' specifies the "Scientific Notation" format. So, it prints the 2.25 as 2.250000e+000.

printf("%f,", d); Here '%f' specifies the "Decimal Floating Point" format. So, it prints the 2.25 as 2.250000.

printf("%g,", d); Here '%g' "Use the shorter of %e or %f". So, it prints the 2.25 as 2.25.

printf("%lf,", d); Here '%lf' specifies the "Long Double" format. So, it prints the 2.25 as 2.250000.

C Programming > Pointers > General Questions

1.  What is (void*)0?A. Representation of NULL pointer

B.Representation of void pointerC.ErrorD. None of above

Answer: Option A

2.  Can you combine the following two statements into one? char *p;p = (char*) malloc(100);

C

A

Page 29: C Programming

A. char p = *malloc(100);

B.char *p = (char) malloc(100);C.char *p = (char*)malloc(100);D. char *p = (char *)(malloc*)(100);

Answer: Option C

3.  In which header file is the NULL macro defined?A. stdio.h B.stddef.h

C.stdio.h and stddef.h D.stdlib.h

Answer: Option C

4.  How many bytes are occupied by near, far and huge pointers (DOS)?A. near=2 far=4 huge=4 B.near=4 far=8 huge=8

C.near=2 far=4 huge=8 D.near=4 far=8 huge=8

Answer: Option A

5.  If a variable is a pointer to a structure, then which of the following operator is used to access data members of the structure through the pointer variable?A. '.' B.'&'

C.'*' D.'->'

Answer: Option D

6.  What would be the equivalent pointer expression for referring the array element a[i][j][k][l]A. ((((a+i)+j)+k)+l) B.*(*(*(*(a+i)+j)+k)+l)

C.(((a+i)+j)+k+l) D.((a+i)+j+k+l)

Answer: Option B

7.  A pointer isA A keyword used to create variables

C

C

A

D

B

Page 30: C Programming

.B.A variable that stores address of an instructionC.A variable that stores address of other variableD. All of the above

Answer: Option C

8.  The operator used to get value at address stored in a pointer variable isA. * B.&

C.&& D.||

Answer: Option A

C Programming > Pointers > Find Output of Program

1.  What will be the output of the program ? #include<stdio.h>

int main(){ static char *s[] = {"black", "white", "pink", "violet"}; char **ptr[] = {s+3, s+2, s+1, s}, ***p; p = ptr; ++p; printf("%s", **p+1); return 0;}A. ink B.ack

C.ite D.let

Answer: Option A

2.  What will be the output of the program ? #include<stdio.h>

int main(){ int i=3, *j, k; j = &i; printf("%d\n", i**j*i+*j); return 0;}A 30 B.27

C

A

A

Page 31: C Programming

.C.9 D.3

Answer: Option A

3. What will be the output of the program ?

#include<stdio.h>

int main(){ int x=30, *y, *z; y=&x; /* Assume address of x is 500 and integer is 4 byte size */ z=y; *y++=*z++; x++; printf("x=%d, y=%d, z=%d\n", x, y, z); return 0;}A. x=31, y=502, z=502 B.x=31, y=500, z=500

C.x=31, y=498, z=498 D.x=31, y=504, z=504

Answer: Option D

4.  What will be the output of the program ? #include<stdio.h>

int main(){ char str[20] = "Hello"; char *const p=str; *p='M'; printf("%s\n", str); return 0;}A. Mello B.Hello

C.HMello D.MHello

Answer: Option A

5.  What will be the output of the program If the integer is 4bytes long? #include<stdio.h>

int main(){

A

D

A

Page 32: C Programming

int ***r, **q, *p, i=8; p = &i; q = &p; r = &q; printf("%d, %d, %d\n", *p, **q, ***r); return 0;}A. 8, 8, 8 B.4000, 4002, 4004

C.4000, 4004, 4008 D.4000, 4008, 4016

Answer: Option A

6.  What will be the output of the program ? #include<stdio.h>

void fun(void *p);int i;

int main(){ void *vptr; vptr = &i; fun(vptr); return 0;}void fun(void *p){ int **q; q = (int**)&p; printf("%d\n", **q);}A. Error: cannot convert from void** to int**

B.Garbage valueC.0D. No output

Answer: Option C

7.  What will be the output of the program ? #include<stdio.h>

int main(){ char *str; str = "%s"; printf(str, "K\n"); return 0;

A

C

Page 33: C Programming

}A. Error B.No output

C.K D.%s

Answer: Option C

8.  What will be the output of the program ? #include<stdio.h>int *check(static int, static int);

int main(){ int *c; c = check(10, 20); printf("%d\n", c); return 0;}int *check(static int i, static int j){ int *p, *q; p = &i; q = &j; if(i >= 45) return (p); else return (q);}A. 10

B.20C.Error: Non portable pointer conversionD. Error: cannot use static for function parameters

Answer: Option D

9.  What will be the output of the program if the size of pointer is 4-bytes? #include<stdio.h>

int main(){ printf("%d, %d\n", sizeof(NULL), sizeof("")); return 0;}A. 2, 1 B.2, 2

C.4, 1 D.4, 2

C

D

Page 34: C Programming

Answer: Option C

Explanation:

In TurboC, the output will be 2, 1 because the size of the pointer is 2 bytes in 16-bit platform.

But in Linux, the output will be 4, 1 because the size of the pointer is 4 bytes.

This difference is due to the platform dependency of C compiler.

10.  What will be the output of the program ? #include<stdio.h>

int main(){ void *vp; char ch=74, *cp="JACK"; int j=65; vp=&ch; printf("%c", *(char*)vp); vp=&j; printf("%c", *(int*)vp); vp=cp; printf("%s", (char*)vp+2); return 0;}A. JCK B.J65K

C.JAK D.JACK

Answer: Option D

11.  What will be the output of the program? #include<stdio.h>

int main(){ int arr[2][2][2] = {10, 2, 3, 4, 5, 6, 7, 8}; int *p, *q; p = &arr[1][1][1]; q = (int*) arr; printf("%d, %d\n", *p, *q); return 0;}A. 8, 10 B.10, 2

C.8, 1 D.Garbage values

C

D

Page 35: C Programming

Answer: Option A

12.  What will be the output of the program assuming that the array begins at the location 1002 and size of an integer is 4 bytes? #include<stdio.h>

int main(){ int a[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; printf("%u, %u, %u\n", a[0]+1, *(a[0]+1), *(*(a+0)+1)); return 0;}A. 448, 4, 4 B.520, 2, 2

C.1006, 2, 2 D.Error

Answer: Option C

13.  What will be the output of the program? #include<stdio.h>

int main(){ int arr[3] = {2, 3, 4}; char *p; p = arr; p = (char*)((int*)(p)); printf("%d, ", *p); p = (int*)(p+1); printf("%d", *p); return 0;}A. 2, 3 B.2, 0

C.2, Garbage value D.0, 0

Answer: Option B

14.  What will be the output of the program ? #include<stdio.h>

int main(){ char *str; str = "%d\n"; str++; str++;

A

C

B

Page 36: C Programming

printf(str-2, 300); return 0;}A. No output B.30

C.3 D.300

Answer: Option D

15.  What will be the output of the program ? #include<stdio.h>

int main(){ printf("%c\n", 7["IndiaBIX"]); return 0;}A. Error: in printf B.Nothing will print

C.print "X" of IndiaBIX D.print "7"

Answer: Option C

16.  What will be the output of the program ? #include<stdio.h>

int main(){ char str[] = "peace"; char *s = str; printf("%s\n", s++ +3); return 0;}A. peace B.eace

C.ace D.ce

Answer: Option D

17.  What will be the output of the program ? #include<stdio.h>

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

D

C

D

Page 37: C Programming

return 0;}A. llo B.hello

C.ello D.h

Answer: Option B

18.  What will be the output of the program assuming that the array begins at location 1002? #include<stdio.h>

int main(){ int a[2][3][4] = { {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 1, 2}, {2, 1, 4, 7, 6, 7, 8, 9, 0, 0, 0, 0} }; printf("%u, %u, %u, %d\n", a, *a, **a, ***a); return 0;}A. 1002, 2004, 4008, 2 B.2004, 4008, 8016, 1

C.1002, 1002, 1002, 1 D.Error

Answer: Option C

19.  What will be the output of the program ? #include<stdio.h>power(int**);int main(){ int a=5, *aa; /* Address od 'a' is 1000 */ aa = &a; a = power(&aa); printf("%d\n", a); return 0;}power(int **ptr){ int b; b = **ptr***ptr; return (b);}A. 5 B.25

C.125 D.Garbage value

Answer: Option B

B

C

B

Page 38: C Programming

20.  What will be the output of the program ? #include<stdio.h>

int main(){ char str1[] = "India"; char str2[] = "BIX"; char *s1 = str1, *s2=str2; while(*s1++ = *s2++) printf("%s", str1);

printf("\n"); return 0;}A. IndiaBIX B.BndiaBIdiaBIXia

C.India D.(null)

Answer: Option B

21.  What will be the output of the program ? #include<stdio.h>#include<string.h>

int main(){ int i, n; char *x="Alice"; n = strlen(x); *x = x[n]; for(i=0; i<=n; i++) { printf("%s ", x); x++; } printf("\n", x); return 0;}A. Alice B.ecilA

C.Alice lice ice ce e D.lice ice ce e

Answer: Option D

Explanation:

If you compile and execute this program in windows platform with Turbo C, it will give "lice ice ce e".

B

D

Page 39: C Programming

It may give different output in other platforms (depends upon compiler and machine). The online C compiler given in this site will give the Option C as output (it runs on Linux platform).

22.  What will be the output of the program ? #include<stdio.h>

int main(){ int i, a[] = {2, 4, 6, 8, 10}; change(a, 5); for(i=0; i<=4; i++) printf("%d, ", a[i]); return 0;}change(int *b, int n){ int i; for(i=0; i<n; i++) *(b+1) = *(b+i)+5;}A. 7, 9, 11, 13, 15 B.2, 15, 6, 8, 10

C.2 4 6 8 10 D.3, 1, -1, -3, -5

Answer: Option B

23.  If the size of integer is 4bytes. What will be the output of the program? #include<stdio.h>

int main(){ int arr[] = {12, 13, 14, 15, 16}; printf("%d, %d, %d\n", sizeof(arr), sizeof(*arr), sizeof(arr[0])); return 0;}A. 10, 2, 4 B.20, 4, 4

C.16, 2, 2 D.20, 2, 2

Answer: Option B

C Programming Pointers - Point Out Errors

1.  Point out the error in the program #include<stdio.h>

B

B

Page 40: C Programming

int main(){ int *x; *x=100; return 0;}A. Error: invalid assignment for x

B.Error: suspicious pointer conversionC.No errorD. None of above

Answer: Option C

While reading the code there is no error, but upon running the program having an unitialised variable can cause the program to crash (Null pointer assignment).

2.  Point out the error in the program #include<stdio.h>

int main(){ int a[] = {10, 20, 30, 40, 50}; int j; for(j=0; j<5; j++) { printf("%d\n", a); a++; } return 0;}A. Error: Declaration syntax B.Error: Expression syntax

C.Error: LValue required D.Error: Rvalue required

Answer: Option C

C Programming > Pointers > Point Out Correct Statements

1.  Which of the following statements correctly declare a function that receives a pointer to pointer to a pointer to a float and returns a pointer to a pointer to a pointer to a pointer to a float?A. float **fun(float***); B.float *fun(float**);

C.float fun(float***); D.float ****fun(float***);

C

C

D

Page 41: C Programming

Answer: Option D

2.  Which of the statements is correct about the program? #include<stdio.h>

int main(){ int i=10; int *j=&i; return 0;}A. j and i are pointers to an int

B.i is a pointer to an int and stores address of jC.j is a pointer to an int and stores address of iD. j is a pointer to a pointer to an int and stores address of i

Answer: Option C

3.  Which of the statements is correct about the program? #include<stdio.h>

int main(){ float a=3.14; char *j; j = (char*)&a; printf("%d\n", *j); return 0;}A. It prints ASCII value of the binary number present in the first byte of a float variable a.

B.It prints character equivalent of the binary number present in the first byte of a float variable a.C.It will print 3D. It will print a garbage value

Answer: Option A

4.  In the following program add a statement in the function fun() such that address of a gets stored in j? #include<stdio.h>int main(){ int *j; void fun(int**); fun(&j);

C

A

Page 42: C Programming

return 0;}void fun(int **k){ int a=10; /* Add a statement here */}A. **k=a; B.k=&a;

C.*k=&a D.&k=*a

Answer: Option C

5.  Which of the following statements correct about k used in the below statement?char ****k;A. k is a pointer to a pointer to a char

B.k is a pointer to a pointer to a pointer to a charC.k is a pointer to a char pointerD. k is a pointer to a pointer to a char

Answer: Option B

C

B