Description

ACM成立大会之后,uncle_b被其中一个大一女孩深深地吸引,但腼腆的B叔又不知道如何去表达自己内心的想法,经calmound神的指导,B叔决定写封情书给对方.他从Tamara那里,了解到了那个女孩叫做Lyv,而且爱好英语.B叔不好意思太直接地表达,就在情书的写法上加了一些变化.

寄过去之后,那个女孩不明白其中的含义,只在信的最后看到了一个提示,你能根据提示告诉那个女孩B叔想说的话吗?帮帮善良的B叔追到女朋友吧~~~

 
     信上提示如下:情书中凡是女孩名字中有的字母(即L,Y,V,不分大小写)全部保留,并保留所有的元音字母(AEIOU,不分大小写)和空格,其余字母均舍去.注意,若处理完之后两个单词之间有多个空格,只保留一个,句首句末都不能是空格。

Input

输入一行字符串,仅有大小写字母和空格组成,字符串的长度len(1=<len<=100);

Output

输出处理好的字符串

Sample Input

hI plSorTver mst YcXosu

Sample Output

I love You

解题思路:这是一道对字符串操作的题目,存在的坑点就是空格的存在,空格可能会开头,结尾,单词单词之间存在多个,这时候需要做好控制

 #include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
char s[],x[];
int i,j,len,flag=;
gets(s);
len=strlen(s);
j=;
memset(x,,sizeof(x));
for(i=; i<len; i++)
{
if(s[i]=='A'||s[i]=='a'||s[i]=='e'||s[i]=='E'||s[i]=='I'||s[i]=='i'||s[i]=='o'||s[i]=='O'||s[i]=='U'
||s[i]=='u'||s[i]=='L'||s[i]=='l'||s[i]=='Y'||s[i]=='y'||s[i]=='V'||s[i]=='v')
{
x[j++]=s[i];
flag=;
}
if(s[i]==' '&&flag==)///只保存单词之后出现的第一个空格
{
flag=;
x[j++]=s[i];
}
}
while(x[j-]==' ')///结尾可能会出现多个空格,这里使用循环将其一一去除
{
j--;
}
x[j]='\0';
printf("%s\n",x);
return ;
}

但其实我刚开始并不是这样做的,我开始将规定的字母和空格都一起存到了一个新的字符数组之中,但是值得注意的是这个新的字符数组中单词开头,结尾和单词单词之间可不是只有一个空格,当时有点束手无策,加上最近在学习Python,心里发牢骚,要是C语言中也有类似split的函数,能切割字符串就好了,嘻嘻,还真有!!!

 #include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
char s[],x[];
int i,j,len,count=;
gets(s);
len=strlen(s);
j=;
memset(x,,sizeof(x));
for(i=; i<len; i++)
{
if(s[i]=='A'||s[i]=='a'||s[i]=='e'||s[i]=='E'||s[i]=='I'||s[i]=='i'||s[i]=='o'||s[i]=='O'||s[i]=='U'
||s[i]=='u'||s[i]=='L'||s[i]=='l'||s[i]=='Y'||s[i]=='y'||s[i]=='V'||s[i]=='v'||s[i]==' ')
{
x[j++]=s[i];
}
}
char *token = strtok(x," ");
while( token != NULL )
{
if(count==)
{
printf("%s", token );
}
else
{
printf(" %s",token);
}
count++;
token = strtok( NULL, " ");
}
return ;
}
strtok()函数!!!

 #include <stdio.h>
#include<string.h>
int main()
{
char str[] = "mv a.c b.c";
char *p;
p = strtok(str, " ");
while(p)
{
printf("%s\n", p);
p = strtok(NULL, " ");
}
return ;
}

在linux2.6.29以后的版本中,strtok被strsep代替了

 #include <stdio.h>
#include<string.h>
int main()
{
char str[] = "mv a.c b.c";
char *p;
char *buff;
buff=str;
p = strsep(&buff, " ");
while(p)
{
printf("%s\n", p);
p = strsep(&buff, " ");
}
return ;
}
 

The Uncle_b's First Love的更多相关文章

随机推荐

  1. Linux Centos6.5 升级默认Python2.6.6到Python2.7.13

    以下例子基于python 2.7.9,其他版本同理.大致的命令都是差不多的,安装完成之后,输入Python --vertion ,看到系统默认的版本已经替换为2.7版本了 1.下载python wge ...

  2. Hadoop-Hive学习笔记(1)

    1. Hive什么 a.Hive是基于Hadoop的一个数据仓库工具(注意不是数据仓库),将结构化的数据文件映射成一张数据库表. b.Hive是SQL的解析引擎,可以把sql语句转换成MapReduc ...

  3. 关于mysql 8.0.13zip包安装

    mysql 8.0.13默认有一个data文件夹,这个文件夹得删了,不然安装服务时候会有日志文件提示报错: Failed to find valid data directory. Data Dict ...

  4. java入门---基本数据类型之内置数据类型

        变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间.内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据.     因此,通过定义不同类型的变 ...

  5. linux 网络编程 2---(TCP编程)

    流程 服务器:server 创建套接字 socket( ) 填充服务器网络信息结构体 sockaddr_in 将套接字与服务器网络信息结构体绑定 bind( ) 将套接字设置为被动监听状态 liste ...

  6. PHP实现识别带emoji表情的字符串

    function have_special_char($str) { $length = mb_strlen($str); $array = []; for ($i=0; $i<$length; ...

  7. asp.net微信公众平台本地调试设置

    1.首先要开启内网穿透功能,我这边使用自己搭建的ngrok内网穿透服务(具体如何搭建ngrok内网穿透服务,另开一篇说) 2.开启内网穿透后,即可实现互联网访问 www.tbkmama.cn 指向 1 ...

  8. vijos p1027休息中的小呆

    休息中的小呆 描述 当大家在考场中接受考验(折磨?)的时候,小呆正在悠闲(欠扁)地玩一个叫“最初梦想”的游戏.游戏描述的是一个叫pass的有志少年在不同的时空穿越对抗传说中的大魔王chineseson ...

  9. Android Parcelable 源码解析

    大家都知道,要想在Intent里面传递一些非基本类型的数据,有两种方式,一种实现Parcelable,另一种是实现Serializable接口. 今天先不说Serializable 接口,只说Parc ...

  10. MySQL高级-MySQL安装

    1.mysql安装 检查系统是否安装过mysql 查询命令:rpm -qa|grep -i mysql 删除命令:rpm -e RPM软件包名(该名字是上一个命令查出来的名字) 安装命令:rpm -i ...