面试题解析
原文地址:面试题解答作者:飞雪
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个数不同,写一个搜索算法找出相同的那个数的值.(注意空间效率时间效率尽可能要低).
-
面试简历自我评价集锦15篇
时间过得真快,总在不经意间流逝,又到了求职找工作的时候,此时是不是该好好写写简历呢?千万不能认为简历随便应付就可以喔,以下是小编为大家整理的面试简历自我评价,仅供参考,希望能够帮助到大家。面试简历自我评价1本人自学能力很强,在校自学了很多计算机知识,能熟练组...
-
行政面试自我评价
在平凡的学习、工作、生活中,许多人都需要写自我评价,自我评价是个人对自己的思想、动机、行为和个性的评价。相信写自我评价是一个让许多人都头痛的问题,以下是小编为大家收集的行政面试自我评价,仅供参考,欢迎大家阅读。行政面试自我评价11.普通话标准,表达逻辑流...
-
面试自我评价集合14篇
在日常的学习、工作、生活中,我们最熟悉的就是自我评价了,自我评价往往折射出个人对人生自我价值和社会价值的认识和态度。如何写自我评价才合适呢?下面是小编为大家整理的面试自我评价,仅供参考,希望能够帮助到大家。面试自我评价篇1三年的锻炼,给我仅是初步的经验...
-
面试的通知书(集合15篇)
随着社会一步步向前发展,我们都不可避免地要接触到通知,通知是一种下行性常用公文,其使用不受机关级别的限制,可用于发布规章、转发公度文,布置工作、传达事项等。你知道通知怎样才能写的好吗?以下是小编精心整理的面试的通知书,供大家参考借鉴,希望可以帮助到有需要的...