華為OJ之初級篇

2021-07-03 00:25:40 字數 3979 閱讀 5597

21.數字統計

簡要描述:對輸入的整型陣列,輸出陣列元素中的最大值、最大值的個數、最小值和最小值的個數

詳細描述:

介面說明

原型:voidoutputmaxandmin(int * pinputinteger,intinputnum,int * pmaxvalue,int * pmaxnum,int * pminvalue,int * pminnum);

輸入引數:

int * pinputinteger:整型陣列指標

int inputnum:陣列元素個數

輸出引數(指標指向的記憶體區域保證有效):

int* pmaxvalue:陣列中最大值

int* pmaxnum:陣列中最大值的個數

int* pminvalue:陣列中最小值

int* pminnum:陣列中最小值的個數

返回值:

void

答案點這裡

22.水仙花數

簡要描述:水仙花數又稱阿姆斯特朗數。

水仙花數是指乙個n 位數( n≥3 ),它的每個位上的數字的n 次冪之和等於它本身。(例如:1^3 + 5^3 + 3^3 = 153)

求輸入的數字是否為水仙花數

答案點這裡

23.兔子產子

簡要描述:從前有一對長壽的兔子,他們每個月生出一對小兔子,第乙個月新生產的兔子兩個月就長大了,在第三個月初開始生他們的下一代小兔子,這樣一代一代的生下去,不考慮兔子的壽命,求第n個月出生多少對小兔子

簡單示例:

比如輸入1,第乙個月出生的兔子只有一對,所以輸出為1

比如輸入2,第二個月出生的兔子只有一對,所以輸出為1

比如輸出為3,則該月份有兩對兔子出生,則輸出為2

要求:實現以下介面:

輸入乙個正整數,表示第幾個月,輸出該月份生產出的小兔子的對數

呼叫者會保證: 

輸入的月份與生產的兔子數目都為unsigned int 能表達的數字 

答案點這裡

24.向公升序單向鍊錶中插入乙個節點

簡要描述:輸入乙個公升序單向鍊錶和乙個鍊錶節點,向單向鍊錶中按公升序插入這個節點。

輸入為空指標的情況視為異常,另外不考慮節點值相等的情況。

鍊錶結點定義如下:

struct listnode ;

詳細描述:

介面說明

原型:listnode* insertnodetolist(listnode* plisthead, listnode* pinsertnode);

輸入引數:

listnode* plisthead 單向鍊錶

listnode* pinsertnode 新插入節點

輸出引數(指標指向的記憶體區域保證有效):

listnode* plisthead 單向鍊錶

返回值:

正常插入節點返回煉表頭指標,其它異常返回空指標

答案點這裡

25.修改字串

簡要描述:將給定字串中連續出現3次的小寫字母替換為改小寫字母在字母表中的下乙個字母(z變為a),大寫字母和其他字元不處理,仍然保留。要求最終輸出的字串中不再存在任何連續出現3次的小寫字母。

例如字串」atrcccert893#45ae」經過處理後應該為」atrdert893#45ae」

詳細描述:

介面說明

原型:int changestring(char *pinstr,char *poutstr)

輸入引數:

char *pinstr 輸入字串

輸出引數:

char *poutstr 輸出字串,記憶體空間已分配好,可直接使用

返回值:

int 0:處理成功 -1:出現異常

限制: 無

