2011年第三題
阿新 • • 發佈:2019-01-09
【問題描述】 從鍵盤輸入包含擴充套件符'-'的字串,將其擴充套件為等價的完整字元,例如將a-d擴充套件為abcd,並輸出擴充套件後的字串。 要求:只處理[a-z]、[A-Z]、[0-9]範圍內的字元擴充套件,即只有當擴充套件符前後的字元同時是小寫字母、大寫字母或數字時才進行擴充套件,其它情況不進行擴充套件,原樣輸出。例如:a-R、D-e、0-b、4-B等字串都不進行擴充套件。 【輸入形式】 從鍵盤輸入包含擴充套件符的字串 【輸出形式】 輸出擴充套件後的字串 【輸入樣例1】 ADEa-g-m02 【輸出樣例1】 ADEabcdefghijklm02 【輸入樣例2】 cdeT-bcd 【輸出樣例2】 cdeT-bcd 【樣例說明】 將樣例1的輸入ADEa-g-m02擴充套件為:ADEabcdefghijklm02;樣例2的輸入cdeT-bcd中,擴充套件符前的字元為大寫字母,擴充套件符後的字元為小寫字母,不在同一範圍內,所以不進行擴充套件。 【評分標準】 結果完全正確得15分,共5個測試點,每個測試點3分,提交程式檔案expand.c或expand.cpp。
|
#include<stdio.h> #include<stdlib.h> #include<string.h> int islegal(char ch) { if(ch>='a'&&ch<='z') return 0; else if(ch>='A'&&ch<='Z') return 1; else if(ch>='0'&&ch<='9') return 2; else return -1; } int main() { char input[20000]; while(gets(input)!=NULL) { int len=strlen(input); for(int i=0;i<len;i++) { if(i-1>=0&&i+1<=len-1&&islegal(input[i-1])==islegal(input[i+1])&&islegal(input[i-1])>=0&&input[i]=='-') { for(int j=input[i-1]+1;j<input[i+1];j++) printf("%c",j); } else printf("%c",input[i]); } printf("\n"); } return 0; }