Anda di halaman 1dari 19

8/28/2011

C PROGRAMMING QUESTIONS AND ANSWER

http://cquestionbank.blogspot.com

| Ritesh kumar

1. What will be output when you will execute following c code? #include<stdio.h> #define var 3 int main(){ char *cricket[var+~0]={"clarke","kallis"}; char *ptr=cricket[1+~0]; printf("%c",*++ptr); return 0; } Choose all that apply: (A) a (B) r (C) l (D) Compilation error (E) None of the above Answer: (C) Explanation: In the expression of size of an array can have micro constant. var +~0 = 3 + ~0 = 3 + (-1) = 2 Lets assume string clarke and kallis has stored at memory address 100 and 500 respectively as shown in the following figure: For string clarke:

For string "kallis":

Copyright@ritesh kumar: http://cquestionbank.blogspot.com/

Page 2

In this program cricket is array of characters pointer of size 2. So array cricket will keep the memory address of first character of both strings i.e. content of array cricket is: cricket[2] = {100,500} ptr is character pointer which is pointing to the fist element of array cricket. So, ptr = 100 Now consider on *++ptr Since ptr = 100 so after ++ptr, ptr = 101 *(++ptr) = *(101) = content of memory address 101. From above figure it is clear that character is l. 2. What will be output of the following c program? #include<stdio.h> int main(){ int goto=5; printf("%d",goto); return 0; } (A) (B) (C) (D) (E) 5 ** ** Compilation error None of these

Answer: (D) Explanation: Name of variable is invalid. goto is keyword in c. variable name cannot be any keyword of c language.

Copyright@ritesh kumar: http://cquestionbank.blogspot.com/

Page 3

3. What will be output of the following program? #include<stdio.h> int main(){ int i=5,j; j=++i+++i+++i; printf("%d %d",i,j); return 0; } (A) (B) (C) (D) (E) 7 21 8 21 7 24 8 24 Compilation error

Answer: (D) Explanation: Rule :- ++ is pre increment operator so in any arithmetic expression it first increment the value of variable by one in whole expression then starts assigning the final value of variable in the expression. Compiler will treat this expression j = ++i+++i+++i; as i = ++i + ++i + ++i; Initial value of i operator final value Now final value of variable as shown in = 5 due to three pre increment of i=8. i i.e. 8 will assigned to each the following figure:

Copyright@ritesh kumar: http://cquestionbank.blogspot.com/

Page 4

So, j=8+8+8 j=24 and i=8 4. What will be output of the following c program? #include<stdio.h> int main(){ int class=150; int public=25; int private=30; class = class >> private - public; printf("%d",class); return 0; } (A) (B) (C) (D) (E) 1 2 4 Compilation error None of these

Answer: (C) Explanation: Variable name can be keyword of c++. 5. What will be output when you will execute following c code? #define True 5==5 #include<stdio.h> int main(){ if(.001-0.1f) printf("David Beckham"); else if(True) printf("Ronaldinho"); else
Copyright@ritesh kumar: http://cquestionbank.blogspot.com/ Page 5

printf("Cristiano Ronaldo"); return 0; } Choose all that apply: (A)David Beckham (B)Ronaldinho (C)Cristiano Ronaldo (D)Warning: Condition is always true (E)Warning: Unreachable code Answer: (A, D, E) 6. What will be output when you will execute following c code? #include<stdio.h> int main(){ int check=2; switch(check){ case 1: printf("D.W.Steyn"); case 2: printf(" M.G.Johnson"); case 3: printf(" Mohammad Asif"); default: printf(" M.Muralidaran"); } return 0; } Choose all that apply: (A) (B) (C) (D) (E) M.G.Johnson M.Muralidaran M.G.Johnson Mohammad Asif M.Muralidaran Compilation error None of the above

Answer: (C)
Copyright@ritesh kumar: http://cquestionbank.blogspot.com/ Page 6

Explanation: If we will not use break keyword in each case the program control will come in each case after the case witch satisfy the switch condition. 7. What will be output of following c code? #include<stdio.h> int main(){ int i=2,j=2; while(i+1?--i:j++) printf("%d",i); return 0; } (A)1 (B)2 (C)3 (D)4 (E)Compilation error Answer: (A) Explanation: Consider the while loop condition: i + 1 ? -- i : ++j In first iteration: i + 1 = 3 (True) So ternary operator will return -i i.e. 1 In c 1 means true so while condition is true. Hence printf statement will print 1 In second iteration: i+ 1 = 2 (True) So ternary operator will return -i i.e. 0 In c zero means false so while condition is false. Hence program control will come out of the while loop. 8. What will be output of following c code?
Copyright@ritesh kumar: http://cquestionbank.blogspot.com/ Page 7

