2013華為校園招聘機試題

2021-06-21 21:37:32 字數 3275 閱讀 7453

題目描述(60分):

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

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

要求實現函式: 

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

【輸入】 pinputstr:  輸入字串

linputlen:  輸入字串長度         

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

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

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

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

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

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

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

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

/*題目描述(40分):

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

壓縮規則:

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」

*//*

題目描述(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」 注:格式錯誤

#include #include #include #include #define maxchar 20

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

; k = 0;

w = 0;

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

poutputstr[k] ='\0';

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

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

i++;

op = pinputstr[i];

if((pinputstr[i+1] != ' ') || (op != '+' && op != '-'))

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

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

inum1 = atoi(num1);

inum2 = atoi(num2);

if(op == '+')

result = inum1 + inum2;

else

result = inum1 - inum2;

if(result < 0)

poutputstr[0] = '-';

result = abs(result);

itoa(result, num3, maxchar);

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

poutputstr[i] = num3[i - 1]; }

int main()

; char pinputstr2 = ;

char pinputstr3 = ;

char poutputstr1[maxchar] = ;

char poutputstr2[maxchar] = ;

char poutputstr3[maxchar] = ;

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

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

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

printf(poutputstr1);

printf("\n");

printf(poutputstr2);

printf("\n");

printf(poutputstr3);

printf("\n");

return 0;

}

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

華為2014校園招聘機試題

一條長廊裡依次裝有n 1 n 65535 盞電燈,從頭到尾編號1 2 3 n 1 n。每盞電燈由乙個拉線開關控制。開始,電燈全部關著。有n個學生從長廊穿過。第乙個學生把號碼凡是1的倍數的電燈的開關拉一下 接著第二個學生把號碼凡是2的倍數的電燈的開關拉一下 接著第三個學生把號碼凡是3的倍數的電燈的開關...