题解 | #首字母大写#
首字母大写
https://www.nowcoder.com/practice/91f9c70e7b6f4c0ab23744055632467a
#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; }