面试题解析
原文地址:面试题解答作者:飞雪
1. 下面这段代码的输出是多少(在32位机上).
char *p;
char *q[20];
char *m[20][20];
int (*n)[10];
struct MyStruct
{
char dda;
double dda1;
int type ;
};
MyStruct k;
printf("%d %d %d %d",sizeof(p),sizeof(q),sizeof(m),sizeof(n),sizeof(k));
答案: 4 80 1600 4 24
2.
(1)
char a[2][2][3]={{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}} };
for(int i=0;i<12;i++)
printf("%d ",_______);
在空格处填上合适的语句,顺序打印出a中的数字
(2)
char **p, a[16][8];
问:p=a是否会导致程序在以后出现问题?为什么?
3.用递归方式,非递归方式写函数将一个字符串反转.
函数原型如下:char *reverse(char *str);
答案如下:
//非递归方法
char *reverse(char *str)
{
int nLen = strlen( str ) ;
for ( int i=0; i
{
char temp ;
temp = str[i] ;
str[i] = str[nLen-i-1] ;
str[nLen-i-1] = temp ;
}
return str ;
}
//递归方法1
char *reverse2(char *str)
{
//这种方法就直观,但是当字符串很长的时候就很低效
if( *(str+1)== )
{
return NULL ;
}
for( char* o=str+strlen(str)-1, char t=*o; o!=str; o-- )
{
*o=*(o-1);
}
*str=t;
reverse2(str+1);
return str ;
}
//递归方法2
char *reverse3(char* str)
{
//这是这种方法的关键,使用static为的是能用str_reverse的思路,但是不好
static char* x=0;
if( x==0 )
{
x=str;
}
char* q = x+strlen(str)-1;
if( str==q )
{
return NULL;
}
(*q)^=(*str)^=(*q)^=(*str);
if( q == str+1 )
{
return NULL;
}
reverse(++str);
return str ;
}
py函数和memcpy函数有什么区别?它们各自使用时应该注意什么问题?
答:strcpy函数属于字符拷贝函数,当它遇到时,拷贝结束.
memcpy函数属于内存拷贝函数,它会拷贝指定长度的字符到目的'变量。
5.写一个函数将一个链表逆序.
struct link
{
int data ;
link *next ;
};
//非递归方法
link *ReverseLink( link *head )
{
link *pre = head ;
link *cur = head->next ;
link *next = NULL ;
if( cur )
{
next = cur->next ;
cur->next = pre ;
pre = cur ;
cur = next ;
}
pre->next = NULL ;
head = pre ;
}
//递归方法
link *ReverseLink( link *p, link *& head )
{
if( p==NULL || p->next==NULL )
{
head = p ;
return p ;
}
else
{
link *temp = NULL ;
temp = ReverseLink( p->next, head ) ;
temp->next = p ;
return p ;
}
}
一个单链表,不知道长度,写一个函数快速找到中间节点的位置.
struct link
{
int data ;
link *next ;
};
link *FindMid( link *head )
{
link *p1 = head ;
link *p2 = head->next ;
do
{
p1 = p1->next ;
p2 = p2->next ;
}while( p2 && p2->next ) ;
return p1 ;
}
写一个函数找出一个单向链表的倒数第n个节点的指针.(把能想到的最好算法写出).
6.用递归算法判断数组a[N]是否为一个递增数组。
7.
有一个文件(名为)如下,每行有4项,第一项是他们的名次,写一个c程序,将五个人的名字打印出来.并按名次排序后将5行数据仍然保存到中.使文件按名次排列每行.
2,07010188,0711,李镇豪,
1,07010154,0421,陈亦良,
3,07010194,0312,凌瑞松,
4,07010209,0351,罗安祥,
5,07010237,0961,黄世传,
8.写一个函数,判断一个unsigned char 字符有几位是1.
int FindNum( char *str )
{
int num = 0 ;
while( *str != )
{
if( *str == 1 )
{
num ++ ;
str ++ ;
}
else
{
str ++ ;
}
}
return num ;
}
写一个函数判断计算机的字节存储顺序是升序(little-endian)还是降序(big-endian).
9.微软的笔试题.
Implement a string class in C++ with basic functionality like comparison, concatenation, input and output. please also provide some test cases and using scenarios (sample code of using this class).
please do not use MFC, STL and other libraries in your implementation.
10.有个数组a[100]存放了100个数,这100个数取自1-99,且只有两个相同的数,剩下的98个数不同,写一个搜索算法找出相同的那个数的值.(注意空间效率时间效率尽可能要低).
-
(优)面试邀请函
邀请函书写应该简要精练,大方得体,首尾呼应。在我们平凡的日常里,邀请函在活动中的使用越来越广泛,一般邀请函是怎么起草的呢?以下是小编精心整理的面试邀请函,欢迎大家借鉴与参考,希望对大家有所帮助。面试邀请函1尊敬的用人单位:衷心感谢贵单位长期以来对我校毕业生...
-
面试的自我评价精选15篇
在平平淡淡的学习、工作、生活中,我们很多时候都不得不用到自我评价,自我评价不仅影响社会中人与人的交往方式,而且影响社会中人的心理健康程度,影响人的价值观和人生观的合理程度。相信许多人会觉得自我评价很难写吧,下面是小编整理的面试的自我评价,仅供参考,大家一...
-
文艺部面试三分钟合集8篇
文艺部面试三分钟1尊敬的领导和老师:我叫xxx,会计系a班学生,来自美丽的瓷都景德镇,我自荐的学生会职务是文艺部(干事)。水本无波,相荡而起涟猗,石本无华,相撞而起火花。融入到学生会这个团体中,除了能以自身所长为同学们服务,还能够在工作实践中吸取、借鉴和学习他人长...
-
【推荐】面试心得体会
当我们受到启发,对生活有了新的感悟时,常常可以将它们写成一篇心得体会,通过写心得体会,可以帮助我们总结积累经验。很多人都十分头疼怎么写一篇精彩的心得体会,下面是小编精心整理的面试心得体会,希望能够帮助到大家。面试心得体会1自去年参加选调生考试以后,一直有...