Monday, March 24, 2008

C interview questions

C interview questions

1. What will print out?

main()
{
char *p1=“name”;
char *p2;
p2=(char*)malloc(20);
memset (p2, 0, 20);
while(*p2++ = *p1++);
printf(“%s\n”,p2);

}

Answer:empty string.
2. What will be printed as the result of the operation below:

main()
{
int x=20,y=35;
x=y++ + x++;
y= ++y + ++x;
printf(“%d%d\n”,x,y);

}

Answer : 5794
x=20, y=35
now x= y++ + x++;
i.e. 35 + 20 ;
after execution of this code
‘x’ contains 56 i.e (35+20)+1;
and y contains 36 i.e (35+1);
now y= ++x + ++y ;
y=(56+1) + (36+1);
so now y contains 57+37 i.e. 94;
and x contains (x+1)i.e (56+1)=57;
so output is 5794;

3.What will be printed as the result of the operation below:
main()
{
int x=5;
printf(“%d,%d,%d\n”,x,x< <2,x>>2);
}

Answer: 5,20,1
5. What will be printed as the result of the operation below:

#define swap(a,b) a=a+b;b=a-b;a=a-b;

void main()
{
int x=5, y=10;
swap (x,y);
printf(“%d %d\n”,x,y);
swap2(x,y);
printf(“%d %d\n”,x,y);
}

int swap2(int a, int b)
{
int temp;
temp=a;
b=a;
a=temp;
return 0;

}

Answer: 10, 5
10, 5
6. What will be printed as the result of the operation below:

main()
{
char *ptr = ” Cisco Systems”;
*ptr++; printf(“%s\n”,ptr);
ptr++;
printf(“%s\n”,ptr);

}

Answer:Cisco Systems
isco systems
1) ptr++ increments the ptr address to point to the next address. In the prev example, ptr was pointing to the space in the string before C, now it will point to C.
2)*ptr++ gets the value at ptr++, the ptr is indirectly forwarded by one in this case.
3)(*ptr)++ actually increments the value in the ptr location. If *ptr contains a space, then (*ptr)++ will now contain an exclamation mark.
So , the correct answers are:
Cisco Systems
isco Systems
7. What will be printed as the result of the operation below:

main()
{
char s1[]=“Cisco”;
char s2[]= “systems”;
printf(“%s”,s1);
}

Answer: Cisco
8. What will be printed as the result of the operation below:

main()
{
char *p1;
char *p2;

p1=(char *)malloc(25);
p2=(char *)malloc(25);

strcpy(p1,”Cisco”);
strcpy(p2,“systems”);
strcat(p1,p2);

printf(“%s”,p1);

}

Answer: Ciscosystems
9. The following variable is available in file1.c, who can access it?:

static int average;

Answer: all the functions in the file1.c can access the variable.
10. WHat will be the result of the following code?

#define TRUE 0 // some code

while(TRUE)
{

// some code

}

Answer: This will not go into the loop as TRUE is defined as 0.
11. What will be printed as the result of the operation below:

int x;
int modifyvalue()
{
return(x+=10);
}

int changevalue(int x)
{
return(x+=1);
}

void main()
{
int x=10;
x++;
changevalue(x);
x++;
modifyvalue();
printf("First output:%d\n",x);

x++;
changevalue(x);
printf("Second output:%d\n",x);
modifyvalue();
printf("Third output:%d\n",x);

}

Answer: 12 , 13 , 13
12. What will be printed as the result of the operation below:

main()
{
int x=10, y=15;
x = x++;
y = ++y;
printf(“%d %d\n”,x,y);

}

Answer: 11, 16
13. What will be printed as the result of the operation below:

main()
{
int a=0;
if(a==0)
printf(“Cisco Systems\n”);
printf(“Cisco Systems\n”);

}

Answer: Two lines with “Cisco Systems” will be printed.

No comments:

如何发掘出更多退休的钱?

如何发掘出更多退休的钱? http://bbs.wenxuecity.com/bbs/tzlc/1328415.html 按照常规的说法,退休的收入必须得有退休前的80%,或者是4% withdrawal rule,而且每年还得要加2-3%对付通胀,这是一个很大...