输入三个整数,按由小到大的顺序输出—C语言版

输入三个整数,按由小到大的顺序输出—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;
	}
}

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

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注