山东财经大学新生赛暨天梯赛选拔赛 A.骆驼拼写法(模拟)

题目链接

题目描述

在英语中,依靠单词的大小写拼写复合词的做法,叫做"骆驼拼写法"(CamelCase)。比如,backColor这个复合词,back第一个字母b为小写,color的第一个字母为大写。

这种拼写法在正规的英语中是不允许的,但是在编程语言和商业活动中却大量使用。比如,sony公司的畅销游戏机PlayStation,play和station两个词的词首字母都是大写的。

“骆驼拼写法"又分为两种。第一个词的首字母小写,后面每个词的首字母大写,叫做"小骆驼拼写法”(lowerCamelCase);第一个词的首字母,以及后面每个词的首字母都大写,叫做"大骆驼拼写法"(UpperCamelCase),又称"帕斯卡拼写法"(PascalCase)。

它之所以被叫做"骆驼拼写法",是因为大小写的区分使得复合词呈现"块状"(bump),看上去就像骆驼的驼峰(hump)。

这种变量命名方法非常适合于编程时的变量命名。

现在给你 N N N行单词,要求你把每行单词按照小骆驼拼写法的规则进行拼写,然后输出。

输入描述

第一行一个数字 N ( 0 ≤ N ≤ 100 ) N(0\leq N\leq100) N(0N100),表示行数,之后有 N N N行。

每行有不定数目的单词,以空格分隔。

每个单词由不定长度的英文字母(A~Z,a ~z)组成。

输入描述

N N N行,表示输出

示例1

输入
4
user name
pass word
get message from HTTP response
find minimum path
输出
userName
passWord
getMessageFromHttpResponse
findMinimumPath
题目大意

每一行有多个单词,第一个单词的首字母小写,其他单词的首字母大写,其他所有字符都变为小写。

解题思路

刚开始的时候想的是对于每一行的每个单词都单独输入,但是这样自己没有找到如何判读结束一行的输入。所以索性每一个的所有字符都读入到字符串中(包括空格)。遍历一遍字符串,如果某个字母的前一个字符是空格的话,那么这个字母肯定是某个单词的首字母,特判一下字符串的第一个字符便好。

AC代码
#include <bits/stdc++.h>
#define INF 0x3f3f3f
using namespace std;
const int mod=1e8+7;
const int Max_N=5e2+5;
typedef pair<int,int>P;
typedef long long ll;
typedef unsigned long long ull;
int main(int argc, char const *argv[])
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int n;
	cin>>n;
	getchar();
	while(n--)
	{
		string s,res;
		getline(cin,s);
		int len=s.size();
		s[0]=tolower(s[0]);
		res+=s[0];
		for(int i=1;i<len;i++)
		{
			if(s[i-1]==' ')
			{
				s[i]=toupper(s[i]);
				res+=s[i];
			}
			else if(s[i]!=' ')
			{
				s[i]=tolower(s[i]);
				res+=s[i];
			}
		}
		cout<<res<<endl;
		res.clear();
	}
	return 0;
}
总结

这道题遇到三个细节问题。 第一个就是如何选择输入方式,第二个就是做题太仓促以至于样例都没有看清楚,以为除了首字母以外其他字符都不用改变。第三个就是 g e t l i n e ( c i n , s ) getline(cin,s) getline(cin,s)会把空格和回车读入,输入 n n n之后会有一个回车符,应该用 g e t c h a r ( ) getchar() getchar()来舍去回车符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值