输入三个字符串,按由小到大的顺序输出—C语言

时间: 1ms        内存:128M

描述:

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

输入:

3行字符串

输出:

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

示例输入:

cde
afg
abc

示例输出:

abc
afg
cde

提示:

参考答案(内存最优[1092]):


#include<stdio.h>
#include<string.h>
 
int main()
{
    void sort1(char *,char *,char *);
    char s1[100],s2[100],s3[100];
    char *p1,*p2,*p3;
    gets(s1);
	gets(s2);
	gets(s3);
    p1=s1;
    p2=s2;
    p3=s3;
    sort1(p1,p2,p3);
	printf("%s\n",s1);
	printf("%s\n",s2);
	printf("%s\n",s3);
    return 0;
}void sort1(char * p1,char * p2,char * p3) //字符指针做函数参数
{
	char t[100];
	if(strcmp(p2,p1)<0)  //第二个字符串小于第一个字符串,则交换这两个字符串 
	{
	   //交换p2和p1所指向的串
		strcpy(t,p1);
		strcpy(p1,p2);
		strcpy(p2,t);
	}
    if(strcmp(p3,p2)<0) //第三个字符串小于现在的第二个字符串,则交换这两个字符串
	{
		//交换p3和p2所指向的串
		strcpy(t,p2);
		strcpy(p2,p3);
		strcpy(p3,t);	
	}
    if(strcmp(p2,p1)<0) //现在的第二个字符串小于现在的第一个字符串,则交换这两个字符串
	{
		//交换p2和p1所指向的串
		strcpy(t,p1);
		strcpy(p1,p2);
		strcpy(p2,t);
	}
}

参考答案(时间最优[0]):


#include<stdio.h>
#include<string.h>
 
int main()
{
    void sort1(char *,char *,char *);
    char s1[100],s2[100],s3[100];
    char *p1,*p2,*p3;
    gets(s1);
	gets(s2);
	gets(s3);
    p1=s1;
    p2=s2;
    p3=s3;
    sort1(p1,p2,p3);
	printf("%s\n",s1);
	printf("%s\n",s2);
	printf("%s\n",s3);
    return 0;
}void sort1(char * p1,char * p2,char * p3) //字符指针做函数参数
{
	char t[100];
	if(strcmp(p2,p1)<0)  //第二个字符串小于第一个字符串,则交换这两个字符串 
	{
	   //交换p2和p1所指向的串
		strcpy(t,p1);
		strcpy(p1,p2);
		strcpy(p2,t);
	}
    if(strcmp(p3,p2)<0) //第三个字符串小于现在的第二个字符串,则交换这两个字符串
	{
		//交换p3和p2所指向的串
		strcpy(t,p2);
		strcpy(p2,p3);
		strcpy(p3,t);	
	}
    if(strcmp(p2,p1)<0) //现在的第二个字符串小于现在的第一个字符串,则交换这两个字符串
	{
		//交换p2和p1所指向的串
		strcpy(t,p1);
		strcpy(p1,p2);
		strcpy(p2,t);
	}
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。