题目大意:读取字符串,每个测试例子有两行,第一行中有5个子串,中间用 "<",">"分开。第二行有一个串,以“...”结尾。
最后每个实例打印两行,第一行简单的把输入的第一行打印出来,只去掉 <和>符号,第二行按照原来第二行的打印,并把三个点去掉,换成s4,s3,s2,s5。over
此题写个函数读取s1~s5,getss()
#include<stdio.h>
#include<string.h>
char s1[101],s2[101],s3[101],s4[101],s5[101],line2[101];
void setpart(char s[])
{
int i;
for(i=0;;i++)
{
s[i]=getchar();
if(s[i]=='<'||s[i]=='>'||s[i]=='\n')
{
s[i]='\0';
break;
}
}
}
int main()
{
int n;
scanf("%d",&n);
getchar();
while(n--)
{
setpart(s1);
setpart(s2);
setpart(s3);
setpart(s4);
setpart(s5);
gets(line2);
line2[strlen(line2)-3]='\0';
printf("%s%s%s%s%s\n",s1,s2,s3,s4,s5);
printf("%s%s%s%s%s\n",line2,s4,s3,s2,s5);
}
return 0;
}
//这道题没有思路啊,只有强行解,然后做不出来。。
然后看了别人的代码,这个方法比较简便,以前没有看过通过加\0,来分开字符串的例子,学习一下。
这个解法的思路就是,先输入一串字符串在输入缓冲区,然后通过getchar()一个一个读入存进字符数组中,如果读到<或>或\n,就用\0替换。然后连续5次,直到输入缓冲区清空。
超级简便。自己真是弱爆了。