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. 使用EF Core的CodeFirt 出现的问题The specified framework version '2.1' could not be parsed

    今天使用了一下EF Core的Code First,进行数据库迁移的的时候报错了: The specified framework version '2.1' could not be parsed ...

  2. asp.net core上使用Redis demo

    整体思路:(1.面向接口编程 2.Redis可视化操作IDE 3.Redis服务) [无私分享:ASP.NET CORE 项目实战(第十一章)]Asp.net Core 缓存 MemoryCache ...

  3. centos install rabbitmq

    安装rabbitmq 需要环境上有erlang,没有安装的可以参照下面的内容进行安装: https://www.erlang-solutions.com/resources/download.html ...

  4. ...续上文(一个小萌新的C语言之旅)

    我们继续上次没介绍完的继续讲: 下面我们说一下二进制,二进制是计算技术中广泛采用的一种 数制. 二进制数据是用0和1两个 数码来表示的数.它的基数为2,进位规则是“逢二进一”.那么二进制怎么转化为十进 ...

  5. 1010 一元多项式求导 (25 分) C语言

    设计函数求一元多项式的导数.(注:x​n​​(n为整数)的一阶导数为nx​n−1​​.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数).数字间以空格分隔. ...

  6. STM32_1 搭建工程框架

    搭建系统框架 -- 创建系统文件夹 -- 拷贝stm32库文件 -- 将文件添加至工程 -- 配置工程环境 1. 创建工程文件夹 找一个工程目录,我就在 stm32/Code 下创建一个模板工程Tem ...

  7. python3 使用语音库pyttsx3

    python3 使用语音库pyttsx3 环境linux+python3.6 sudo pip install pyttsx3 sudo apt-get install espeak 代码实例 imp ...

  8. Flume直接对接SaprkStreaming的两种方式

    一.flume对接sparkStreaming的两种方式: Push推送的方式 Poll拉取的方式 第一种Push方式: 代码如下: package cn.itcast.spark.day5 impo ...

  9. nodejs 事件机制

    node 事件机制   一 三种定时器 NodeJS中有三种类型的定时器:超时时间.时间间隔.即时定时器 1.超时时间:setTimeout(callback,delayMilliSeconds,[a ...

  10. 解决replace格式替换后光标定位问题

    场景:格式化银行卡444格式 手机号344格式 身份证号684格式 校验数据格式,replace后光标定位错乱 或光标一直定位在最后 解决,只针对input,代码用的vue: 获取光标位置: getC ...