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...