题目大意:对输入的每一对字符串进行处理:
输出有两行(1)第一行不要把"<"">"的符号输出 (2)第二行用(1)上面的<>隔开的相应字符串拼成的结果代替"..."输出
思路:模拟的有点恶心阿,关键是对<>分开的字符串进行处理,我的思路是先记录好下标,然后根据下标把字符串取出来,然后最后整体输出结果即可
Ac Program:
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; char l1[105]; char l2[105]; char c1[105],c11[105]; char c2[105]; int c1Num,c2Num,c11Num; void gn(char ch[],int s,int t) { for(int i=s+1;i<t;i++) { c11[c11Num++]=ch[i]; } } void fn() { memset(c1,0,sizeof(c1)); memset(c2,0,sizeof(c2)); memset(c11,0,sizeof(c11)); int len1=strlen(l1); int len2=strlen(l2); c1Num=0,c2Num=0,c11Num=0; //处理第一行 for(int i=0;i<len1;i++) { if(l1[i]!='<' && l1[i]!='>') c1[c1Num++]=l1[i]; } int t1,t2,t3,t4,tmp;//记录位置 bool f1=true,f2=true; for(int i=0;i<len1;i++) { if(f1&&l1[i]=='<') { t1=i; f1=false; } else if(!f1&&l1[i]=='<') { t3=i; } else if(f2&&l1[i]=='>') { t2=i; f2=false; } else if(!f2&&l1[i]=='>') { t4=i; } } gn(l1,t3,t4);//找出相应符号段的字母,保存在c11里面 gn(l1,t2,t3); gn(l1,t1,t2); gn(l1,t4,len1); //处理第二行 for(int i=0;i<len2;i++) { if(l2[i]=='.')break; c2[c2Num++]=l2[i]; } } void output() { printf("%s\n",c1); printf("%s",c2); printf("%s\n",c11); } int main() { //freopen("f.out1.txt","w",stdout); int nPairs; scanf("%d",&nPairs); getchar();//吃掉回车要注意位置,最好找word找思路 while(nPairs--) { gets(l1); gets(l2); fn(); output(); } //system("pause"); return 0;}