#include<stdio.h> int main(){ int i,j; i=j=2,3; while(--i&&j++) printf("%d %d",i,j); return 0; } (A) 2 (B) 3 (C) 13 (D)Infinite loop (E) Compilation error Answer: (c) Explanation: Initial value of variable i = 2 j = 2 Consider the while condition: --i && j++ In first iteration: --i && j++ = 1 && 2 //In c any non-zero number represents true. = 1 (True) So while loop condition is true. Hence printf function will print value of i = 1 and j = 3 (Due to post increment operator) In second iteration: --i && j++ = 0 && 3 //In c zero represents false = 0 //False So while loop condition is false. Hence program control will come out of the for loop. 9. What will be output of following program?
Copyright@ritesh kumar: http://cquestionbank.blogspot.com/ Page 8

#include<stdio.h> int main(){ int i = 3; int *j; int **k; j=&i; k=&j; printf(%u %u %d ,k,*k,**k); return 0; } (A) (B) (C) (D) (E) Address, Address, 3 Address, 3, 3 3, 3, 3 Compilation error None of above

Answer: (A) Explanation: Memory representation

Here 6024, 8085, 9091 is any arbitrary address, it may be different. Value of k is content of k in memory which is 8085 Value of *k means content of memory location which address k keeps. k keeps address 8085 . Content of at memory location 8085 is 6024 In the same way **k will equal to 3. Short cut way to calculate: Rule: * and & always cancel to each other
Copyright@ritesh kumar: http://cquestionbank.blogspot.com/ Page 9

i.e. *&a = a So *k = *(&j) since k = &j *&j = j = 6024 And **k = **(&j) = *(*&j) = *j = *(&i) = *&i = i = 3 10. What is size of generic pointer in c? (A) (B) (C) (D) (E) 0 1 2 Null Undefined

Answer: (C) 4. What will be output if you will execute following c code? #include<stdio.h> int main(){ int const SIZE=5; int expr; double value[SIZE]={2.0,4.0,6.0,8.0,10.0}; expr=1|2|3|4; printf("%f",value[expr]); return 0; } (A) (B) (C) (D) (E) 2.000000 4.000000 6.000000 8.000000 Compilation error

Answer: (E) 11.


Copyright@ritesh kumar: http://cquestionbank.blogspot.com/ Page 10

What will be output when you will execute following c code? #include<stdio.h> int main(){ int const SIZE=5; int expr; double value[SIZE]={2.0,4.0,6.0,8.0,10.0}; expr=1|2|3|4; printf("%f",value[expr]); return 0; } Choose all that apply: (A) 2.000000 (B) 4.000000 (C) 8.000000 (D) Compilation error (E) None of the above Answer: (D) Explanation: Size of any array in c cannot be constantan variable. 12. What will be output of the following c program? #include<stdio.h> int main(){ long int 1a=5l; printf("%ld",1a); return 0; } (A) (B) (C) (D) (E) 5 51 6 Compilation error None of these
Page 11

Copyright@ritesh kumar: http://cquestionbank.blogspot.com/

Answer: (D) Explanation: Name of variable is invalid. Variable name must star from either alphabet or underscore. 13. What will be output of the following program? #include<stdio.h> int main(){ int i=1; i=2+2*i++; printf("%d",i); return 0; } (A) 4 (B) 5 (C) 6 (D) 7 (E)Compilation error Answer: (B) Explanation: i++ i.e. when postfix increment operator is used any expression the it first assign the its value in the expression the it increments the value of variable by one. So, i = 2 + 2 * 1 i = 4 Now i will be incremented by one so i = 4 + 1 = 5 14. What will be output when you will execute following c code?

Copyright@ritesh kumar: http://cquestionbank.blogspot.com/

Page 12

#include<stdio.h> int main(){ int a=5,b=10,c=1; if(a&&b>c){ printf("cquestionbank"); } else{ break; } return 0; } Choose all that apply: (A)cquestionbank (B)It will print nothing (C)Run time error (D)Compilation error (E)None of the above Answer: (D) Explanation: Keyword break is not syntactical part of if-else statement. So we cannot use break keyword in if-else statement. This keyword can be use in case of loop or switch case statement. Hence when you will compile above code compiler will show an error message: Misplaced break. 15. What will be output when you will execute following c code? #include<stdio.h> int main(){ int a=100; if(a>10) printf("M.S. Dhoni"); else if(a>20)
Copyright@ritesh kumar: http://cquestionbank.blogspot.com/ Page 13

