T09 首字母大写

描述

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

输入描述:

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

输出描述:

可能有多组测试数据,对于每组数据, 输出一行:转换后的字符串。

PS: 所给字符串包括数字

#include<iostream>
#include <iomanip>
#include <algorithm>
#include <valarray>
#include "stdio.h"

using namespace std;

int main() {
    string a;

    getline(cin, a);
    bool flag;
    if (a[0] >= 'a' && a[0] <= 'z') {       //判断整个字符串第一个字符是不是字母,是的话为true
        flag = true;
    } else {
        flag = false;
    }

    for (int i = 0; i < a.size(); ++i) {
        if (a[i] >= 'a' && a[i] <= 'z') {   //如果遍历到的是小写字母
            if (flag) {     // 如果需要修改
                if (i == 0|| !(a[i - 1] >= '0' && a[i - 1] <= '9') ) {  //判断其上一个字符是不是数字(或者i是否为0),不是的话再小写变大写,不然不动
                    a[i] = a[i] - 'a' + 'A';
                }
                flag = false;   //不论有没有修改,后面的字符都不会再是第一个小写字母了
            }
        } else if (i != 0) {    //如果遍历到的不是小写字母,看其是不是数字或大写字母
            if (!(a[i] >= '0' && a[i] <= '9') &&  !(a[i] >= 'A' && a[i] <= 'Z')) {  //不是的话说明是空白符
                flag = true;
            }
        } else {
            continue;
        }
    }
    cout << a;
    return 0;
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值