lrc是英文lyric(歌词)的缩写,被用做歌词文件的扩展名。以lrc为扩展名的歌词文件可以在各类数码播放器中同步显示。LRC 歌词是一种包含着“*:*”形式的“标签(tag)”的、基于纯文本的歌词专用格式。这种歌词文件既可以用来实现卡拉OK功能(需要专门程序),又能以普通的文字处理软件查看、编辑。当然,实际操作时通常是用专门的LRC歌词编辑软件进行高效编辑的。
lrc中的时间标签:
形式为"[mm:ss]"或"[mm:ss.ff]"(分钟数:秒数)。数字须为非负整数, 比如"[12:34.5]""[12:34]"。 它可以位于某行歌词中的任意位置。一行歌词可以包含多个时间标签(比如歌词中的迭句部分)。根据这些时间标签,用户端程序会按顺序依次高亮显示歌词,从而实现卡拉OK功能。另外,标签无须排序。
现在给你lrc的时间标签请按时间排序输出歌词(歌词可以有空格但不会有[]);
Input只有一个案例,案例为一个lrc标签文件,用EOF结束,一行一个时间标签,歌词长度不超过100
Output按时间排序输出歌词,歌词的格式为"[hh:mm.ss]"+歌词
Sample Input[00:00.00][00:45]hello
[00:10]world
Sample Output[00:00.00]hello
[00:10.00]world
[00:45.00]hello
解析:利用gets()一直输入,利用 ']' 来确定一个时间段的结束,然后存进结构体,最后while外面排序一下,输出即可。
#includeusing namespace std; struct su{ int h; //记录分 int f; //记录秒 int s; //记录毫秒 char ci[105]; //记录歌词 bool operator<(const su&x)const{ return (h*3600+f*60+s)<(x.h*3600+x.f*60+x.s); } }arr[10005]; char k[1005],h[105]; //k[]来记录输入的全部,h[]记录歌词 int main() { int len,biaoji,m,i,cnt,shu,l=0; while(gets(k)!=NULL){ len=strlen(k); memset(h,' ',sizeof(h)); //清空,不然会残留导致WA m=0; for(i=len-1;i>=0;i--){ //先反向求出歌词 if(k[i]==']'){ biaoji=i; //到了歌词左边第一个']',退出 break; } h[m++]=k[i]; //先反向存下来,后面直接反转就是歌词 } reverse(h,h+m); //反转,记录歌词 shu=0; //记录数值 for(i=0;i<=biaoji;i++){ //biaoji为最末尾的']',终点 if(k[i]>='0'&&k[i]<='9') shu=shu*10+k[i]-'0'; if(k[i]==':') arr[l].h=shu,shu=0,cnt=0; //遇见':',存入结构体的分 if(k[i]=='.') cnt=1,arr[l].f=shu,shu=0; //cnt改为1,表示出现'.',存入秒 if(k[i]==']'&&cnt==1) arr[l].s=shu,shu=0,strcpy(arr[l].ci,h),l++;//如果出现'.',记录毫秒 else if(k[i]==']'&&cnt==0) arr[l].f=shu,arr[l].s=0,strcpy(arr[l].ci,h),l++;//如果没有出现'.',那么毫秒就是0 } } sort(arr,arr+l); for(i=0;i



