文章

8

粉丝

139

获赞

19

访问

22.1k

头像
通过无差别处理后,筛选再输出
P1027 贵州大学2019机试
发布于2023年3月14日 14:51
阅读数 2.9k

 

这道题和之前进制转换题目有些类似,因为有不区分大小写的要求,所以我们自然想到了通过先无差别都转换成小写存入一个新数组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<<...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发