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

题目描述

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

输入

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换来的教训,这次判断的顺序没有和上一篇一样,然后就错误了。。。只好改回来。

时间: 2024-07-29 16:09:17

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

OJ刷题之《输出不同进制的数》

题目描述 将十进制数1234按十进制输出 将八进制数1234按八进制输出 将十六进制数1234按十六进制输出 输入 无 输出 将十进制数1234按十进制输出 将八进制数1234按八进制输出 将十六进制数1234按十六进制输出 样例输入 无 样例输出 1234=1234D 01234=1234O 0x1234=1234H 提示 使用输出格式控制符 dec     oct     hex 输出第二行 01234=1234O    1234前是数字0,1234后是大写字母O 代码如下: #includ

OJ刷题之《输出A字打头的字符串》

Description 输出n个字符串,把其中以字母A打头的字符串输出. Input 第一行 n 第二行到第n+1行,每行一个字符串 Output A打头的字符串 Sample Input 3 Ada Bob Alice SampleOutput Ada Alice 代码如下: #include <iostream> #include <cstring> using namespace std; int main() { int i,n; string str[10]; cin&g

OJ刷题常用的4中基本输入形式

初到OJ网站上刷题,输入形式就是我们要考虑的问题.通过自己的一些摸索,OJ题目的输入形式大体上无外乎4种.下面就详细介绍: 1 输入数据文件中,第一行数据标明了测试数据的数目: 2 输入数据文件中,有标明输入结束的数据 3 输入数据文件中,测试数据一直到文件尾 4 没有输入数据 第1中情形的处理方法: //int i,kase scanf("%d",&kase); for(i=1;i<=kase;i++) { //处理第i中情况 } ...................

OJ刷题之《成绩输出》

Description 输入n(<=10)个学生的姓名.学号和成绩,将其中不及格者的姓名.学号和成绩输出. Input 第一行 n 第二行到第n+1行,每行一个学生的姓名.学号和成绩. Output 不及格者的姓名.学号和成绩. Sample Input 3 zhang 1001 100 li 1002 59 sun 1003 0 SampleOutput li 1002  59 sun 1003  0 代码如下: #include <iostream> using namespace

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

题目描述 输入三个整数,按由小到大的顺序输出.分别使用指针和引用方式实现两个排序函数.在主函数中输入和输出数据. 输入 三个整数 输出 由小到大输出成一行,每个数字后面跟一个空格.由指针方式实现. 由小到大输出成一行,每个数字后面跟一个空格.由引用方式实现. 样例输入 2 3 1 样例输出 1 2 3 1 2 3 提示 主函数已给定如下,提交时不需要包含下述主函数 /* C++代码 */ int main() { void sort1(int *,int *,int *); void sort2

第十五周oj刷题——Problem E: C++习题 对象数组求最大值

Description 建立一个对象数组,内放n(<10)个学生的数据(学号.成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出n个学生中成绩最高者,并输出其学号. Input n和n个学生的学号.成绩 Output 成绩最高者的学号和成绩 Sample Input 5 101 78.5 102 85.5 103 98.5 104 100.0 105 95.5 Sample Output 104 100.00 /* All rights reserved. * 文件名称:

基于C#解决OJ刷题之输入输出问题的总结(AKOJ1064-1071A+B问题汇总)

声明:题目部分为akoj题目,代码为本人AC代码. 因为本人学校的oj支持各种环境,非常正常的当中就包括了C#.然暑假在家较为空暇,本着学习C#和复习算法的态度和目的,就又開始折腾起oj了. 题目部分是最基础的A+B系列,来看看C#的输入输出是怎么一回事吧 题目地址:http://183.167.205.82:8081/JudgeOnline/problemlist?volume=1 本文由csdn-jtahstu原创.转载请注明出处,欢迎志同道合的朋友一起交流学习.本人QQ:137375842

第十五周oj刷题——Problem I: C++ 习题 比较大小-类模板

Description 声明一个类模板,利用它分别实现两个整数.浮点数和字符的比较,求出大数和小数.说明:在类模板外定义各成员函数. Input 输入两个整数.两个浮点数和两个字符 Output 从大到小输出两个整数.两个浮点数和两个字符 Sample Input 3 7 45.78 93.6 a A Sample Output 7 3 93.60 45.78 a A   /* All rights reserved. * 文件名称:test.cpp * 作者:陈丹妮 * 完成日期:2015年

oj刷题——第十五周C++习题 对象转换

Description 定义一个Teacher(教师)类(教师号,姓名,性别,薪金)和一个Student(学生)类(学号,姓名,性别,成绩),二者有一部分数据成员是相同的,num(号码),name(姓名),sex(性别).编写程序,将一个Student对象(学生)转换为Teacher(教师)类,只将以上3个相同的数据成员移植过去.可以设想为: 一位学生大学毕业了,留校担任教师,他原有的部分数据对现在的教师身份来说仍然是有用的,应当保留并成为其教师数据的一部分. Input 一个教师的信息和一个学

第十五周oj刷题—— Problem C: 矩形类中运算符重载【C++】

Description 定义一个矩形类,数据成员包括左下角和右上角坐标,定义的成员函数包括必要的构造函数.输入坐标的函数,实现矩形加法,以及计算并输出矩形面积的函数.要求使用提示中给出的测试函数并不得改动. 两个矩形相加的规则是:决定矩形的对应坐标分别相加,如 左下角(1,2),右上角(3,4)的矩形,与 左下角(2,3),右上角(4,5)的矩形相加,得到的矩形是 左下角(3,5),右上角(7,9)的矩形. 这个规则没有几何意义,就这么定义好了. 输出面积的功能通过重载"<<&quo