题目
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);//将最大数赋值给*c
if(t==*c)//说明*a,*b均小于*c,可以直接比较*a,与*b并赋值
{
k=*b;
*b=max(*a,*b);
*a=min(*a,k);
}
else//原来的*c不是最大值,这需要讨论*a,*b谁是最大值,按照上面的思路赋值
{
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;
}