文章
8
粉丝
140
获赞
20
访问
26.3k
这道题和之前进制转换题目有些类似,因为有不区分大小写的要求,所以我们自然想到了通过先无差别都转换成小写存入一个新数组t[]中;然后在同步挑出含有题目所要求的字符串,最后标记,此时虽然遍历对比的是新数组,但由于位数相同,标记的位置同样也作用于原字符串S[],最后通过标记为1的不输出原则,将删除之后的s[]挑选输出;
知识点1:取一行的字符串可以用gets();存入数组后,依旧可以通过for循环,来int 相对应的数组下标;
知识点2:定义字符串数组的内容可以用 char s[3]={'','',''};来实现
错点1:第一个for之后的else很重要,没有相当于覆盖上去了变量,必须用选择语句来进行分支选择;
#include<bits/stdc++.h>
using namespace std;
int main(){
char s[105];
char t[105];
char s1[3]={'g','z','u'};
int f[105]={0};
gets(s);
int ls=strlen(s);
// int lt=str(t);
for(int i=0;i<ls;i++){//全转小写并存入t数组里;
if(s[i]>='A'&&s[i]<='Z'){
t[i]=s[i]+32;
}
else t[i]=s[i];
}
for(int i=0;i<ls;i++){
int flag=1;
for(int j=0;j<3;j++){
if(s1[j]!=t[i+j])
flag=0;
}
if (flag){
f[i]=1;
f[i+1]=1;
f[i+2]=1;
i+=2;
}
}
for(int i=0;i<ls;i++){
if(f[i]!=1) cout<<...
登录后发布评论
暂无评论,来抢沙发