- 相關(guān)推薦
經(jīng)典C語(yǔ)言面試算法題
1.寫(xiě)一個(gè)函數(shù),它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出連續(xù)最長(zhǎng)的數(shù)字串,并把這個(gè)串的長(zhǎng)度返回,并把這個(gè)最長(zhǎng)數(shù)字串付給其中一個(gè)函數(shù)參數(shù)outputstr所指內(nèi)存。例如:"abcd12345ed125ss123456789"的首地址傳給intputstr后,函數(shù)將返回
9,outputstr所指的值為123456789。
#include
#include
#include
int FindMax_NumStr(char *outputstr,char *inputstr)
{
char *in = inputstr,*out = outputstr,*temp;
char *final;
int count = 0;
int maxlen = 0;
int i;
while(*in!='\0')
{
if(*in > 47 && *in < 58)
{
for(temp = in;*in> 47 && *in <58;in++)
count++;
}
else
in++;
if(maxlen < count)
{
maxlen = count;
count = 0;
final = temp;
}
}
for(i =0;i
{
*out = *final;
out++;
final++;
}
*out = '\0';
return maxlen;
}
void main(void)
{
char input[]="abc123def123456eec123456789dd";
char output[50] = {0};
int maxlen;
maxlen = FindMax_NumStr(output,input);
printf("the str %s\n",output);
printf("the maxlen is %d\n",maxlen);
}
2.求1000!的未尾有幾個(gè)0;
求出1->1000里,能被5整除的數(shù)的個(gè)數(shù)n1,能被25整除的數(shù)的個(gè)數(shù)n2,能被125整除的數(shù)的個(gè)數(shù)n3,能被625整除的數(shù)的個(gè)數(shù)n4.1000!末尾的零的個(gè)數(shù)=n1+n2+n3+n4;
只要是末尾是5的數(shù)它乘以一個(gè)偶數(shù)就會(huì)出現(xiàn)一個(gè)0,而末尾是0的數(shù)乘以任何數(shù)也都會(huì)出現(xiàn)0
而末尾是0的如果是一個(gè)0肯定能被5整除,兩個(gè)0肯定能被25整數(shù),以此類(lèi)推3個(gè)0就能被5的三次方整除,也就是125
1000!就是1-1000數(shù)的相乘,能被5整除的所有數(shù)分別乘以一個(gè)偶數(shù)就會(huì)出現(xiàn)這些個(gè)的0,而例如100,既能被5整除,也能被25整除,所以就是兩個(gè)0
1000,既能被5,25,也能被125整除,所以算三個(gè)0
例如是10!=1*2*3*4*5*6*7*8*9*10,里面有兩個(gè)數(shù)能被5整除,就是10和5,而
5隨便乘以一個(gè)偶數(shù)就出現(xiàn)一個(gè)0,而10乘以其它數(shù)也會(huì)出現(xiàn)一個(gè)0,所以10!會(huì)有兩個(gè)0
#include
#define NUM 1000
int find5(int num)
{
int ret = 0;
while(num%5==0)
{
num/=5;
ret++;
}
return ret;
}
int main(void)
{
int result = 0;
int i;
for(i=5;i<=NUM;i+=5)
result +=find5(i);
printf("the total zero number is %d\n",result);
return 0;
}
3。編寫(xiě)一個(gè) C 函數(shù),該函數(shù)在一個(gè)字符串中找到可能的最長(zhǎng)的子字符串,且該字符串是由同一字符組成的。
char * search(char *cpSource, char ch)
{
char *cpTemp=NULL, *cpDest=NULL;
int iTemp, iCount=0;
while(*cpSource)
{
if(*cpSource == ch)
{
iTemp = 0;
cpTemp = cpSource;
while(*cpSource == ch)
++iTemp, ++cpSource;
if(iTemp > iCount)
iCount = iTemp, cpDest = cpTemp;
if(!*cpSource)
break;
}
++cpSource;
}
return cpDest;
}
【經(jīng)典C語(yǔ)言面試算法題】相關(guān)文章:
華為c語(yǔ)言筆試面試題題庫(kù)08-16
計(jì)算機(jī)二級(jí)C語(yǔ)言真題及答案07-11
2017計(jì)算機(jī)二級(jí)考試C語(yǔ)言沖刺題07-28
2017計(jì)算機(jī)二級(jí)考試C語(yǔ)言沖刺題及答案09-19
嵌入式C/C++面試題201609-23
2016年計(jì)算機(jī)二級(jí)c語(yǔ)言真題及答案09-19
2017年計(jì)算機(jī)二級(jí)c語(yǔ)言題庫(kù)基礎(chǔ)題10-26
計(jì)算機(jī)二級(jí)考試C語(yǔ)言歷年真題及答案解析09-15
華為C語(yǔ)言上機(jī)試題及答案06-27