Friday 22 July 2011

c aptitute questions with explained answers


[1] guess the output

main()
{
int i=5,j=6,z;
printf("%d",i+++j);
}

click here for Answer!!!



[2]main()
{
register i=5;
char j[ ]= "hello";
printf("%s %d",j,i);
}


click here for Answer!!!


[3]

main()
{
int a[2][2][2] = { {10,2,3,4}, {5,6,7,8} };
int *p,*q;
p=&a[2][2][2];
*q=***a;
printf("%d..%d",*p,*q);
}


click here for Answer!!!


[4]main()
{
const int i=4;
float j;
j = ++i;
printf("%d %f", i,++j);
}


click here for Answer!!!


[5]

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


click here for Answer!!!


[6]main()
{
int *j;
{
int i=10;
j=&i;
}
printf("%d",*j);
}

click here for Answer!!!


[7]int i=10;
main()
{
extern int i;
{
int i=20;
{
const volatile unsigned i=30;
printf("%d",i);
}
printf("%d",i);
}
printf("%d",i);
}


click here for Answer!!!


[8]#define max 5
#define int arr1[max]
main()
{
typedef char arr2[max];
arr1 list={0,1,2,3,4};
arr2 name="name";
printf("%d %s",list[0],name);
}


click here for Answer!!!


[9]main()
{
int y;
scanf("%d",&y); // input given is 2000
if( (y%4==0 && y%100 != 0) || y%100 == 0 )
printf("%d is a leap year");
else
printf("%d is not a leap year");
}


click here for Answer!!!


[10]main()
{
int k=1;
printf("%d==1 is ""%s",k,k==1?"TRUE":"FALSE");
}


click here for Answer!!!


[11]main()
{
char not;
not=!2;
printf("%d",not);
}


click here for Answer!!!


[12]main()
{
char *str1="abcd";
char str2[]="abcd";
printf("%d %d %d",sizeof(str1),sizeof(str2),sizeof("abcd"));
}


click here for Answer!!!





[13]main()
{
show();
}
void show()
{
printf("I'm the greatest");
}


click here for Answer!!!


[14]main()
{
i
nt i=0;
for(;i++;printf("%d",i)) ;
printf("%d",i);
}


click here for Answer!!!


[15]main()
{
i
nt i;
printf("%d",scanf("%d",&i)); // value 10 is given as input here
}



click here for Answer!!!

3 comments:

  1. incorrect explaination for Q6

    "The variable i is a block level variable and the visibility is inside that block only. But the
    lifetime of i is lifetime of the function so it lives upto the exit of main function. Since the
    i is still allocated space, *j prints the value stored in i since j points i. "

    This is not true, it prints the value 10 even though this variable has been deallocated, the reason is that the OS does not claim that memory segment for every few bytes that are not in use, it only claims memory in multiple of 4K (for 32-bit systems)

    ReplyDelete
  2. Q6 explaination is right..
    read about "dangling pointers"...there is a concept of dangling pointers in that..not..operating system or 4k memory.

    ReplyDelete
  3. Hi,
    Your answer is incorrect

    This can be better understood in C++
    struct A
    {
    A()
    {
    printf("A()\n");
    }
    ~A()
    {
    printf("~A()\n");
    }
    int i;
    };
    int _tmain(int argc, _TCHAR* argv[])
    {
    A *i=0;
    {
    A a;
    i=&a;
    i->i=10;
    }
    printf(" %d ",i->i);
    return 0;
    }

    as you can see that the variable i is still accessed after the object has gone out of scope (that its destructor has been called)

    ReplyDelete