国语精品91自产拍在线观看二区_色偷偷五月天_天天射夜夜爽_99久久免费国产特黄_1717国产精品久久

面試題解析

時(shí)間:2022-07-13 18:07:48 面試 我要投稿

面試題解析

原文地址:面試題解答作者:飛雪

面試題解析

1. 下面這段代碼的輸出是多少(在32位機(jī)上).

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 ",_______);

在空格處填上合適的語(yǔ)句,順序打印出a中的數(shù)字

(2)

char **p, a[16][8];

問(wèn):p=a是否會(huì)導(dǎo)致程序在以后出現(xiàn)問(wèn)題?為什么?

3.用遞歸方式,非遞歸方式寫(xiě)函數(shù)將一個(gè)字符串反轉(zhuǎn).

函數(shù)原型如下: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)

{

//這種方法就直觀,但是當(dāng)字符串很長(zhǎng)的時(shí)候就很低效

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)

{

//這是這種方法的關(guān)鍵,使用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 ;

}

4.strcpy函數(shù)和memcpy函數(shù)有什么區(qū)別?它們各自使用時(shí)應(yīng)該注意什么問(wèn)題?

答:strcpy函數(shù)屬于字符拷貝函數(shù),當(dāng)它遇到\時(shí),拷貝結(jié)束.

memcpy函數(shù)屬于內(nèi)存拷貝函數(shù),它會(huì)拷貝指定長(zhǎng)度的字符到目的變量。

5.寫(xiě)一個(gè)函數(shù)將一個(gè)鏈表逆序.

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 ;

}

}

一個(gè)單鏈表,不知道長(zhǎng)度,寫(xiě)一個(gè)函數(shù)快速找到中間節(jié)點(diǎn)的位置.

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 ;

}

寫(xiě)一個(gè)函數(shù)找出一個(gè)單向鏈表的倒數(shù)第n個(gè)節(jié)點(diǎn)的指針.(把能想到的最好算法寫(xiě)出).

6.用遞歸算法判斷數(shù)組a[N]是否為一個(gè)遞增數(shù)組。

7.

有一個(gè)文件(名為a.txt)如下,每行有4項(xiàng),第一項(xiàng)是他們的名次,寫(xiě)一個(gè)c程序,將五個(gè)人的名字打印出來(lái).并按名次排序后將5行數(shù)據(jù)仍然保存到a.txt中.使文件按名次排列每行.

2,07010188,0711,李鎮(zhèn)豪,

1,07010154,0421,陳亦良,

3,07010194,0312,凌瑞松,

4,07010209,0351,羅安祥,

5,07010237,0961,黃世傳,

8.寫(xiě)一個(gè)函數(shù),判斷一個(gè)unsigned char 字符有幾位是1.

int FindNum( char *str )

{

int num = 0 ;

while( *str != )

{

if( *str == 1 )

{

num ++ ;

str ++ ;

}

else

{

str ++ ;

}

}

return num ;

}

寫(xiě)一個(gè)函數(shù)判斷計(jì)算機(jī)的字節(jié)存儲(chǔ)順序是升序(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.有個(gè)數(shù)組a[100]存放了100個(gè)數(shù),這100個(gè)數(shù)取自1-99,且只有兩個(gè)相同的數(shù),剩下的98個(gè)數(shù)不同,寫(xiě)一個(gè)搜索算法找出相同的那個(gè)數(shù)的值.(注意空間效率時(shí)間效率盡可能要低).

【面試題解析】相關(guān)文章:

100個(gè)最權(quán)威的招聘面試題及回答解析07-11

c面試題08-04

華為面試題07-11

「MySQL」經(jīng)典面試題07-11

采購(gòu)面試題07-11

面試題集錦07-11

Java面試題07-12

SQL面試題07-12

面試題與技巧07-12

我來(lái)解析解析著名攝影師的作品!07-09