2013華為校園招聘上機題

2021-06-17 18:45:20 字數 3086 閱讀 8560

題目描述(60分):

通過鍵盤輸入一串小寫字母(a~z)組成的字串。請編寫乙個字串過濾程式,若字串中出現多個相同的字元,將非首次出現的字元過濾掉。

比如字串「abacacde」過濾結果為「abcde」。

要求實現函式:

void stringfilter(const char *pinputstr, long linputlen, char *poutputstr);

【輸入】 pinputstr:  輸入字串

linputlen:  輸入字串長度        

【輸出】 poutputstr: 輸出字串,空間已經開闢好,與輸入字串等長;

【注意】只需要完成該函式功能演算法,中間不需要有任何io的輸入輸出

示例 輸入:「deefd」        輸出:「def」

輸入:「afafafaf」     輸出:「af」

輸入:「pppppppp」     輸出:「p」

void stringfilter(const char *pinputstr, long linputlen, char *poutputstr)

; while(*pinputstr)

*pinputstr++;

}}

題目描述(40分):

通過鍵盤輸入一串小寫字母(a~z)組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。a

壓縮規則:

1. 僅壓縮連續重複出現的字元。比如字串"abcbc"由於無連續重複字元,壓縮後的字串還是"abcbc".

2. 壓縮欄位的格式為"字元重複的次數+字元"。例如:字串"***yyyyyyz"壓縮後就成為"3x6yz"

要求實現函式:

void stringzip(const char *pinputstr, long linputlen, char *poutputstr);

【輸入】 pinputstr:  輸入字串

linputlen:  輸入字串長度        

【輸出】 poutputstr: 輸出字串,空間已經開闢好,與輸入字串等長;

【注意】只需要完成該函式功能演算法,中間不需要有任何io的輸入輸出

示例 輸入:「cccddecc」   輸出:「3c2de2c」

輸入:「adef」     輸出:「adef」

輸入:「pppppppp」 輸出:「8p」

void stringzip(const char *pinputstr, long linputlen, char *poutputstr)

; while(*pinputstr)

if(number >= 2)

*poutputstr++ = temp;

} *poutputstr = '\0';

}

題目描述(50分):

通過鍵盤輸入100以內正整數的加、減表示式,請編寫乙個程式輸出運算結果字串。

輸入字串的格式為:「運算元1 運算子 運算元2」,「運算元」與「運算子」之間以乙個空格隔開。

補充說明:

1. 運算元為正整數,不需要考慮計算結果溢位的情況。

2. 若輸入算式格式錯誤,輸出結果為「0」。

要求實現函式:

void arithmetic(const char *pinputstr, long linputlen, char *poutputstr);

【輸入】 pinputstr:  輸入字串

linputlen:  輸入字串長度        

【輸出】 poutputstr: 輸出字串,空間已經開闢好,與輸入字串等長;

【注意】只需要完成該函式功能演算法,中間不需要有任何io的輸入輸出

示例 輸入:「4 + 7」  輸出:「11」

輸入:「4 - 7」  輸出:「-3」

輸入:「9 ++ 7」  輸出:「0」 注:格式錯誤

void arithmetic(const char *pinputstr, int length, char * poutputstr)

printf("%d %c %d \n", num1, flag, num2);

if(flag == '+')

sum = num1 + num2;

else

sum = num1 - num2;

/* 函式原型:

char *itoa(int value, char *string, int radix);

int value 被轉換的整數,char *string 轉換後儲存的字元陣列,int radix 轉換進製數,如2,8,10,16 進製等

標頭檔案:

*/itoa(sum, poutputstr, 10);

}

第三題源**複製於:

測試用的主函式:

#include #include #include #include void main()

; char pinputstr2 = ;

char pinputstr3 = ;

char poutputstr1[maxchar] = ;

char poutputstr2[maxchar] = ;

char poutputstr3[maxchar] = ;

/* todo: 呼叫被測函式 */

stringfilter(pinputstr1, strlen(pinputstr1), poutputstr1);

stringzip(pinputstr2, strlen(pinputstr2), poutputstr2);

arithmetic(pinputstr3, strlen(pinputstr3), poutputstr3);

/* todo: 執行完成後可比較是否是你認為正確的值 */

printf(poutputstr1); //abcde

printf(poutputstr2); //3a3b3c2de

printf(poutputstr3); //7

return;

}

華為2013校園招聘上機筆試題

上機時間兩小時,3道題 1 字串轉換 問題描述 將輸入的字串 字串僅包含小寫字母 a 到 z 按照如下規則,迴圈轉換後輸出 a b,b c,y z,z a 若輸入的字串連續出現兩個字母相同時,後乙個字母需要連續轉換2次。例如 aa 轉換為 bc,zz 轉換為 ab 當連續相同字母超過兩個時,第三個出...

華為2013校園招聘上機筆試題

上機時間兩小時,3道題 1 字串轉換 問題描述 將輸入的字串 字串僅包含小寫字母 a 到 z 按照如下規則,迴圈轉換後輸出 a b,b c,y z,z a 若輸入的字串連續出現兩個字母相同時,後乙個字母需要連續轉換2次。例如 aa 轉換為 bc,zz 轉換為 ab 當連續相同字母超過兩個時,第三個出...

華為校園招聘上機訓練

計算字串最後乙個單詞的長度,單詞以空格隔開。輸入描述 一行字串,非空,長度小於5000。輸出描述 整數n,最後乙個單詞的長度。輸入例子 hello world 輸出例子 5 include stdafx.h include include using namespace std int main c...