码迷,mamicode.com
首页 > 其他好文 > 详细

首字母变大写

时间:2015-04-23 11:05:34      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

链接:http://acm.zzuli.edu.cn/problem.php?id=1136

1136: 首字母变大写

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 883  Solved: 547

SubmitStatusWeb Board

Description

输入一个只包含大小写英文字母和空格的句子,将每个单词的第一个字母改成大写字母。

Input

输入一个长度不超过100的英文句子。

Output

请输出按照要求改写后的英文句子。

Sample Input

i like ACM

Sample Output

I Like ACM

HINT

Source

思路:开始刚看这道题,我觉得很简单,水题。但是我用strtok时,发现了问题,如果以空格分隔的话,把每个单词存放string数组中,让首字母变大写,但是此时的string数组里面单词首字母都变大写了,但是之前单词与单词之间的空格数量的关系都散掉了。。我想如果这是比赛,我真是玩完了……现在总是把问题想的太复杂……简单的函数习惯使用,导致一些基本的步骤自己写反而费劲了。
  设一个变量flag,开始标记为0,如果遇到空格,flag标记为1,continue,如果下个单词仍是空格,flag仍为1,continue,下一个单词是字母的话,如果是小写字母,就变成大写或者是大写字母就不变,之后flag标记为0,这样就保证了单词的第一个控制而不管除了第一个字母的其他的字母。耐心看下面的代码,应该会懂:
#include<iostream>
#include<string.h>
#include<string>
using namespace std;
int main()
{
	int lena,i,flag=0;
	char a[110];
	gets(a);
	lena=strlen(a);
	for(i=0;i<lena;i++)
{
	   if(a[0]>='a'&&a[0]<='z')
          a[i]-=32;
		else
	{
		if(a[i]==' ')
		{
                   flag=1;
		   continue;
		}
		if(flag==1)
		{
			if(a[i]>='a'&&a[i]<='z')
			{
				a[i]-=32;	
			}
			flag=0;
		}
	}
}
	cout<<a<<endl;
	return 0;
}

首字母变大写

标签:

原文地址:http://blog.csdn.net/zuguodexiaoguoabc/article/details/45217167

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!