Pages

Friday

C Aptitude Questions with Answers Part 21

1)
main() {
  int a[10]; 
  printf("%d",*a+1-*a+3); 
} 

Answer:
4
Explanation:
*a and -*a cancels out. The result is as simple as 1 + 3 = 4 !

2)
#define prod(a,b) a*b 
main() {
   int x=3,y=4; 
   printf("%d",prod(x+2,y-1)); 
} 

Answer:
10
Explanation:
The macro expands and evaluates to as:
x+2*y-1 => x+(2*y)-1 => 10

3)
main() {
  unsigned int i=65000; 
  while(i++!=0); 
  printf("%d",i); 
} 

Answer:
1
Explanation:
Note the semicolon after the while statement. When the value of i becomes 0 it comes out of while loop. Due to post-increment on i the value of i while printing is 1.

4)
 main() {
  int i=0; 
  while(+(+i--)!=0) 
    i-=i++; 
  printf("%d",i); 
} 

Answer:
-1
Explanation:
Unary + is the only dummy operator in C. So it has no effect on the expression and now the while loop is, while(i--!=0) which is false and so breaks out of while loop. The value –1 is printed due to the post-decrement operator.

5)
main() {
  float f=5,g=10; 
  enum{i=10,j=20,k=50}; 
  printf("%d\n",++k); 
  printf("%f\n",f<<2); 
  printf("%lf\n",f%g); 
  printf("%lf\n",fmod(f,g));  
} 

Answer:
Line no 5: Error: Lvalue required
Line no 6: Cannot apply leftshift to float
Line no 7: Cannot apply mod to float

Explanation:
  Enumeration constants cannot be modified, so you cannot apply ++. Bit-wise operators and % operators cannot be applied on float values. fmod() is to find the modulus values for floats as % operator is for ints.

6)
main() {
  int i=10; 
  void pascal f(int,int,int); 
f(i++,i++,i++); 
  printf(" %d",i); 
} 
void pascal f(integer :i,integer:j,integer :k) { 
write(i,j,k);  
} 

Answer:
Compiler error: unknown type integer
Compiler error: undeclared function write

Explanation:
Pascal keyword doesn’t mean that pascal code can be used. It means that the function follows Pascal argument passing mechanism in calling the functions.  

No comments:

Post a Comment