printf("M.E.K Hussey"); else if(a>30) printf("A.B. de villiers"); return 0; } Choose all that apply: (A)M.S. Dhoni (B)A.B. de villiers (C)M.S Dhoni M.E.K Hussey A.B. de Villiers (D)Compilation error: More than one conditions are true (E)None of the above Answer: (A) Explanation: In case of if if else if else Statement if first if clause is true the compiler will never check rest of the if else clause and so on. 16. What will be output when you will execute following c code? #include<stdio.h> #define L 10 int main(){ auto money=10; switch(money,money*2){ case L: printf("Willian"); break; case L*2:printf("Warren"); break; case L*3:printf("Carlos"); break; default: printf("Lawrence"); case L*4:printf("Inqvar"); break;
Copyright@ritesh kumar: http://cquestionbank.blogspot.com/ Page 14

} return 0; } Choose all that apply: (A) (B) (C) (D) (E) Willian Warren Lawrence Inqvar Compilation error: Misplaced default None of the above

Answer: (B) Explanation: In c comma is also operator which enjoy precedence. So if x = (a, b); Then x = b Note: Case expression can be macro constant. 17. What will be output of following c code? #include<stdio.h> int main(){ int x=011,i; for(i=0;i<x;i+=3){ printf("Start "); continue; printf("End"); } return 0; } (A) (B) (C) (D) (E) End End End Start Start Start Start End Start Start Start Start Start Compilation error
Page 15

least

Copyright@ritesh kumar: http://cquestionbank.blogspot.com/

Answer: (b) Explanation: 011 is octal number. Its equivalent decimal value is 9. So, x = 9 First iteration: i = 0 i < x i.e. 0 < 9 i.e. if loop condition is true. Hence printf statement will print: Start Due to continue keyword program control will come at the beginning of the for loop and value of variable i will be: i += 3 i = i + 3 = 3 Second iteration: i = 3 i < x i.e. 3 < 9 i.e. if loop condition is true. Hence printf statement will print: Start Due to continue keyword program control will come at the beginning of the for loop and value of variable i will be: i += 3 i = i + 3 = 6 Third iteration: i = 3 i < x i.e. 6 < 9 i.e. if loop condition is true. Hence printf statement will print: Start Due to continue keyword program control will come at the beginning of the for loop and value of variable i will be: i += 3 i = i + 3 = 9 fourth iteration: i = 6 i < x i.e. 9 < 9 i.e. if loop condition is false. Hence program control will come out of the for loop. 18. What will be output of following program?
Copyright@ritesh kumar: http://cquestionbank.blogspot.com/ Page 16

#include<stdio.h> int main(){ char far *p =(char far *)0x55550005; char far *q =(char far *)0x53332225; *p = 80; (*p)++; printf("%d",*q); return 0; } (A) (B) (C) (D) (E) 80 81 82 Compilation error None of above

Answer: (B) Explanation: Far address of p and q are representing same physical address. Physical address of 0x55550005 = (0x5555) * (0x10) + (0x0005) = 0x55555 Physical address of 0x53332225 = (0x5333 * 0x10) + (0x2225) = 0x55555 *p = 80, means content at memory location 0x55555 is assigning value 25 (*p)++ means increase the content by one at memory location 0x5555 so now content at memory location 0x55555 is 81 *q also means content at memory location 0x55555 which is 26 19. What will be output if you will execute following c code? #include<stdio.h> int main(){
Copyright@ritesh kumar: http://cquestionbank.blogspot.com/ Page 17

char arr[11]="The African Queen"; printf("%s",arr); return 0; } (A) (B) (C) (D) (E) The African Queen The Queen null Compilation error

Answer: (D) 20. What will be output when you will execute following c code? #include<stdio.h> int main(){ char arr[7]="Network"; printf("%s",arr); return 0; } Choose all that apply: (A) Network (B) N (C) Garbage value (D) Compilation error (E) None of the above Answer: (C) Explanation: Size of a character array should one greater than total number of characters in any string which it stores. In c every string has one terminating null character. This represents end of the string.

Copyright@ritesh kumar: http://cquestionbank.blogspot.com/

Page 18

So in the string Network , there are 8 characters and they are N,e,t,w,o,r,k and \0. Size of array arr is seven. So array arr will store only first sevent characters and it will note store null character. As we know %s in prinf statement prints stream of characters until it doesnt get first null character. Since array arr has not stored any null character so it will print garbage value.

Copyright@ritesh kumar: http://cquestionbank.blogspot.com/

Page 19

Anda mungkin juga menyukai