ytu 1064: 输入三个字符串,按由小到大的顺序输出(水题,字符串处理)
1064: 输入三个字符串,按由小到大的顺序输出
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 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