上機時間兩小時,3道題
1 字串轉(zhuǎn)換
問題描述:
將輸入的字符串(字符串僅包含小寫字母‘a’到‘z’),按照如下規(guī)則,循環(huán)轉(zhuǎn)換后輸出:a->b,b->c,…,y->z,z->a;若輸入的字符串連續(xù)出現(xiàn)兩個字母相同時,后一個字母需要連續(xù)轉(zhuǎn)換2次。例如:aa 轉(zhuǎn)換為 bc,zz 轉(zhuǎn)換為 ab;當(dāng)連續(xù)相同字母超過兩個時,第三個出現(xiàn)的字母按第一次出現(xiàn)算。
要求實現(xiàn)函數(shù):
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
{
if(input[i]!=c)//當(dāng)前字符與前一個字符不相等,則該字符+1
{
output[i]=(input[i]-'a'+1)%26+'a';
c=input[i];
tag=1;
}else
{
if(tag==1)//當(dāng)前字符與前一個字符相等,且前面只有一個字符相同
{
output[i]=(input[i]-'a'+2)%26+'a';
c='\0';
tag=0;
}else//當(dāng)前字符與前一個字符相等,且前面已有2n個字符相同。則按第一次出現(xiàn)算
{
output[i]=(input[i]-'a'+1)%26+'a';
c=output[i];
tag=1;
}
}
}
}
void convert(char *input,char *output)
{
char c='\0';
int tag=0;
int len=strlen(input);
for(int i=0;i
{
if(input[i]!=c)//當(dāng)前字符與前一個字符不相等,則該字符+1
{
output[i]=(input[i]-'a'+1)%26+'a';
c=input[i];
tag=1;
}else
{
if(tag==1)//當(dāng)前字符與前一個字符相等,且前面只有一個字符相同
{
output[i]=(input[i]-'a'+2)%26+'a';
c='\0';
tag=0;
}else//當(dāng)前字符與前一個字符相等,且前面已有2n個字符相同。則按第一次出現(xiàn)算
{
output[i]=(input[i]-'a'+1)%26+'a';
c=output[i];
tag=1;
}
}
}
}
2 字符串處理轉(zhuǎn)換
問題描述:
在給定字符串中找出單詞( “單詞”由大寫字母和小寫字母字符構(gòu)成,其他非字母字符視為單詞的間隔,如空格、問號、數(shù)字等等;另外單個字母不算單詞);找到單詞后,按照長度進行降序排序,(排序時如果長度相同,則按出現(xiàn)的順序進行排列),然后輸出到一個新的字符串中;如果某個單詞重復(fù)出現(xiàn)多次,則只輸出一次;如果整個輸入的字符串中沒有找到單詞,請輸出空串。輸出的單詞之間使用一個“空格”隔開,最后一個單詞后不加空格。
要求實現(xiàn)函數(shù):
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 正數(shù)減法
問題描述:
兩個任意長度的正數(shù)相減,這兩個正數(shù)可以帶小數(shù)點,也可以是整數(shù),請輸出結(jié)果。 輸入的字符串中,不會出現(xiàn)除了數(shù)字與小數(shù)點以外的其它字符,不會出現(xiàn)多個小數(shù)點以及小數(shù)點在第一個字符的位置等非法情況,所以考生的程序中無須考慮輸入的數(shù)值字符串非法的情況。
詳細要求以及約束:
1.輸入均為正數(shù),但輸出可能為負數(shù);
2.輸入輸出均為字符串形式;
3.如果輸出是正數(shù)則不需要帶符號,如果為負數(shù),則輸出的結(jié)果字符串需要帶負號
例如:2.2-1.1 直接輸出為“1.1”,1.1-2.2 則需要輸出為“-1.1”
4.輸出的結(jié)果字符串需要過濾掉整數(shù)位前以及小數(shù)位后無效的0,小數(shù)位為全0的,直接輸出整數(shù)位
例如相減結(jié)果為11.345,此數(shù)值前后均不可以帶0,“011.345”或者“0011.34500”等等前后帶無效0的均視為錯誤 輸出。例如1.1-1.1結(jié)果為0.0,則直接輸出0。
要求實現(xiàn)函數(shù):
void Decrease(char *input1, char*input2, char *output)
【輸入】 char *iinput1 被減數(shù)
char*nput2 減數(shù)
【輸出】 char *output 減法結(jié)果
【返回】 無
示例