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