OJ刷題之《輸入三個字串,按由小到大的順序輸出》

不被看好的青春叫成長發表於2015-01-08

題目描述

輸入三個字串,按由小到大的順序輸出。分別使用指標和引用方式實現兩個排序函式。在主函式中輸入和輸出資料。

輸入

3行字串

輸出

按照從小到大輸出成3行。由指標方式實現。
按照從小到大輸出成3行。由引用方式實現。

樣例輸入

cde
afg
abc

樣例輸出

abc
afg
cde
abc
afg
cde

提示

 主函式已給定如下,提交時不需要包含下述主函式


/* 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換來的教訓,這次判斷的順序沒有和上一篇一樣,然後就錯誤了。。。只好改回來。

 

 

 

 

相關文章