1.docx

30
1) #include<stdio.h> int main(){ int a=2; if(a==2){ a=~a+2<<1; printf("%d",a); } else{ break; } return 0; } ANS: (A) It will print nothing. (B) -3 (C) -2 (D) 1 (E) Compiler error ANS(Break is not part of if) 2)

Upload: sourabh-bhavsar

Post on 26-Oct-2014

37 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 1.docx

1) #include<stdio.h>

int main(){

int a=2;

if(a==2){

a=~a+2<<1;

printf("%d",a);

}

else{

break;

}

return 0;

}

ANS:

(A) It will print nothing.

(B) -3

(C) -2

(D) 1

(E) Compiler error ANS(Break is not part of if)

2)

#include<stdio.h>

Page 2: 1.docx

int main(){

char c=125;

c=c+10;

printf("%d",c);

return 0;

}

(A) 135

(B) +INF

(C) -121( CORRECT ANS)

(D) -8

(E) Compiler error

3) A binary tree having 20 nodes have hw many null branches?. ANS 21

4)

void main()

{

while(1){

if(printf(“%d”,printf(“%d”)))

break;

else

continue;

}

Page 3: 1.docx

}

Answer:

Garbage values

Explanation:

The inner printf executes first to print some garbage value. The printf returns no of characters printed and this value also cannot be predicted. Still the outer printf prints something and so returns a non-zero value. So it encounters the break statement and comes out of the while statement.

5) Tiem complexict in inerting element in queue

A binary tree with n nodes has exactly n+1 null nodes.

6) What is the output of the following code?

#include

void main()

{

int s=0;

while(s++<10)>

# define a 10

main()

{

printf("%d..",a);

foo();

printf("%d",a);

}

void foo()

Page 4: 1.docx

{

#undef a

#define a 50

}

1) 10..10

2) 10..50

3) Error (CORRECT ANS) chekc once again

4) 0

7)

#include

void func()

{

int x = 0;

static int y = 0;

x++; y++;

printf( "%d -- %d\n", x, y );

}

int main()

{

func();

func();

return 0;

Page 5: 1.docx

}

What will the code above print when it is executed?

1)

1 -- 1

1 -- 1

2)

1 -- 1

2 -- 1

3)

1 -- 1

2 -- 2

4)CORRECT ANS (1..1,1..2)

1 -- 1

1 -- 2

8)

Code:

struct node *nPtr, *sPtr; /* pointers for a linked list. */

for (nPtr=sPtr; nPtr; nPtr=nPtr->next)

{

free(nPtr);

Page 6: 1.docx

}

The sample code above releases memory from a linked list. Which of the choices below accurately describes how it will work?

Choice 1

It will work correctly since the for loop covers the entire list.

Choice 2

It may fail since each node "nPtr" is freed before its next address can be accessed. (CORRECT ANS)

Choice 3

In the for loop, the assignment "nPtr=nPtr->next" should be changed to "nPtr=nPtr.next".

Choice 4

This is invalid syntax for freeing memory.

Choice 5

The loop will never end.

- - - - - - - - - - - - - - - - - -

9) penny = one

nickel = five

dime = ten

quarter = twenty-five

How is enum used to define the values of the American coins listed above?

Choice 1

enum coin {(penny,1), (nickel,5), (dime,10), (quarter,25)};

Choice 2

enum coin ({penny,1}, {nickel,5}, {dime,10}, {quarter,25});

Page 7: 1.docx

Choice 3

enum coin {penny=1,nickel=5,dime=10,quarter=25};[Ans]

Choice 4

enum coin (penny=1,nickel=5,dime=10,quarter=25);

Choice 5

enum coin {penny, nickel, dime, quarter} (1, 5, 10, 25);

10)

Code:

int i = 4;

int x = 6;

double z;

z = x / i;

printf("z=%.2f\n", z);

What will print when the sample code above is executed?

Choice 1

z=0.00

Choice 2

z=1.00[Ans]

Choice 3

z=1.50

Page 8: 1.docx

Choice 4

z=2.00

Choice 5

z=NULL

11)

Code:

int fibonacci (int n)

{

switch (n)

{

default:

return (fibonacci(n - 1) + fibonacci(n - 2));

case 1:

case 2:

}

return 1;

}

The function above has a flaw that may result in a serious error during some invocations. Which one of the following describes the deficiency illustrated above?

Choice 1

For some values of n, the environment will almost certainly exhaust its stack space before the calculation completes.(CORRECT ANS)

Choice 2

Page 9: 1.docx

An error in the algorithm causes unbounded recursion for all values of n.

Choice 3

A break statement should be inserted after each case. Fall-through is not desirable here.

Choice 4

The fibonacci() function includes calls to itself. This is not directly supported by Standard C due to its unreliability.

Choice 5

Since the default case is given first, it will be executed before any case matching n.

12) What is the output of this program?

Void main()

{

char thought[2][30]={"Don`t walk in front of me..","I am not follow"};

printf("%c%c",*(thought[0]+9),*(*(thought+0)+5));

}

k k

