面試題解析
原文地址:面試題解答作者:飛雪
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尊敬的用人單位:衷心感謝貴單位長期以來對我校畢業生...
-
2022年面試的自我評價通用15篇
在我們平凡的日常裏,我們經常遇到需要寫自我評價的情況,自我評價在很大程度上還會自我督促,促使我們維持自我的一致性。怎樣寫自我評價才合理、得體呢?下面是小編爲大家收集的2022年面試的自我評價,歡迎大家借鑑與參考,希望對大家有所幫助。2022年面試的自我評價1面...
-
面試的自我評價(集錦15篇)
在平平淡淡的日常中,我們最不陌生的就是自我評價了,自我評價不僅影響社會中人與人的交往方式,而且影響社會中人的心理健康程度,影響人的價值觀和人生觀的合理程度。如何寫自我評價才合適呢?下面是小編收集整理的面試的自我評價,歡迎閱讀,希望大家能夠喜歡。面試的自我...
-
面試簡歷自我評價集錦15篇
時間過得真快,總在不經意間流逝,又到了求職找工作的時候,此時是不是該好好寫寫簡歷呢?千萬不能認爲簡歷隨便應付就可以喔,以下是小編爲大家整理的面試簡歷自我評價,僅供參考,希望能夠幫助到大家。面試簡歷自我評價1本人自學能力很強,在校自學了很多計算機知識,能熟練組...