# Aptitude Questions Set No 6

[Predict the output or error(s) for the following:]

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);
}
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.
Note:
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++);
}
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);
}
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;
}
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,argv);
}
sum(num1,num2)
int num1,num2;
{
return num1+num2;
}
Compiler error.
Explanation:
argv & argv are strings. They are passed to the function sum without converting it to integer values.

6. int one_d[]={1,2,3};
main()
{
int *ptr;
ptr=one_d;
ptr+=3;
printf("%d",*ptr);
}
garbage value
Explanation:
ptr pointer is pointing to out of the array range of one_d.

7. aaa()
{
printf("hi");
}
bbb()
{
printf("hello");
}
ccc()
{
printf("how are you?\b");
}
main()
{
int (*ptr)();
ptr=aaa;
ptr=bbb;
ptr=ccc;
ptr();
}
how are you?
Explanation:
ptr is array of pointers to functions of return type int.ptr is assigned to address of the function aaa. Similarly ptr and ptr for bbb and ccc respectively. ptr() is in effect of writing ccc(), since ptr points to ccc.

8. main()
{
FILE *ptr;
char i;
ptr=fopen("zzz.c","r");
while((i=fgetc(ptr))!=EOF)
printf("%c",i);
}
contents of zzz.c followed by an infinite loop
Explanation:
The condition is checked against EOF, it should be checked against NULL.

9. main()
{
int i =0,j=0;
if(i && j++)
printf("%d…%d",i++,j);
printf("%d…%d,i,j);
}
0…0
Explanation:
The value of i is 0. Since this information is enough to determine the truth value of the boolean expression. So the statement following the if statement is not executed. The values of i and j remain unchanged and get printed.

10. main()
{
int i;
i = abc();
printf("%d",i);
}
abc()
{
_AX = 1000;
}