1064: 输入三个字符串,按由小到大的顺序输出
Time Limit: 1 Sec Memory Limit: 128 MB Submit: 471 Solved: 188 [ ][ ][ ]Description
输入三个字符串,按由小到大的顺序输出。分别使用指针和引用方式实现两个排序函数。在主函数中输入和输出数据。
Input
3行字符串
Output
按照从小到大输出成3行。由指针方式实现。
按照从小到大输出成3行。由引用方式实现。
Sample Input
cde
afg
abc
Sample Output
abc
afg
cde
abc
afg
cde
水题,字符串处理。
这道题还是比较有意思的,我自己用写了一个字符串比较模板函数,写了两个排序函数。重又巩固了一下这方面的基础。
代码:
1 #include2 #include 3 using namespace std; 4 template 5 int mystrcmp(const T a,const T b) 6 { 7 int i; 8 for(i=0;a[i]||b[i];i++){ 9 if(a[i]=='\0')10 return -1;11 else if(b[i]=='\0')12 return 1;13 else if(a[i] b[i])16 return 1;17 }18 return 0;19 }20 21 void sort1(char *a,char *b,char *c)22 {23 char t[100];24 if(mystrcmp(a,b)==1) //a>b25 strcpy(t,a),strcpy(a,b),strcpy(b,t);26 if(mystrcmp(b,c)==1) //b>c27 strcpy(t,b),strcpy(b,c),strcpy(c,t);28 if(mystrcmp(a,b)==1) //a>b29 strcpy(t,a),strcpy(a,b),strcpy(b,t);30 }31 32 void sort2(string &a,string &b,string &c)33 {34 string t;35 if(mystrcmp(a,b)==1) //a>b36 t=a,a=b,b=t;37 if(mystrcmp(b,c)==1) //b>c38 t=b,b=c,c=t;39 if(mystrcmp(a,b)==1) //a>b40 t=a,a=b,b=t;41 }42 43 int main()44 {45 void sort1(char *,char *,char *);46 void sort2(string &,string &,string &);47 char s1[100],s2[100],s3[100];48 char *p1,*p2,*p3;49 string r1,r2,r3;50 cin>>s1>>s2>>s3;51 r1=string(s1);52 r2=string(s2);53 r3=string(s3);54 p1=s1;55 p2=s2;56 p3=s3;57 sort1(p1,p2,p3);58 cout< < < < < <
Freecode :