蓝桥杯-串的处理
来源:互联网 发布:mac os x10.9 cdr下载 编辑:程序博客网 时间:2024/06/07 00:59
串的处理
1. 把每个单词的首字母变为大写。
2. 把数字与字母之间用下划线字符(_)分开,使得更清晰
3. 把单词中间有多个空格的调整为1个空格。
例如:
用户输入:
you and me what cpp2005program
则程序输出:
You And Me What Cpp_2005_program
用户输入:
this is a 99cat
则程序输出:
This Is A 99_cat
我们假设:用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个单词间由1个或多个空格分隔。
假设用户输入的串长度不超过200个字符。
解题思路:
先一次性读取原始串,用一个新的串表示处理过原始串后的字符串。
按照空格将原始串分割成子串,再按照转换规则分别处理子串,将处理后的子串添加到新的串中。
#include <iostream>#include <cstring>#include <cstdio>using namespace std;char s[200],ss[200],str[200];//原始读入串、按空格分离的子串、原始串按要求处理后的串int k=0;bool isLatter(char c)//字母判断{ if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) return true; else return false;}bool isNumber(char c)//数字判断{ if(c>='0'&&c<='9') return true; else return false;}void solve(char ss[])//处理串{ for(int i=0; i<strlen(ss); ++i) { if(isLatter(ss[i]))//是字母 { if(isNumber(ss[i-1])) str[k++]='_';//字母前面是数字要先加下划线 if(i==0) str[k++]= toupper(ss[i]);//首字母大写 else str[k++]=ss[i]; } else if(isNumber(ss[i]))//是数字 { if(isLatter(ss[i-1])) str[k++]='_';//数字前面是数字要先加下划线 str[k++]=ss[i]; } }}int main(){ gets(s);//读取含空格的整个串 int j=0; bool flag=true;//标识是否处理过当前串 for(int i=0; i<strlen(s); ++i) { if(int(s[i])!=32)//不是空格 { flag=true; ss[j++]=s[i];//当前字符加到串中 if(i==strlen(s)-1) solve(ss);//到达串尾,处理当前串 } else { if(flag) { flag=false; solve(ss);//处理当前串 str[k++]=' ';//一个空格分隔 memset(ss,'\0',sizeof(ss));//清空字符数组 } j=0; } } cout<<str<<endl; return 0;}/*you and me what cpp2005programthis is a 99cat*/
0 0
- 蓝桥杯 串的处理
- 蓝桥杯-串的处理
- 蓝桥杯 串的简单处理
- 【蓝桥杯】【串的简单处理】
- 蓝桥杯 串的简单处理 解题报告
- 串的处理 蓝桥杯(代码)
- 串的简单处理
- 串的处理
- 串的处理
- 串的简单处理
- 串的处理
- 串的简单处理
- 串的简单处理
- 串的处理
- 串的处理
- 串的简单处理
- 串的简单处理
- 串的简单处理
- 阿里巴巴 JAVA 开发手册
- Linux画图工具gnuplot
- js 事件委托 阻止事件冒泡---
- Eclipse修改背景颜色
- 在 Ubuntu 12.10 中使用 Virtualbox 安装 Win7虚拟机
- 蓝桥杯-串的处理
- <JAVA练习>02——函数(打印九九乘法表)
- java 去掉html标签 使用正则表达式删除HTML标签。
- IAR中创建BLE/Zigbee新项目
- [BZOJ4004][JLOI2015]装备购买(贪心+高斯消元求线性基)
- linux下线程通过signal通信实例
- Base64编码简介
- ubuntu设置静态ip
- 单元测试-必要性