题目:
6-3 编写函数实现三个整数排升序
分数 10
全屏浏览题目
切换布局
作者 赵静静
单位 浙江工贸职业技术学院
编写函数实现三个整数排升序,需要按地址传递参数.
函数接口定义:
在这里描述函数接口。例如: void sort(int *a, int *b, int *c);
在这里解释接口参数。例如:其中 a、b
和 c
都是用户传入的参数,类型均为指针类型,其三个变量指向的数是随机的,函数需要将数据升序排序,排序后a
指向的值最小,c
指向的值最大。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如: #include<stdio.h> void sort(int *a, int *b, int *c); int main() { int a,b,c; scanf("%d %d %d",&a,&b,&c); sort(&a,&b,&c); printf("%d %d %d\n",a,b,c); return 0; } /* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:
21 2 6
输出样例:
在这里给出相应的输出。例如:
2 6 21
答案
void sort(int *a, int *b, int *c)
{
int max1(int *p,int *q,int *r);//三个数中的最大数
int max(int x,int y);//两个数中最大的数
int min(int x,int y);//两个数中最小的数
int t=0,k=0;
t=*c;//存放c,方便之后替换
*c=max1(a,b,c);
if(t==*c)//如果c就是最大的,只需把a,b比较久好了
{
k=*b;
*b=max(*a,*b);
*a=min(*a,k);
}
else//如果不是有两种情况及a大或b大,将其替换成原c,再按照上面的思路写代码即可。
{
if(*a>*b)
{
*a=t;
k=*b;
*b=max(*a,*b);
*a=min(*a,k);
}
else
{
*b=t;
k=*a;
*b=max(*a,*b);
*a=min(*a,k);
}
}
}
int max(int x,int y)
{
return (x>y)?x:y;
}
int max1(int *p,int *q,int *r)
{
int max(int x,int y);
if(*p>*q)
{
if(*q>*r)return *p;
else return max(*p,*r);
}
else
{
if(*p>*r)return *q;
else return max(*q,*r);
}
}
int min(int x,int y)
{
return (x<y)?x:y;
}