输入三个整数,按由小到大的顺序输出—C语言版
时间: 1ms 内存:128M
描述:
输入三个整数,按由小到大的顺序输出。分别使用指针和引用方式实现两个排序函数。在主函数中输入和输出数据。
输入:
三个整数
输出:
由小到大输出成一行,每个数字后面跟一个空格。由指针方式实现。
示例输入:
2 3 1
示例输出:
1 2 3
提示:
参考答案(内存最优[1092]):
#include<stdio.h>
int main()
{
void sort1(int *,int *,int *);
int n1,n2,n3;
int *p1,*p2,*p3;
scanf("%d%d%d",&n1,&n2,&n3);
p1=&n1;
p2=&n2;
p3=&n3;
sort1(p1,p2,p3);
printf("%d %d %d\n",n1,n2,n3);
return 0;
}
void sort1(int *p1,int *p2,int *p3) //指针做函数参数
{
int t;
if(*p2<*p1) //第二个数小于第一个数,则交换这两个数
{
//交换*p2和*p1
t=*p1;
*p1=*p2;
*p2=t;
}
if(*p3<*p2) //第三个数小于现在的第二个数,则交换这两个数
{
//交换*p3和*p2
t=*p2;
*p2=*p3;
*p3=t;
}
if(*p2<*p1) //现在的第二个数小于现在的第一个数,则交换这两个数
{
//交换*p2和*p1
t=*p1;
*p1=*p2;
*p2=t;
}
}
参考答案(时间最优[0]):
#include<stdio.h>
int main()
{
void sort1(int *,int *,int *);
int n1,n2,n3;
int *p1,*p2,*p3;
scanf("%d%d%d",&n1,&n2,&n3);
p1=&n1;
p2=&n2;
p3=&n3;
sort1(p1,p2,p3);
printf("%d %d %d\n",n1,n2,n3);
return 0;
}
void sort1(int *p1,int *p2,int *p3) //指针做函数参数
{
int t;
if(*p2<*p1) //第二个数小于第一个数,则交换这两个数
{
//交换*p2和*p1
t=*p1;
*p1=*p2;
*p2=t;
}
if(*p3<*p2) //第三个数小于现在的第二个数,则交换这两个数
{
//交换*p3和*p2
t=*p2;
*p2=*p3;
*p3=t;
}
if(*p2<*p1) //现在的第二个数小于现在的第一个数,则交换这两个数
{
//交换*p2和*p1
t=*p1;
*p1=*p2;
*p2=t;
}
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。