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;
}

看懂了下面的东西吗 2.6.1.3 条件编译注释 对于条件编译,必须在#else 和 endif 后添加其是属于哪一个编译选项的说明性注释,注释内 容就为该选项的名称。 【举例】 #ifdef IPF_CFG_DI_UP #else /* IPF_CFG_DI_UP */ #endif /* IPF_CFG_DI_UP */ 例 2-31 2.6.2 函数注释 函数注释包括基本信息的注释与实现的注释。基本的注释介绍函数的基本信息;实现的注释用于 对复杂的、创新的函数实现方法进行介绍。 2.6.2.1 基本信息注释 函数注释要列出函数的目的/功能、输入参数、输出参数、返回值、注意事项等。任何函数都必 须具有函数注释,其中公共函数和全局函数无论在头文件的声明中还是在源文件的定义中都需要有函 数注释,并且要保证函数注释的一致。函数注释参考格式如下: /* * fn 函数声明 * brief 函数功能、性能的简要描述 * details 详细描述 * * param[in] 参数名称 参数说明 * param[in] 参数名称 参数说明 * param[out] 参数名称 参数说明 * * return 返回值的简短注释 * retval 返回值 该返回值的注释 * * note 注意事项 */ 这其中函数声明为完整的函数定义,参数列表过长的话可以分行写;函数功能、性能的简要描 述、详细描述、参数说明、该返回值的注释和注意事项部分使用英文句,因此首字母需要大写,句末 需要加句号,其他地方采用英文词组,首字母不需大写;返回值的简短注释主要描述该返回值用于说 明什么,比如是一个错误号还是执行状态;除非函数很复杂,否则一般不需写详细描述的注释;在返 回值很简单的情况下,关于返回值的逐条解释可以省却;在无特别需要注意的事情时,不需写注意事 软件编码规范 - 16 - 项;当参数说明、该返回值的注释中的内容需要进行换行时,为了美观相应的内容需要对齐。具体参 加下面的例子。 2.6.2.2 实现方法注释 对于实现较复杂的函数、以及具有创新性的函数,建议在函数实现处对其实现算法、流程等进行 注释说明。此部分添加在函数头与大括号之间。 【举例】 /* * fn IMB_MATCH_TYPE imb_match(IMB_BIND_KEY *bindKey, * IMB_BIND_INF **pBindInf) * brief Search and match bind entries. * * param[in] binkKey Key info of the entry to be searched. * param[out] pBindInf The entry found. * * return the match type * retval IMB_MATCH_CORRECT Bind entry is found, and every * thing is matched. * retval IMB_MATCH_NO_FOUND No bind entry found. * retval IMB_MATCH_IP_CONFLICT An entry with the same mac address * found, but ip address is not match. * retval IMB_MATCH_MAC_CONFLICT An entry with the smae ip address * found,but mac address is not match. */ IMB_MATCH_TYPE imb_match(IMB_BIND_KEY *bind_key, IMB_BIND_INF **bind_inf) /* * brief */ { 例 2-32 2.6.3 文件头注释 文件头部注释必须列出版权说明、版本号、生成日期、作者、内容、功能、历史信息等说明: /* 版权说明 * * file 文件名称 * brief 文件的简单描述 * details 文件的详细描述 * * author 作者 * version 版本 * date 生成日期 * * warning 警告提示 * * history \arg 历史信息 * \arg 历史信息 */ 软件编码规范 - 17 - 这些内容中,文件的简单描述、文件的详细描述、警告提示三者均用英文句描述,因此首字母大写,句末要加句号,各部分定义如下: ·版权说明 Copyright(c) 2009-YYYY Shenzhen TP-LINK Technologies Co. Ltd. 说明:版权期限为 2009-当今所在年份 ·作者 姓和名之间留一个空格,并且姓和名的首字母大写。例如 Zhang Yuping。 ·版本 指当前的最新版本,采用三位版本号,例如 1.0.0。 ·生成日期 文件最后的更新日期,格式:10Sep09。 ·警告提示 若文件非常重要,例如文件不能被修改,或者文件修改前有特别要注意的事项,则可以在警告提 示中进行说明。 ·历史信息 格式:version, date, author, modification 若 modification 内容过多需要换行,首单词需要和上一行首单词对齐。历史信息按照从新到 旧的顺序依次从上往下进行编写。对于源文件来讲,modification 如果是包含了添加和修改 某函数,那么还需描写这么做的目的。 【举例】 /* Copyright(c) 2009-2010 Shenzhen TP-LINK Technologies Co.Ltd. * * file imb.h * brief Prototypes for imb's public APIs. * * author Zhou Tianwai * version 1.0.1 * date 27Mar09 * * history \arg 1.0.1, 27Mar09, Zhou Tianwai, Add typedef enum * imb_filter_type. * \arg 1.0.0, 17Feb09, Zhou Tianwai, Create the file. */ 例 2-33 2.6.4 宏注释 宏注释需要对宏进行简单描述,格式为: 软件编码规范 - 18 - /* * brief Simple description. */ 【举例】 /* * brief Estimate whether time2 is smaller than time1. */ #define LATER_THAN(time1, time2) ((time1.tv_sec > time2.tv_sec) \ || ((time1.tv_sec == time2.tv_sec) \ && (time1.tv_usec >= time2.tv_usec))) 例 2-34 2.6.5 变量注释 一般变量的注释需要对变量进行简单描述即可: /* * brief Simple description. */ 注意:全局变量、静态变量、常量必须要有注释,并且要较详细的注释,包括对其功能,取值范 围,哪些函数或过程存取它,以及存取时注意事项等说明。 typedef 类型定义注释: /* * brief Simple description. */ 【举例】 /* * brief The static variable to describe imb data. */ IP_STATIC IMB_DATA imb_data; 例 2-35 2.6.6 结构/联合/枚举注释 结构、联合、枚举必须要有注释,注释方式均非常类似。对于其中成员变量注释时,要注意避免 垃圾注释。 【举例】 Ip_u8 *mac_addr; /* the mac address */,看懂了帮我以这样的要求修改下面代码#include <stdio.h> #define TO_STRING(x) #x #define PI 3.14 int main(void) { printf("转换后的字符串是: %s\n", TO_STRING(PI)); return 0; }
最新发布
07-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值