首页 > 代码库 > OJ刷题之《输入三个字符串,按由小到大的顺序输出》

OJ刷题之《输入三个字符串,按由小到大的顺序输出》

题目描述

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

输入

3行字符串

输出

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

样例输入

cdeafgabc

样例输出

abcafgcdeabcafgcde

提示

 主函数已给定如下,提交时不需要包含下述主函数


/* C++代码 */

int main()

{

    void sort1(char *,char *,char *);

    void sort2(string &,string &,string &);

    char s1[100],s2[100],s3[100];

    char *p1,*p2,*p3;

    string r1,r2,r3;

    cin>>s1>>s2>>s3;

    r1=string(s1);

    r2=string(s2);

    r3=string(s3);

    p1=s1;

    p2=s2;

    p3=s3;

    sort1(p1,p2,p3);

    cout<<s1<<endl<<s2<<endl<<s3<<endl;

    sort2(r1,r2,r3);

    cout<<r1<<endl<<r2<<endl<<r3<<endl;

    return 0;

}

代码如下:

#include <iostream>#include <cstring>using namespace std;void sort1(char *p1,char *p2,char *p3){    char temp[100];    if (strcmp(p1,p2)>0)    {        strcpy(temp,p1);        strcpy(p1,p2);        strcpy(p2,temp);    }    if (strcmp(p2,p3)>0)    {        strcpy(temp,p2);        strcpy(p2,p3);        strcpy(p3,temp);    }    if (strcmp(p1,p2)>0)    {        strcpy(temp,p1);        strcpy(p1,p2);        strcpy(p2,temp);    }}void sort2(string &r1,string &r2,string &r3){    string temp;    if (r1>r2)    {        temp=r1;        r1=r2;        r2=temp;    }    if (r2>r3)    {        temp=r2;        r2=r3;        r3=temp;    }    if (r1>r2)    {        temp=r1;        r1=r2;        r2=temp;    }}int main(){    void sort1(char *,char *,char *);    void sort2(string &,string &,string &);    char s1[100],s2[100],s3[100];    char *p1,*p2,*p3;    string r1,r2,r3;    cin>>s1>>s2>>s3;    r1=string(s1);    r2=string(s2);    r3=string(s3);    p1=s1;    p2=s2;    p3=s3;    sort1(p1,p2,p3);    cout<<s1<<endl<<s2<<endl<<s3<<endl;    sort2(r1,r2,r3);    cout<<r1<<endl<<r2<<endl<<r3<<endl;    return 0;}


对指针和引用真心觉得傻傻搞不明白。。。各种换着改,总算改出来了,而且判断多个字符串大小比较的时候需要注意顺序。一次wrong answer换来的教训,这次判断的顺序没有和上一篇一样,然后就错误了。。。只好改回来。

 

 

 

 

OJ刷题之《输入三个字符串,按由小到大的顺序输出》