Don`t walk in front of me

I may not follow

K[ANS]

13) (1) What will be output if you will compile and execute the following c code? (refernce:http://cquestionbank.blogspot.in/2012/02/tricky-c-questions-and-answers.html)

struct marks{

Page 10: 1.docx

int p:3;

int c:3;

int m:2;

};

void main(){

struct marks s={2,-6,5};

printf("%d %d %d",s.p,s.c,s.m);

}

(a) 2 -6 5

(b) 2 -6 1

(c) 2 2 1

(d) Compiler error

(e) None of these

Answer: (c)

Explanation:

Binary value of 2: 00000010 (Select three two bit)

Binary value of 6: 00000110

Binary value of -6: 11111001+1=11111010

(Select last three bit)

Binary value of 5: 00000101 (Select last two bit)

Complete memory representation:

Page 11: 1.docx

14) What will be output if you will compile and execute the following c code?

void main(){

printf("%s","c" "question" "bank");

}

(a) c question bank

(b) c

(c) bank

(d) cquestionbank

(e) Compiler error

Answer: (d)

Explanation:

In c string constant “xy” is same as “x” “y”

15) What will be output if you will compile and execute the following c code?

void main(){

int a=25;

clrscr();

printf("%o %x",a,a);

getch();

Page 12: 1.docx

}

(a) 25 25

(b) 025 0x25

(c) 12 42

(d) 31 19

(e) None of these

Answer: (d)

Explanation:

%o is used to print the number in octal number format.

%x is used to print the number in hexadecimal number format.

Note: In c octal number starts with 0 and hexadecimal number starts with 0x.

16)

What is error in following declaration?

struct outer{

int a;

struct inner{

char c;

};

};

(A) Nesting of structure is not allowed in c.

Page 13: 1.docx

(B)

It is necessary to initialize the member variable.

(C) Inner structure must have name.

(D) Outer structure must have name.

(E) There is not any error.

Explanation:

It is necessary to assign name of inner structure at the time of declaration other wise we cannot access the member of inner structure. So correct declaration is:

struct outer{

int a;

struct inner{

char c;

}name;

};

17) What will be output of the following c program?

#include<stdio.h>

int main(){

int _=5;

int __=10;

int ___;

___=_+__;

Page 14: 1.docx

printf("%i",___);

return 0;

}

(A) 5

(B) 10

(C) 15

(D) Compilation error

(E) None of these

Explanation:

(C) 15

Variable name can have only underscore.

18)

What will be output of the following c program?

#include<stdio.h>

int main(){

int ABC=10;

printf("%d",abc);

return 0;

}

(A) 10

Page 15: 1.docx

(B) 0

(C) 5

(D) Compilation error

(E) None of these

Explanation:

(D) Compilation error

Variable name is case sensitive.

19) What will be output of following c code?

#include<stdio.h>

extern int x;

int main(){

do{

do{

printf("%o",x);

}

while(!-2);

}

while(0);

return 0;

}

int x=8;

Page 16: 1.docx

Explanation

Output: 10

Explanation:

Here variable x is extern type. So it will search the definition of variable x. which is present at the end of the code. So value of variable x =8

There are two do-while loops in the above code. AS we know do-while executes at least one time even that condition is false. So program control will reach at printf statement at it will print octal number 10 which is equal to decimal number 8.

Note: %o is used to print the number in octal format.

In inner do- while loop while condition is ! -2 = 0

In C zero means false. Hence program control will come out of the inner do-while loop. In outer do-while loop while condition is 0. That is again false. So program control will also come out of the outer do-while loop.

20)

What will be output if you will execute following c code?

#include<stdio.h>

#include<conio.h>

void main(){

int i=3,val;

val=sizeof f(i)+ +f(i=1)+ +f(i-1);

printf("%d %d",val,i);

Page 17: 1.docx

}

int f(int num){

return num*5;

}

(A) 2 0

(B) 7 1

(C) 17 0

(D) 2 1

(E) Compilation error

Correct answer is :(B) Runniing Prog in Dev C gives 9 1

21)

What will be output if you will execute following c code?

#include<stdio.h>

#include<conio.h>

void main(){

int i=3,val;

val=sizeof (f(i)+ +f(i=1)+ +f(i-1));

printf("%d %d",val,i);

}

int f(int num){

return num*5;

Page 18: 1.docx

}

(A)2 3

(B)4 3

(C)3 2

(D)Compilation error

Correct answer is :(B) 4 3

Explanation:

Turbo C 3.0 and Turbo C 4.5 compiler:

2 3

Linux GCC complier

4 3

Any expression inside sizeof operator is never changed the value of the any variable. So value of variable i will remain 3. After the evaluation of expression inside sizeof operator we will get an integer value. So value of variable val will be sizeof int data type.

Note: Size of into in turbo C 3.0 and 4.5 is two byte while Linux gcc complier is four byte

22) What will be output of following c program?

#include "string.h"

typedef struct stu1{

char name1[6];

char name2[6];

double marks;

}STU1;

Page 19: 1.docx

void main(){

STU1 s1={"rohit","kumar",87.43},*p1;

char *p;

p1=&s1;

p=memchr(p1,'u',sizeof(STU1));

printf("%s",p);

}

(A) r

(B) rohit

(C) umar

(D) rohit kumar

(E) Compilation error

ANS:- (C) umar

23)

What will be output of following c program?

#include<stdio.h>

int main(){

float x;

x=(int)1.1,(float)2.2,(int)3.3 ,5.4;

printf("%f",x);

Page 20: 1.docx

return 0;

}

(A) 1.000000

(B) 5.400000

(C) 2.200000

(D) 3.300000

(E) Compilation error

ANS:-(A) 1.000000

24)

What will be output of following c program?

#include<stdio.h>

#include<conio.h>

float avg(float,float,float);

void main(){

float p=1,q=2,r=-2,a;

a=avg(p,(q=4,r=-12,q),r);

printf("%f",a);

}

float avg(float x,float y,float z){

return (x+y+z)/3;

}

Page 21: 1.docx

(A) 0.111111

(B) 1.000000

(C) -0.777777

(D) -1.000000

(E) Compilation error

ANS:- (B) 1.000000

25) What will be output of following c program?

#include<stdio.h>

#include<conio.h>

void main(){

int i=3,val;

val=f(i)+ +f(i=1)+ +f(i-1);

printf("%d",val);

}

int f(int num){

return num*5;

}

(A) 30

(B) 20

(C) 21

(D) 31

Page 22: 1.docx

(E) Compilation error

ANS:- (B) 20

26) What will be output of following c program?

#include<stdio.h>

int main(){

int a=5;

static int b=a;

printf("%d %d",a,b);

return 0;

}

(A) 5 5

(B) 5 0

(C) 5 null

(D) 5 Garbage

(E) Compilation error

ANS:- (E) Compilation error

27)

Page 23: 1.docx

Miscellaneous

1)

What will be output if you will compile and execute the following c code?

int extern x;

void main()

printf("%d",x);

x=2;

getch();

}

int x=23;

(a) 0

(b) 2

(c) 23

(d) Compiler error

(e) None of these

Answer: (c)

Explanation:

extern variables can search the declaration of variable any where in the program.

2) What will be output if you will compile and execute the following c code?

Page 24: 1.docx

void main(){

int i=10;

static int x=i;

if(x==i)

printf("Equal");

else if(x>i)

printf("Greater than");

else

printf("Less than");

}

(A) Equal

(B) Greater than

(C) Less than

(D) Compiler error

(E) None of above

Explanation:

static variables are load time entity while auto variables are run time entity. We can not initialize any load time variable by the run time variable.

In this example i is run time variable while x is load time variable.

------------------------------------------------------------------------------------------

Page 25: 1.docx

Static functions in C

May 5, 2010

In C, functions are global by default. The “static” keyword before a function name makes it static. For example, below function fun() is static.

static int fun(void)

{

printf("I am a static function ");

}

Unlike global functions in C, access to static functions is restricted to the file where they are declared. Therefore, when we want to restrict access to functions, we make them static. Another reason for making functions static can be reuse of the same function name in other files.

For example, if we store following program in one file file1.c

/* Inside file1.c */

static void fun1(void)

{

puts("fun1 called");

}

And store following program in another file file2.c

/* Iinside file2.c */

int main(void)

{

fun1();

Page 26: 1.docx

getchar();

return 0;

}

Now, if we compile the above code with command “gcc file2.c file1.c”, we get the error “undefined reference to `fun1'” . This is because fun1() is declared static in file1.c and cannot be used in file2.c.

