ProblemA:字符串类(I)TimeLimit:1SecMemoryLimit:128MBSubmit:2775Solved:1361[Submit][Status][WebBoard]Description封装一个字符串类,用于存储字符串和处理的相关功能,支持以下操作:1.STR::STR()构造方法:创建一个空的字符串对象。2.STR::STR(constchar*)构造方法:创建一个字符串对象,串的内容由参数给出。3.STR::length()方法:返回字符串的长度。4.STR::putline()方法:输出串的内容,并换行。-----------------------------------------------------------------------------你设计一个字符串类STR,使得main()函数能够正确运行。函数调用格式见append.cc。append.cc中已给出main()函数。-----------------------------------------------------------------------------InvalidWord(禁用单词)错误:“string”、“vector”等被禁用。Input输入有若干行,每行一个字符串。Output每组测试数据对应输出一行,包含两部分内容,首先是一个整数,表示输入串的长度,然后是输入的字符串,两者用一个空格分开。格式见sample。SampleInputA123456789SampleOutput012HelloWorld!1A9123456789HINTAppendCodeappend.cc,#includeiostream#includestdio.husingnamespacestd;classSTR{private:char*st;intlen;public:STR(){st=newchar[1];*st=0;}STR(constchar*s){inti;len=0;for(i=0;*(s+i)!='\0';i++){len++;}st=newchar[len+1];for(i=0;*(s+i)!='\0';i++){*(st+i)=*(s+i);}*(st+i)=0;}intlength(){inti;len=0;for(i=0;*(st+i)!='\0';i++){len++;}returnlen;}voidputline(){coutstendl;}};intmain(){STRe;STRh(HelloWorld!);chars[100001];coute.length();e.putline();couth.length();h.putline();while(gets(s)!=NULL){STRstr(s);coutstr.length();str.putline();}}ProblemB:字符串类(II)TimeLimit:1SecMemoryLimit:128MBSubmit:3069Solved:1322[Submit][Status][WebBoard]Description封装一个字符串类,用于存储字符串和处理的相关功能,支持以下操作:1.STR::STR()构造方法:创建一个空的字符串对象。2.STR::STR(constchar*)构造方法:创建一个字符串对象,串的内容由参数给出。3.STR::length()方法:返回字符串的长度。4.STR::putline()方法:输出串的内容,并换行。5.运算符“+”和“+=”,表示两个字符串的连接运算,规则为:c=a+b表示串c中的字符是a和b的连接:“a+b”的结果是一个新的字符串,串a和串b的内容不变。a+=b表示串a中的字符是a和b的连接:串b中的内容不变-----------------------------------------------------------------------------你设计一个字符串类STR,使得main()函数能够正确运行。函数调用格式见append.cc。append.cc中已给出main()函数。-----------------------------------------------------------------------------InvalidWord(禁用单词)错误:“string”、“vector”等被禁用。Input输入有若干行,每行一个字符串。Output每组测试数据对应输出一行,包含两部分内容,首先是一个整数,表示输入串的长度,然后是输入的字符串,两者用一个空格分开。格式见sample。SampleInputA123456789SampleOutput12HelloWorld!012HelloWorld!12HelloWorld!12HelloWorld!10A1234567891A912345678910123456789A1AHINTAppendCodeappend.cc,#includebits/stdc++.husingnamespacestd;classSTR{private:char*str;intlen;inti;public:STR(){str=newchar[1];*str=0;}STR(constchar*s){len=0;for(i=0;*(s+i)!='\0';i++){len++;}str=newchar[len+1];for(i=0;*(s+i)!='\0';i++){*(str+i)=*(s+i);}*(str+i)=0;}intlength(){len=0;for(i=0;*(str+i)!='\0';i++){len++;}returnlen;}voidputline(){coutstrendl;}STRoperator+(STR&s11){inti,j,m;for(i=0;str[i];i++);for(j=0;s11.str[j];j++);char*s1=newchar[i+j+3];for(m=0;mi;m++){s1[m]=str[m];}for(m=0;mj;m++){s1[m+i]=s11.str[m];}s1[i+j]=0;returnSTR(s1);}STR&operator+=(STR&s1){intj,k;for(i=0;str[i];i++);for(j=0;s1.str[j];j++);char*s2=newchar[i+j+3];for(k=0;ki;k++){s2[k]=str[k];}for(k=0;kj;k++){s2[k+i]=s1.str[k];}s2[j+i]=0;*this=STR(s2);return*this;}};intmain(){STRe;STRh(HelloWorld!);STRhe=e+h;couthe.length();he.putline();coute.length();e.putline();couth.length();h.putline();e+=h;coute.length();e.putline();couth.length();h.putline();chars1[100001],s2[100001];while(gets(s1)!=NULL&&gets(s2)!=NULL){STRstr1(s1),str2(s2);STRstr=str1+str2;coutstr.length();str.putline();coutstr1.length();str1.putline();coutstr2.length();str2.putline();str2+=str1;coutstr2.length();str2.putline();coutstr1.length();str1.putline();}}ProblemC:数组类(I)TimeLimit:1SecMemoryLimit:128MBSubmit:1582Solved:1088[Submit][Status][WebBoard]Description封装一个整型数组类,用于存储整数和处理的相关功能,支持以下操作:1.Array::Array()无参构造方法:创建一个空数组对象。2.Array::size()方法:返回Array对象中元素个数。3.Array::get(intn)方法:按格式从输入读取n元素。4.下标运算符:返回下标所指的元素。-----------------------------------------------------------------------------你设计一个数组类Array,使得main()函数能够正确运行。函数调用格式见append.cc。append.cc中已给出main()函数Input输入的第一个整数n,表示有n组测试数据。后面的每行以一个整数k开头,表示后面有k个整数。Output把输入的数组,输出出来。每行数据对应一个输出。格式见sample。SampleInput4210201003123SampleOutput10200123HINTAppendCodeappend.cc,#includebits/stdc++.husingnamespacestd;classSTR{private:char*str;intlen;inti;public:STR(){str=newchar[1];*str=0;}STR(constchar*s){len=0;for(i=0;*(s+i)!='\0';i++){len++;}str=newchar[len+1];for(i=0;*(s+i)!='\0';i++){*(str+i)=*(s+i);}*(str+i)=0;}intlength(){len=0;for(i=0;*(str+i)!='\0';i++){len++;}returnlen;}voidputline(){coutstrendl;}STRoperator+(STR&s11){inti,j,m;for(i=0;str[i];i++);for(j=0;s11.str[j];j++);char*s1=newchar[i+j+3];for(m=0;mi;m++){s1[m]=str[m];}for(m=0;mj;m++){s1[m+i]=s11.str[m];}s1[i+j]=0;returnSTR(s1);}STR&operator+=(STR&s1){intj,k;for(i=0;str[i];i++);for(j=0;s1.str[j];j++);char*s2=newchar[i+j+3];for(k=0;ki;k++){s2[k]=str[k];}for(k=0;kj;k++){s2[k+i]=s1.str[k];}s2[j+i]=0;*this=STR(s2);return*this;}};intmain(){STRe;STRh(HelloWorld!);STRhe=e+h;couthe.length();he.putline();coute.length();e.putline();couth.length();h.putline();e+=h;coute.length();e.putline();couth.length();h.putline();chars1[100001],s2[100001];while(gets(s1)!=NULL&&gets(s2)!=NULL){STRstr1(s1),str2(s2);STRstr=str1+str2;coutstr.length();str.putline();cout