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

時間:2012-09-15   地點:電子科大

上機時間兩小時,3道題

1 字串轉換
問題描述:
將輸入的字符串(字符串僅包含小寫字母‘a’到‘z’),按照如下規則,循環轉換後輸出:a->b,b->c,…,y->z,z->a;若輸入的字符串連續出現兩個字母相同時,後一個字母需要連續轉換2次。例如:aa 轉換爲 bc,zz 轉換爲 ab;當連續相同字母超過兩個時,第三個出現的字母按第一次出現算。
要求實現函數:
void convert(char *input,char* output)
【輸入】  char *input , 輸入的字符串
【輸出】  char *output ,輸出的字符串
【返回】 無
示例
輸入:char*input="abcd" 
輸出:char*output="bcde"
輸入:char*input="abbbcd" 
輸出:char*output="bcdcde"

void convert(char *input,char *output)
{
	char c='\0';
	int tag=0;
	int len=strlen(input);
	for(int i=0;i<len;i++)
	{
		if(input[i]!=c)//當前字符與前一個字符不相等,則該字符+1
		{
			output[i]=(input[i]-'a'+1)%26+'a';
			c=input[i];
			tag=1;
		}else
		{
			if(tag==1)//當前字符與前一個字符相等,且前面只有一個字符相同
			{
				output[i]=(input[i]-'a'+2)%26+'a';
				c='\0';
				tag=0;
			}else//當前字符與前一個字符相等,且前面已有2n個字符相同。則按第一次出現算
			{
				output[i]=(input[i]-'a'+1)%26+'a';
				c=output[i];
				tag=1;
			}
		}
	}
} 



2 字符串處理轉換
問題描述:    
在給定字符串中找出單詞( “單詞”由大寫字母和小寫字母字符構成,其他非字母字符視爲單詞的間隔,如空格、問號、數字等等;另外單個字母不算單詞);找到單詞後,按照長度進行降序排序,(排序時如果長度相同,則按出現的順序進行排列),然後輸出到一個新的字符串中;如果某個單詞重複出現多次,則只輸出一次;如果整個輸入的字符串中沒有找到單詞,請輸出空串。輸出的單詞之間使用一個“空格”隔開,最後一個單詞後不加空格。
要求實現函數:
void my_word(charinput[], char output[])
【輸入】  char input[], 輸入的字符串
【輸出】  char output[],輸出的字符串
【返回】 無
示例
輸入:charinput[]="some local buses, some1234123drivers" ,
輸出:charoutput[]="drivers local buses some"
輸入:charinput[]="%A^123 t 3453i*()" ,
輸出:charoutput[]=""


3 正數減法
問題描述:    
兩個任意長度的正數相減,這兩個正數可以帶小數點,也可以是整數,請輸出結果。 輸入的字符串中,不會出現除了數字與小數點以外的其它字符,不會出現多個小數點以及小數點在第一個字符的位置等非法情況,所以考生的程序中無須考慮輸入的數值字符串非法的情況。 
詳細要求以及約束:
1.輸入均爲正數,但輸出可能爲負數; 
2.輸入輸出均爲字符串形式;
3.如果輸出是正數則不需要帶符號,如果爲負數,則輸出的結果字符串需要帶負號
例如:2.2-1.1 直接輸出爲“1.1”,1.1-2.2 則需要輸出爲“-1.1”
 4.輸出的結果字符串需要過濾掉整數位前以及小數位後無效的0,小數位爲全0的,直接輸出整數位
例如相減結果爲11.345,此數值前後均不可以帶0,“011.345”或者“0011.34500”等等前後帶無效0的均視爲錯誤 輸出。例如1.1-1.1結果爲0.0,則直接輸出0。
要求實現函數:
void Decrease(char *input1, char*input2, char *output)
【輸入】 char *iinput1 被減數
char*nput2 減數 
【輸出】 char *output 減法結果
【返回】 無
示例
輸入:char *input1="2.2" 
char *input2="1.1"
輸出:char*output="1.1"
輸入:char *input1="1.1" 
char *input2="2.2"
輸出:char *output="-1.1"

每一場題目都不一樣,羣裏面還有人提到有表達式求值,如“3*2+1”,結果爲7
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章