面試的演算法2(C語言)(整理)

2021-07-04 11:17:39 字數 1851 閱讀 6617

/*

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

功能: 在字串中找出連續最長的數字串,並把這個串的長度返回,並把這個最長數字串付給其中乙個函式引數outputstr所指記憶體。

*/#include #include #include //自己寫的 把每個數字串都存下來再判斷 對於這道題的要求 略顯麻煩了 但如果要輸出每個數字串 可在這個基礎上改改就出來了

int findmax_numstr(char *outputstr,char *inputstr)

if(flag==1)

in++;

}//字母:

in++;

flag=0;

}//比較count,求最長數字串

count=(count-numcnt+1);

max=numcnt-1;

int tempnum=count[numcnt-1];

for(i=0;itempnum)

/**(temp[max]+tempnum)='\0';

outputstr=temp[max];

*///儲存最長數字串

for(i=0;i 47 && *in < 58)

else

in++;

if(maxlen < count)

}for(i =0;i1000裡,能被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

void main()

printf("%d\r\n",n1+n2+n3+n4);

}//方法二:遞迴

#include #define num 1000

int find5(int num)

return ret;

}void main(void)

/*

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

*///dfggggsrer455555frtrrrtvvvwwwwwwf445t56

#include #include #include #define num 10

//類似第一道的方法 每次比較 存出現次數最多的字元

char *find(char *str)

if(flag==1)

flag=0;

}if(curcnt>maxcnt)

curcnt=0;

}for(i=0;ifinal[i]='\0';

return final;

}void main()

面試筆試整理2 c 常問問題

1 new delete和malloc free區別 這兩個表示式都用於申請動態記憶體和釋放動態記憶體。但是new可以用於非內部資料型別的物件,而malloc是無法做到的,因為new和delete是作用於建構函式和析構函式的,是c 的運算子 但是malloc是庫函式。注意delete是呼叫一次析構函...

2 C語言位操作

常用位操作 在這裡插入描述 位異或 兩位都相等,結果為0,不相等則為1 左移位 將乙個運算元的各二進位制全部左移若干位,左邊移除出去的二進位制位丟棄,右邊的二進位制位補0。每進行一次左移位操作,得到的結果是原來運算元的一倍 x n x 2 n 位操作與暫存器 暫存器的操作 1 暫存器特定位的清零用 ...

遞迴程式設計2(C語言)

實驗內容 題目1 將非負十進位制整數n轉換成b進製。其中b 2 16 題目2 任何乙個正整數都可以用2的冪次方表示。例如 137 27 23 2 0 同時約定冪次方用括號來表示,即ab 可表示為a b 由此可知,137可表示為 2 7 2 3 2 0 進一步 7 22 2 20 21用2表示 3 2...