雅虎笔试题

工作地点:第一份工作网  来源:第一份工作网发布时间:08-02-17 流量人数:

串,如"abccade","dgcadde"的最大子串为"c
ad"char* constr(char *A,char *B){
int lenA=strlen(A),lenB=strlen(B);
int itmp,conlen=0;
char *pequ,*pH=NULL;
char *pA,*pB,*pA2,*pB2;
for(pA=A;pA-A for(pB=B;pB-B if(*pB==*pA){
pA2=pA+1;
pB2=pB+1;
for(itmp=1;*pA2==*pB2 && pA2++-A
if(itmp>conlen){
conlen=itmp;
pH=pA;
}
}
pB++;
}
}
pequ=(char*)malloc(conlen+1);
memcpy(pequ,pH,conlen);
*(pequ+conlen)='';
return pequ;
}

Question 54. (问答)
说明关键字static和volatile的含义
static用于外部变量或者函数时,限制了它们的作用域为文件内部;static也可以用于内
部变量,这样,内部变量在每次函数调用时都为同一存储,值具有连续性。
volatile说明了一个变量的值是会随机变化的,即使程序没有对它进行任何赋值操作。它
告诉编译器的优化处理器,这些变量是实实在在存在的,在优化过程中不能无故消除,这样就保证了编译后的代码在每次操作是从变量地址
处取数。
Question 55. (问答)
编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列
库函数
void put(long data){
long mask=0x1<<(8*sizeof(long)-1);
int i;
char c;
if(data&mask)
putchar('1');
else
putchar('0');
mask=0x1<<(8*sizeof(long)-2);
for(i=1;i<8*sizeof(long);i++){
if(data&mask)
putchar('1');
else
putchar('0');
mask>>=1;
}
putchar(' ');
mask=0xf<<(8*sizeof(long)-4);
c=(data&mask)>>(8*sizeof(long)-4);
if(c<10)
putchar(c+'0');
else
putchar(c+'a');
mask=0xf<<(8*sizeof(long)-8);
for(i=1;i<2*sizeof(long);i++){
c=(data&mask)>>(8*sizeof(long)-4*i-4);
if(c<10)
putchar(c+'0');
else
putchar(c+'a');
mask>>=4;
}
}



内容导航

  • 还没有相关文章

文章评论

共有 最新评论共有 0 位网友发表了评论 查看完整内容 我要说两句