Pages

Tuesday

C Aptitude Questions with Answers Part 16

1)
struct point {
 int x; 
 int y; 
 }; 
struct point origin,*pp; 
                     
main() {
pp=&origin; 
printf("origin is(%d%d)\n",(*pp).x,(*pp).y); 
printf("origin is (%d%d)\n",pp->x,pp->y); 
}  
  

Answer:
origin is(0,0)
origin is(0,0)

Explanation:
pp is a pointer to structure. we can access the elements of the structure either with arrow mark or with indirection operator.
Since structure point is globally declared x & y are initialized as zeroes

2)
main() {
 int i=_l_abc(10); 
    printf("%d\n",--i); 
} 


int _l_abc(int i) {
 return(i++); 
} 

Answer:
9
Explanation:
return(i++) it will first return i and then increments. i.e. 10 will be returned.

3)
main() {
   char *p; 
   int *q;
   long *r; 
   p=q=r=0; 
   p++; 
   q++; 
   r++; 
   printf("%p...%p...%p",p,q,r); 
} 

Answer:
0001...0002...0004
Explanation:
++ operator when applied to pointers increments address according to their corresponding data-types.

 4)
main() {
 char c=' ',x,convert(z); 
 getc(c); 
 if((c>='a') && (c<='z')) 
 x=convert(c); 
 printf("%c",x); 
} 


convert(z) {
  return z-32; 
} 

Answer:
Compiler error
Explanation:
declaration of convert and format of getc() are wrong.

5)
main(int argc, char **argv){
  printf("enter the character"); 
  getchar(); 
  sum(argv[1],argv[2]); 
} 
sum(num1,num2) 

int num1,num2; { 
  return num1+num2; 
} 

Answer:
Compiler error.
Explanation:
argv[1] & argv[2] are strings. They are passed to the function sum without converting it to integer values.

6)
# include <stdio.h>
int one_d[]={1,2,3}; 
main() {
 int *ptr;  
 ptr=one_d; 
 ptr+=3; 
 printf("%d",*ptr); 
} 

Answer:
garbage value
Explanation:
ptr pointer is pointing to out of the array range of one_d.

No comments:

Post a Comment