C語言面試演算法題(二)

2021-09-06 02:18:46 字數 1567 閱讀 8478

1.寫乙個函式,它的原形是int continumax(char *outputstr,char *intputstr)

功能:在字串中找出連續最長的數字串,並把這個串的長度返回,並把這個最長數字串付給其中乙個函式引數outputstr所指記憶體。例如:"abcd12345ed125ss123456789"的首位址傳給intputstr後,函式將返回

9,outputstr所指的值為123456789。

#

include

#include

#include

<

string

.h>

int findmax_numstr(

char

*outputstr,

char

*inputstr)

else

in++;if

(maxlen <

count)}

for(i =0;i*out =

'\0'

;return maxlen;

}void main(

void);

int maxlen;

maxlen = findmax_numstr(output,input)

;printf

("the str %s\n"

,output)

;printf

("the maxlen is %d\n"

,maxlen);}

2.求1000!的未尾有幾個0;

求出1->1000裡,能被5整除的數的個數n1,能被25整除的數的個數n2,能被125整除的數的個數n3,能被625整除的數的個數n4.1000!末尾的零的個數=n1+n2+n3+n4;

只要是末尾是5的數它乘以乙個偶數就會出現乙個0,而末尾是0的數乘以任何數也都會出現0

而末尾是0的如果是乙個0肯定能被5整除,兩個0肯定能被25整數,以此類推3個0就能被5的三次方整除,也就是125

1000!就是1-1000數的相乘,能被5整除的所有數分別乘以乙個偶數就會出現這些個的0,而例如100,既能被5整除,也能被25整除,所以就是兩個0

1000,既能被5,25,也能被125整除,所以算三個0

例如是10!=1*2*3*4*5*6*7*8*9*10,裡面有兩個數能被5整除,就是10和5,而

5隨便乘以乙個偶數就出現乙個0,而10乘以其它數也會出現乙個0,所以10!會有兩個0

#

include

#define num 1000

int find5(

int num)

return ret;

}int main(

void

)

3。編寫乙個 c 函式,該函式在乙個字串中找到可能的最長的子字串,且該字串是由同一字元組成的。

char

*search

(char

*cpsource,

char ch)

++cpsource;

}return cpdest;

}

面試演算法題

前幾天,一好友去筆試,有一題 現在有1000個蘋果,和10個箱子,如何把這1000個蘋果裝在這10個箱子裡,才能使不管任何數量 1 1000 的蘋果,都能一次給出?當時,我們都想,出題這人。今天,在想移位的時候,突然想到了,這絕對是二進位制數的變種。分析 1000個蘋果,最接近1024,轉化為2進製...

面試演算法題

1 直方圖矩形最大值 class solution s.push i return res 2 第n個醜數 class solution return res.back 3 lru cache 最近最少使用頁面置換快取器 class lrucache int get int key void set...

C 面試演算法題C 實現

題目一 陣列中查詢 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。class solution else else return false return false class ...