1. 程式人生 > >NOIP2008初賽試題,字串替換

NOIP2008初賽試題,字串替換

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;
}