5月30日
面试题目
MSN CDC笔试中有一个这样的题目:
把一个整形转换成字符串。
有vc的情况下用了15分钟才调试正确。笔试的时候估计要25分钟以上。
曾经去ATC面试的时候,有一个题目:
把字符串buffer里面连续的空格变成一个空格, 比如有aa bb cc d变成aa bb cc d.
今天重新用vc调了一下,一个小时左右吧。而当时面试一共就一个小时,这个题目不过是其中之一。
答案分别如下:
void cvt(int i)
{
int input=i;
int iterator=2;
while(input)
{
int i=input%iterator;
val[stack++]=i;
input/=iterator;
}
}
void wrapper(int i)
{
if(i==0)
{
printf("0");
return;
}
if(i>0)
{
cvt(i);
}
if(i<0)
{
cvt(-i);
printf("-");
}
while(stack>0)
{
printf("%d",val[--stack]);
}
}
==========
void mov()
{
char *p=" aa bb ccd e f g h j ";
char q[100];
strcpy(q,p);
int index=0;
int flag=0;
int beg[100];
int len[100];
int top=0;
int lentmp;
while(q[index]!='\0')
{
if(q[index]==' ')
{
if(flag==1)
{
beg[top]=index;
lentmp=0;
flag=2;
}
if(flag==2)
{
lentmp++;
}
if(flag==0)
{
flag=1;
}
}
else
{
if(flag==2)
{
len[top++]=lentmp;
}
flag=0;
}
index++;
}
if(flag==2)
{
flag=1;
len[top++]=lentmp;
}
flag=0;
beg[top]=index+1;
len[top++]=0;
flag=0;
int lastcopy=0;
int begcopy;
for(int i=0;i<top-1;i++)
{
begcopy=beg[i]-lastcopy;//+len[i]+2;
int startpoint=beg[i]+len[i];
int lencopy=beg[i+1]-len[i]-beg[i]-1;
for(int lentmp=0;lentmp<lencopy;lentmp++)
{
q[begcopy++]=q[startpoint++];
}
q[begcopy]=' ';
lastcopy+=len[i];
}
q[begcopy]='\0';
lastcopy=0;
}