Please write comments if you find anything incorrect in the above article, or want to share more information about static functions in C.

-------------------------------------------------------------------------------------------------------------------------------------------

What is the purpose of a function prototype?

August 12, 2009

The Function prototype serves the following purposes -

1) It tells the return type of the data that the function will return.

2) It tells the number of arguments passed to the function.

3) It tells the data types of the each of the passed arguments.

4) Also it tells the order in which the arguments are passed to the function.

Therefore essentially, function prototype specifies the input/output interlace to the function i.e. what to give to the function and what to expect from the function.

Prototype of a function is also called signature of the function.

Page 27: 1.docx

What if one doesn’t specify the function prototype?

Output of below kind of programs is generally asked at many places.

int main()

{

foo();

getchar();

return 0;

}

void foo()

{

printf("foo called");

}

If one doesn’t specify the function prototype, the behavior is specific to C standard (either C90 or C99) that the compilers implement. Up to C90 standard, C compilers assumed the return type of the omitted function prototype as int. And this assumption at compiler side may lead to unspecified program behavior.

Later C99 standard specified that compilers can no longer assume return type as int. Therefore, C99 became more restrict in type checking of function prototype. But to make C99 standard backward compatible, in practice, compilers throw the warning saying that the return type is assumed as int. But they go ahead with compilation. Thus, it becomes the responsibility of programmers to make sure that the assumed function prototype and the actual function type matches.

To avoid all this implementation specifics of C standards, it is best to have function prototype