CF858C
题意
如果一个字符串同时满足:
1、三个或以上个连着的辅音字母
2、这一段连着的辅音字母不是全部一样的
则这个字符串非法
整个程序都用一个循环来模拟,要满足要求要求可以用一个 \(num\) 来统计连续辅音字母的数量,大于等于 \(3\) 且 \(3\) 个辅音字母不一样,输出空格。
另外,我们可以加一个辅音元音判断的程序
int pd(char x){
for(int i=0; i<5; i++)
if(x==y[i])//y数组来统计元音
return 0;//如果是就返回0
return 1;//辅音返回1
}
上总代码!!!
#include<bits/stdc++.h>
using namespace std;
string s;
int len,num;//len为字符串长度,num来统计连续辅音字母的数量
char y[5]={'a','e','i','o','u'};//y数组来储存元音字母
int pd(char x){//判断是否为辅音字母
for(int i=0; i<5; i++)//循环枚举看x是否为元音字母
if(x==y[i])//如果x是元音字母
return 0;//返回0
return 1;//返回1代表x为辅音字母
}
int main(){
getline(cin,s);//输入字符串
len=s.size();//len存字符串的长度
num=pd(s[0]);
/*
如果返回1则s[0]为辅音字母,辅音字母的数量要+1
(因为初始为0,函数返回1,num就等于1)
否则s[0]为元音字母,函数返回0,辅音字母的数量也要为0
*/
cout<<s[0];//输出第一个字符
for(int i=1; i<len; i++){//循环模拟
if(pd(s[i])==0) num=0;//如果s[i]为元音字母,连续辅音字母的数量清空为0
else{//否则为辅音字母
++num;//连续辅音字母数量要“更新”(+1)
if(num>=3&&!(s[i]==s[i-1]&&s[i-2]==s[i])){//判断是否满足题意
cout<<' ';//满足要求就输出空格
num=1;//字符串新开了一段,但开头仍为辅音字母,所以连续辅音字母的数量为1
}
}
cout<<s[i];//原封不动的输出
}
return 0;//养成好习惯
}

浙公网安备 33010602011771号