先看题干:
这道题并不难,如果你对编程语言的基础有很好的掌握,很容易理清整个逻辑。实际上,不涉及到算法的题目都是简单题。笔者带领大家理一下这道题的考察点:
1.输入多个不定长字符串
2.将字符串的首字母一律变为大写(分本来就是大写和本来是小写两种情况)
3.将字符串的其他字母一律变为小写(分本来及时小写和本来是大写两种情况)
部分笔者采用了STL的vector和string嵌套使用,实际上普通的字符数组也能搞定,只不过STL用习惯了是真的简洁;字符处理,单独写一个函数即可,用if-else判断多种情况
完整代码如下:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void Dx(int num,char x)
//输入参数分别是字符下标和字符本身
{
if(num==0)//首字母:本身是大写直接输出,小写要转换为大写
{
if(x>='a'&&x<='z')
{
x=x-32;
printf("%c",x);
}
else
{
printf("%c",x);
}
}
else if(num>0)//其他字母,小写直接输出,大写要转换为小写
{
if(x>='A'&&x<='Z')
{
x=x+32;
printf("%c",x);
}
else
{
printf("%c",x);
}
}
}
int main(int argc, char** argv) {
int n=0;
cin>>n;
vector<string> V;
for(int i=1;i<=n;i++)
{
string temp;
cin>>temp;
V.push_back(temp);
}
//将输入的字符串存入vector容器中
for(int i=0;i<=n-1;i++)
{
string goal=V[i];
for(int j=0;j<=goal.length()-1;j++)
{
Dx(j,goal[j]);
//对每一个字母单独通过函数处理
}
cout<<endl;
//每处理完一段函数要换行
}
return 0;
}