NOIP2008初賽試題,字串替換
阿新 • • 發佈:2018-12-10
noip2008C_4_1(字串替換)給定一個字串S(S僅包含大小寫字母),下面的程式將S中的每個字母用規定的字母替換,並輸出S經過替換後的結果。程式的輸入是兩個字串,第一個字串是給定的字串S,第二個字串S’由26個字母組成,它是a~z的任一排列,大小寫不定,S’規定了每個字母對應的替換字母:S’中的第一個字母是字母A和a的替換字母,即 S中的A用該字母的大寫替換,S中的a用該字母的小寫替換;S’中的第二個字母是字母B 和b的替換字母,即S中的B用該字母的大寫替換,S中的b用該字母的小寫替換;…… 以此類推。
先把s‘中的大寫全部轉為小寫,要保持s中的大小寫不變,然後按照規則輸出。
規則:用s‘中的字母順序替換a-z的字母順序。
#include<iostream> #include<string.h> char change[26],str[5000]; using namespace std; void CheckChangeRule() { int i; for(i = 0; i < 26; i++) { if(change[i] >= 'A' && change[i] <= 'Z')//大寫轉小寫 change[i] -= 'A'-'a'; } } void ChangeString() { int i; for(i = 0; i < strlen(str); i++) { if(str[i] >= 'A' && str[i] <= 'Z') str[i] = change[str[i] - 'A'] -'a' + 'A';//將str[i]小寫轉大寫 else str[i] = change[str[i] - 'a']; } } int main() { //freopen("4.1.txt","r",stdin); int i; cin >> str; cin >> change; CheckChangeRule(); ChangeString(); cout << str << endl; return 0; }