/*IBM减一
样例输入
2
HAL
SWERC
样例输出
String #1
IBM
String #2
TXFSD
*/
思路分析:观察案例可知,输出字母是输入字母的后一个,而Z对应的则是A。通过if―else语句即可完成要求。
//方法一:
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
int num;
vector<string>v;
vector<string>::iterator it;
cin>>num;
for(int i=0;i<num;i++)
{
string temp;
cin>>temp;
v.push_back(temp);
}
int n = 1;
for(it=v.begin();it!=v.end();it++)
{
string temp;
temp = *it;
cout<<"string #"<<n++<<endl;
for(int j=0;j<temp.length();j++)
{
if(temp[j]=='Z')
cout<<'A';
cout<<char(temp[j]+1);
}
cout<<endl;
}
return 0;
}
*/
//方法二:
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
string s;
while(cin>>s)
{
for(int j=0;j<s.length();j++)
{
if(s[j]=='Z')
{
cout<<'A';
}
cout<<char(s[j]+1);
}
cout<<endl;
}
}
return 0;
}
/*荷兰国旗问题
样例输入
3
BBRRWBWRRR
RRRWWRWRB
RBRW
样例输出
RRRRRWWBBB
RRRRRWWWB
RRWB
*/
思路分析:本题关键是如何输入一行案例,计算出三种字母的个数,按循序输出。
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n;
cin>>n;
cin.get();//吸收尾部标记
for(int i=0;i<n;i++)
{
char s[100];
cin.getline(s,100,'\n');//读取一行
int len = strlen(s);
int r = 0,w = 0,b = 0;
for(int i=0;i<len;i++)
{
if(s[i]=='R')
r++;
else
{
if(s[i]=='W')
w++;
else
b++;
}
}
for(int i=0;i<r;i++)
cout<<'R';
for(int j=0;j<w;j++)
cout<<'W';
for(int k=0;k<b;k++)
cout<<'B';
cout<<endl;
}
return 0;
}
/*空格字符与非空格字符统计
样例输入
123fe*&54 0934j
df *A S
样例输出
14 1
5 3
*/
思路分析:关键在于如何判断已经输完字符串。
#include<iostream>
using namespace std;
int main()
{
char ch;
int m = 0,n = 0;
while(!cin.eof())
{
if((ch=cin.get())!=' ')
{
if((ch!='\n')&&(ch!=-1))//-1表示文件尾部标志
m++;
else
{
cout<<m<<" "<<n<<endl;
m = 0,n = 0;
}
}
else
n++;
}
return 0;
}