文章
4
粉丝
174
获赞
1
访问
2.2k
解题思路:(1)题目输入格式为一行未处理的字符串,我们可以使用char或者string两种变量类型来容纳这串字符。
根据题目下的示例我们可以知道输入的字符串中是存在括号的,这个时候我们不能简单的使用cin来获取这个字符串,因为cin在获取数据时遇到空格和回车会自动截止,不能够把所需要的输入数据全部获取,所以这个时候C++我们可以采用行获取方式getline(cin, x);而C可以采用gets(x);这里的x为已定义变量的变量名。
(2)获取到输入数据之后呢,我们根据题目所给我们的提示判断。很明确,在那四种空白符后的单词都是首字母,即都需要大写。
我们可以先设置一个标识的变量,我这里用了一个bool变量rv,true表示大写,false表示小写。
若当前字符满足两个条件时候,将它改为大写:(1)该字符是小写字母;(2)标识变量为true。
由于在Ascall码表中,字母的小写比大写的位值多了32,所以我们将需要改写的小写字母减去32即可。
--开始我ac60的时候我还在想要不要写上‘!’,‘:’,‘“‘,但发现加了也没用,是我想多了=m=
代码如下:
#include<iostream>
#include<cstring>
using namespace std;
int main(){
string str;
bool rv = true; //判断下一个字符是否需要大写,由于第一个字符前什么东西都没有,我们让它的初值为true,也即第一个字符大写
while(getline(cin, str)){
for(int i = 0; i < str.length(); i++){
if((str[i] >= 'a' &...
登录后发布评论
好啦,把小写改大写下面的rv = false;删除不影响结果,但下面判断赋值的那个不能删除。