2013華為校園招聘機試題9月10日題(杭州)

2021-09-09 04:11:39 字數 3872 閱讀 3959

2013華為校園招聘機試題9月10日題(杭州):

題目部分:

1/*2

3題目描述(60分):

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

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

要求實現函式:

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

【輸入】 pinputstr: 輸入字串

11linputlen: 輸入字串長度

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

1314

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

1516

示例 17

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

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

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

20*/

2122

/*main函式已經隱藏,這裡保留給使用者的測試入口,在這裡測試你的實現函式,可以呼叫printf列印輸出

*/23

/*當前你可以使用其他方法測試,只要保證最終程式能正確執行即可

*/24

/*該函式實現可以任意修改,但是不要改變函式原型。一定要保證編譯執行不受影響

*/25

26/*

27題目描述(40分):

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

29壓縮規則:

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

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

3233

要求實現函式:

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

3536

【輸入】 pinputstr: 輸入字串

37linputlen: 輸入字串長度

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

3940

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

4142

示例 43

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

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

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

46*/

4748

/*49

題目描述(50分):

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

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

5253

補充說明:

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

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

5657

要求實現函式:

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

5960

【輸入】 pinputstr: 輸入字串

61linputlen: 輸入字串長度

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

6364

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

6566

示例 67

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

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

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

70*/

解答:

#include #include #include #define maxchar 256

//必須規定均為小寫字母

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

; int pos = 0;

long i, j;

const char *p = pinputstr;

for(i = 0, j = 0; i < linputlen; i++)

}poutputstr[j] = '\0';

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

if(cnt != 0)

poutputstr[k++] = pinputstr[i++];

cnt = 0;

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

; char op1[maxchar], op[maxchar], op2[maxchar], buffer[4];

for(i = 0; i < linputlen; i++)

if(pinputstr[i] == ' ')

cnt++;

if(cnt != 2) //空格數不等於2

sscanf(pinputstr, "%s %s %s", op1, op, op2);

if(strlen(op) > 1 || (op[0] != '+' && op[0] != '-')) // 操作符有多個

for(i = 0; i < strlen(op1); i++) //運算元1是否有其他字元

}for(i = 0; i < strlen(op2); i++) //運算元2是否有其他字元

}a = atoi(op1);

b = atoi(op2);

switch(op[0])

}int 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華為校園招聘機試題

題目描述 60分 通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串過濾程式,若字串中出現多個相同的字元,將非首次出現的字元過濾掉。比如字串 abacacde 過濾結果為 abcde 要求實現函式 void stringfilter const char pinputstr,long li...

2013屆華為校園招聘機試題

筆試題目 機試,共兩題 題目一 子串分離 題目描述 通過鍵盤輸入任意乙個字串序列,字串可能包含多個子串,子串以空格分隔。請編寫乙個程式,自動分離出各個子串,並使用 將其分隔,並且在最後也補充乙個 並將子串儲存。如果輸入 abc def gh i d 結果將是abc,def,gh,i,d,要求實現函式...

0903 2013華為校園招聘機試題

1 通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串過濾程式,若字串中出現多個相同的字元,將非首次出現的字元過濾掉。比如字串 abacacde 過濾結果為 abcde 要求實現函式 void stringfilter const char pinputstr,long linputlen...