本文主要是介绍UVA10361 字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:点击打开链接
题目大意:切割字符串,进行重组
题目总结:1.又忘记了,scanf(“%s”)遇见空格,tab \n都会结束
2.gets()直至接受到换行符或EOF时停止。
3.getline:在string.h中
返回值
与参数is是一样的
功能
将输入流is中读到的 字符存入str中,直到遇到终结符delim才结束。对于第一个函数delim是可以由用户自己定义的终结符;对于第二个函数delim默认为 '\n'(换 行 符)。数在输入流is中遇到文件结束符(EOF)或者在读入 字符的过程中遇到错误都会结束。
在遇到终结符delim后,delim会被丢弃,不存入str中。在下次读入操作时,将在delim的下个 字符开始读入。
贴下自己的代码:
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
char data1[150],data2[150],si[5][105];
void copy(int s,int e,int num)//分割下来的字符串重新存储
{int j=0;for(int i=s;i<=e;i++)si[num][j++]=data1[i];
}
void depart(int len) //分割字符串
{int i,num=0,flag=0;for(i=0;i<len;i++){if(data1[i]=='<')break;}if(i!=num){copy(0,i-1,flag);}flag++;num=i;//2for(i=num;i<len;i++){if(data1[i]=='>')break;}if(i!=num+1){copy(num+1,i-1,flag);}flag++;num=i;//3for(i=num;i<len;i++){if(data1[i]=='<')break;}if(i!=num+1){copy(num+1,i-1,flag);}flag++;num=i;//4for(i=num;i<len;i++){if(data1[i]=='>')break;}if(i!=num+1){copy(num+1,i-1,flag);}flag++;if(i!=len-1) copy(i+1,len-1,flag);}int main()
{int t,len1,len2;scanf("%d",&t);getchar();while(t--){memset(si,'\0',sizeof(si));memset(data1,'\0',sizeof(data1));memset(data2,'\0',sizeof(data2));gets(data1),gets(data2);len1=strlen(data1);len2=strlen(data2);depart(len1);for(int i=0;i<5;i++){if(strlen(si[i]))printf("%s",si[i]);}printf("\n");if(len2!=3){for(int j=0;j<len2-3;j++)printf("%c",data2[j]);}if(strlen(si[3]))printf("%s",si[3]);if(strlen(si[2]))printf("%s",si[2]);if(strlen(si[1]))printf("%s",si[1]);if(strlen(si[4]))printf("%s",si[4]);printf("\n");}return 0;
}
贴上简单的代码:学习下
/*** Author: Gneveek* Data: 2011-10-3* Descripition: UVa 10361 - Automatic Poetry*/
#include <stdio.h>
#include <string.h>
#define MAXN 110
void getss(char s[]);
int main()
{/*freopen("C:\\in.txt","r",stdin);*/int n;char s1[MAXN],s2[MAXN],s3[MAXN],s4[MAXN],s5[MAXN],c,line[MAXN];scanf("%d",&n);c = getchar();while(n--){ getss(s1);getss(s2);getss(s3);getss(s4);getss(s5);gets(line);line[strlen(line) - 3] = '\0';printf("%s%s%s%s%s\n",s1,s2,s3,s4,s5);printf("%s%s%s%s%s\n",line,s4,s3,s2,s5);}return 0;
}void getss(char s[])
{int i;for(i=0; i<MAXN; i++){if((s[i] = getchar()) == '<' || s[i] == '>' || s[i] == '\n'){s[i] = '\0';break;}}
}
这篇关于UVA10361 字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!