日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2014届华为校园招聘机试题

發布時間:2024/7/19 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2014届华为校园招聘机试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

華為2014校園招聘的機試題目和2013年的完全一樣。
一、題目描述(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、壓縮字段的格式為"字符重復的次數+字符"。例如:字符串"xxxyyyyyyz"壓縮后就成為"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<stdio.h> #include<string.h> #include<stdlib.h>#define MAXCHAR 256void stringFilter(const char* pInputStr , long lInputLen , char* pOutputStr) {bool hash[26] = {0}; //統計字符是否出現int i , j;for(i = 0 , j = 0 ; i < lInputLen; ++i){if(false == hash[pInputStr[i] - 'a']) //該字符還木有出現過{hash[pInputStr[i] - 'a'] = true;pOutputStr[j++] = pInputStr[i];}}pOutputStr[j] = '\0'; }void stringZip(const char* pInputStr , long lInputLen , char* pOutputStr) {int i , j , k , num;char buffer[20];for(i = 0 , k = 0; i < lInputLen; ){num = 0;for(j = i + 1 ; j < lInputLen ; ++j){if(pInputStr[i] == pInputStr[j]) //統計字符串中每個字符后面連續出現的重復字母次數++num;elsebreak;}//forif(0 != num) //num可能是兩位或三位或更多位的整數{memset(buffer , 0 , sizeof(buffer));itoa(num + 1 , buffer , 10); //將整數按10進制轉換為字符串strcpy(pOutputStr + k , buffer);k += strlen(buffer);}pOutputStr[k++] = pInputStr[i];i = i + num + 1;}//forpOutputStr[k] = '\0'; }void arithmetic(const char* pInputStr , long lInputLen , char* pOutputStr) {int i , j , num1 , num2 , result , num_space;char buffer[4];bool add , sub;add = sub = false;for(i = 0 , num_space = 0 ; i < lInputLen ; ++i){if(pInputStr[i] == ' ')++num_space;}if(2 != num_space) //空格數非法{pOutputStr[0] = '0';pOutputStr[1] = '\0';return ;}num1 = num2 = 0;for(i = 0 ; pInputStr[i] != ' ' ; ++i){if(pInputStr[i] >= '0' && pInputStr[i] <= '9')num1 = num1 * 10 + pInputStr[i] - '0';else //第一個操作數中有非法字符{pOutputStr[0] = '0';pOutputStr[1] = '\0';return ;}}for(j = i + 1 ; pInputStr[j] != ' ' ; ++j);if(1 != j - i - 1) //運算符長度不合法{pOutputStr[0] = '0';pOutputStr[1] = '\0';return ;}else //操作符的長度為1{if('+' != pInputStr[i+1] && '-' != pInputStr[i+1]) //操作符號非法{pOutputStr[0] = '0';pOutputStr[1] = '\0';return ;}else{if('+' == pInputStr[i+1])add = true;if('-' == pInputStr[i+1])sub = true;for(i = j + 1 ; i < lInputLen ; ++i){if(pInputStr[i] >= '0' && pInputStr[i] <= '9')num2 = num2 * 10 + pInputStr[i] - '0';else //第二個操作數中有非法字符{pOutputStr[0] = '0';pOutputStr[1] = '\0';return ;}}//forif(add)result = num1 + num2;else if(sub)result = num1 - num2;memset(buffer , 0 , sizeof(buffer));itoa(result , buffer , 10); //將整數按10進制轉換為字符串strcpy(pOutputStr , buffer);}//esle}//else }int main(void) {printf(" -- 2014年華為校園招聘機試題 (http://blog.csdn.net/hackbuteer1) --\n\n");char pInputStr1[] = {"aaabbbcccdde"};char pInputStr2[] = {"aaaaaaaaaaaabbcddddddddddddddddde"};char pInputStr3[] = {"3 + 4"};char pOutputStr1[MAXCHAR] = {0};char pOutputStr2[MAXCHAR] = {0};char pOutputStr3[MAXCHAR] = {0};stringFilter(pInputStr1 , strlen(pInputStr1) , pOutputStr1);stringZip(pInputStr2 , strlen(pInputStr2) , pOutputStr2);arithmetic(pInputStr3 , strlen(pInputStr3) , pOutputStr3);puts(pOutputStr1);puts(pOutputStr2);puts(pOutputStr3);return 0; }

轉載請標明出處,原文地址:http://blog.csdn.net/hackbuteer1/article/details/11132567

總結

以上是生活随笔為你收集整理的2014届华为校园招聘机试题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。