Pages

Wednesday

C Aptitude Questions with Answers Part 1

1.
void main(){ 
   int  const * p=5; 
   printf("%d",++(*p)); 
} 


Answer:
Compiler error: Cannot modify a constant value.
Explanation:
p is a pointer to a "constant integer". But we tried to change the value of the "constant integer".


2.
 main(){ 
   char s[]="man"; 
   int i; 
   for(i=0;s[ i ];i++) 
      printf("\n%c%c%c%c",s[ i ],*(s+i),*(i+s),i[s]); 
}  


Answer:
mmmm
aaaa
nnnn
Explanation:
s[i], *(i+s), *(s+i), i[s] are all different ways of expressing the same idea. Generally array name is the base address for that array. Here s is the base address. i is the index number/displacement from the base address. So, indirecting it with * is same as s[i]. i[s] may be surprising. But in the case of C it is same as s[i].

3.
main() { 
   float me = 1.1; 
   double you = 1.1; 
   if(me==you){
      printf("I love U"); 
   }else{
      printf("I hate U");
   }
} 


Answer:
I hate U

Explanation:
For floating point numbers (float, double, long double) the values cannot be predicted exactly. Depending on the number of bytes, the precession with of the value represented varies. Float takes 4 bytes and long double takes 10 bytes. So float stores 0.9 with less precision than long double.
Never compare or at-least be cautious when using floating point numbers with relational operators (== , >, <, <=, >=,!= ) .  

4.
 main() { 
   static int var = 5; 
   printf("%d ",var--); 
   if(var) 
      main(); 
} 


Answer:
5 4 3 2 1
Explanation:
When static storage class is given, it is initialized once. The change in the value of a static variable is retained even between the function calls. Main is also treated like any other ordinary function, which can be called recursively.


5.
main() { 
   int c[ ]={2.8,3.4,4,6.7,5}; 
   int j,*p=c,*q=c; 
   for(j=0;j<5;j++) { 
      printf(" %d ",*c); 
      ++q; 
   } 
   for(j=0;j<5;j++){
      printf(" %d ",*p); 
      ++p;
   } 
}


Answer:
2 2 2 2 2 2 3 4 6 5
Explanation:
Initially pointer c is assigned to both p and q. In the first loop, since only q is incremented and not c , the value 2 will be printed 5 times. In second loop p itself is incremented. So the values 2 3 4 6 5 will be printed.   

No comments:

Post a Comment