输入三个字符串,按由小到大的顺序输出—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);
}
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。