舉例:pinstr:jkds*^*(hkeeeklidddjilfff

poutstr:jkds*^*(hkeeekliejilg

答案點這裡

26.找出字串中第乙個出現次數最多的字元

簡要描述:找出字串中第乙個出現次數最多的字元

詳細描述:

介面說明

原型:bool findchar(char* pinputstring, char* pchar);

輸入引數:

char* pinputstring:字串

輸出引數(指標指向的記憶體區域保證有效):

char* pchar:出現次數最多的字元

返回值:

false 異常失敗

true 輸出成功

答案點這裡

27.在字串中找出連續最長的數字串

簡要描述:請乙個在字串中找出連續最長的數字串,並把這個串的長度返回;如果存在長度相同的連續數字串,返回最後乙個連續數字串;

注意:數字串只需要是數字組成的就可以,並不要求順序,比如數字串「1234」的長度就小於數字串「1359055」,如果沒有數字,則返回空字串(「」)而不是null!

樣例輸入

abcd12345ed125ss123058789

abcd12345ss54761

樣例輸出

輸出123058789,函式返回值9

輸出54761,函式返回值5

介面說明

函式原型:

unsignedint continumax(char** poutputstr, char* intputstr)

輸入引數:

char* intputstr 輸入字串;

輸出引數:

char** poutputstr: 連續最長的數字串,如果連續最長的數字串的長度為0,應該返回空字串;如果輸入字串是空,也應該返回空字串; 

返回值:

連續最長的數字串的長度

答案點這裡

28.迴圈佇列基本操作

簡要描述:

當時做的時候,題目給的是錯的,然後做的時候是根據工程中的測試用例猜測的題目意思,根據這個意思完成作答,**通過驗證。

答案點這裡

29.找出公升序陣列中和為給定值的兩個數字

簡要描述:輸入乙個已經按公升序排序過的陣列和乙個數字,在陣列中查詢兩個數,使得它們的和正好是輸入的那個數字。如果有多對數字的和等於輸入的數字,輸出任意一對即可。

詳細描述:

介面說明

原型:bool findtwonumberswithsum(int adata, unsignedint uilength, int sum, int *pnum1, int *pnum2);

輸入引數:

int adata // 公升序陣列

unsigned int uilength // 陣列元素個數

int sum, // 給定兩個陣列的和

輸出引數(指標指向的記憶體區域保證有效):

int*pnum1 // 第乙個數字,對應陣列索引小的

int *pnum2 // 第二個數字,對應陣列索引大的

返回值:

找到返回true,異常返回false

答案點這裡

30.整型反序

簡要描述:給出乙個不多於5位的整數, 進行反序處理

要求:1、求出它是幾位數

2、分別輸出每一位數字

3、按逆序輸出各位數字,例如原數為321,應輸出123(僅數字間以空格間隔, 負號與數字之間不需要間隔)

例如:輸入:12345

輸出:5

1 2 3 4 5

54321

注意:如果是負數,負號加在第乙個數字之前, 與數字沒有空格間隔

比如輸入:-12345

輸出:5

-1 2 3 4 5

-54321

函式原型:

/*輸入:

iinput: 位數不大於5的整數

輸出:inum: 整數字數 

strrst: 空格間隔輸出結果

ioutput:逆序整數

返回:0 成功

-1 輸入無效

*/int processx(int iinput, int& inum, char * strrst, int& ioutput) 

答案點這裡

華為OJ之初級篇

11.獎金提成 簡要描述 企業發放的獎金根據利潤提成。利潤低於或等於100000元的,獎金可提10 利潤高於100000元,低於200000元 100000 200000 時 低於100000元的部分按10 提成 高於100000元的部分,可提成7.5 200000 400000時,低於200000...

華為OJ之初級篇

本文章旨在提供乙個互相學習和交流的平台,也作為oj刷題這段時光的記錄。本人非計算機科班出身,程式主要以實現功能性需求為主,暫不考慮效能 質量等因素。以下oj題目順序為成功通過機器驗證的順序,本篇題目全出自初級題系列。為了保證本文介面的簡潔性,以 片形式給出,見相關 答案點這裡 鏈結。1.在字串中找出...

華為OJ題目 初級篇(機試OJ平台)

華為oj初級篇是本人蒐集的一些題目,都run過ok,初級題我個人感覺必要在15 20min以內完成,不然時間不夠用,一共三道,後兩道中高階題目。題目一 作業系統任務排程問題。作業系統任務分為系統任務和使用者任務兩種。其中,系統任務的優先順序 50,使用者任務的優先順序 50且 255。優先順序大於2...