呓语 | 杨英明的个人博客

专注于c++、Python,欢迎交流

By

ytu 1064: 输入三个字符串,按由小到大的顺序输出(水题,字符串处理)

1064: 输入三个字符串,按由小到大的顺序输出

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 471  Solved: 188
[Submit][Status][Web Board]

Description

输入三个字符串,按由小到大的顺序输出。分别使用指针和引用方式实现两个排序函数。在主函数中输入和输出数据。

Input

3行字符串

Output

按照从小到大输出成3行。由指针方式实现。
按照从小到大输出成3行。由引用方式实现。
 

Sample Input

cde
afg
abc

Sample Output

abc
afg
cde
abc
afg
cde
 
  水题,字符串处理
  这道题还是比较有意思的,我自己用写了一个字符串比较模板函数,写了两个排序函数。重又巩固了一下这方面的基础。
  代码
 1 #include <iostream>
 2 #include <string.h>
 3 using namespace std;
 4 template <class T>
 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])
14             return -1;
15         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>b
25         strcpy(t,a),strcpy(a,b),strcpy(b,t);
26     if(mystrcmp(b,c)==1)    //b>c
27         strcpy(t,b),strcpy(b,c),strcpy(c,t);
28     if(mystrcmp(a,b)==1)    //a>b
29         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>b
36         t=a,a=b,b=t;
37     if(mystrcmp(b,c)==1)    //b>c
38         t=b,b=c,c=t;
39     if(mystrcmp(a,b)==1)    //a>b
40         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<<s1<<endl<<s2<<endl<<s3<<endl;
59     sort2(r1,r2,r3);
60     cout<<r1<<endl<<r2<<endl<<r3<<endl;
61     return 0;
62 }
63  
64 /**************************************************************
65     Problem: 1064
66     User: freecode
67     Language: C++
68     Result: Accepted
69     Time:4 ms
70     Memory:1272 kb
71 ****************************************************************/

 

Freecode : www.cnblogs.com/yym2013

##原创声明 **转载请注明:[呓语](http://www.yangyingming.com) » [ytu 1064: 输入三个字符串,按由小到大的顺序输出(水题,字符串处理)](http://www.yangyingming.com/article/78)**