Skip to content

Latest commit

 

History

History
59 lines (46 loc) · 1.79 KB

2690.md

File metadata and controls

59 lines (46 loc) · 1.79 KB

首字母大写 2690: 首字母大写

题目要求将句子中的单词首字母都改成大写。

题目来源

2690: 首字母大写

总时间限制: 1000ms 内存限制: 65536kB

描述

对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。在字符串中,单词之间通过空白符分隔,空白符包括:空格(' ')、制表符('\t')、回车符('\r')、换行符('\n')。

输入

输入一行:待处理的字符串(长度小于80)。

输出

输出一行:转换后的字符串。

样例输入

if so, you already have a google account. you can sign in on the right.

样例输出

If So, You Already Have A Google Account. You Can Sign In On The Right.

首先要判断句子中的单词首字母,主要通过是否为句首或者该字母的前一个字符是分隔符进行判断。

#include <iostream>
#include <cstring>
using namespace std;
int main() {
	char str[81];
	cin.getline(str, 81);
	int i;
	if(str[0] >= 'a' && str[0] <= 'z') {
		str[0] -= 32;
	}
	for(i = 1; i < strlen(str); ++i) {
		if(str[i] >= 'a' && str[i] <= 'z' 
			&& (str[i - 1] == ' ' || str[i - 1] == '\t' 
			|| str[i - 1] == '\r' || str[i - 1] == '\n')) {
			str[i] -= 32;
			i++;
		}
	}
	cout << str << endl;
	return 0;
}

2690.cpp 代码长度:415B 内存:144kB 时间:3ms 通过率:90% 最小内存:144kB 最短时间:0ms

读入带有空格的一行需要使用cin.getline,首先判断第一个字母,其他情况判断前一个字符是否为题目给出的分隔符,之后修改为大写即可。

有任何的改进意见欢迎大家在微信平台公众号主页面留言或者发表issue。