利用C语言指针比较三个数并且从小到大输出

求改错。#include<stdio.h>
void _d(int x,int y,int z)
{
int t;
if(x>y)
{
t=x;
x=y;
y=t;
}
if(x>z)
{
t=x;
x=z;
z=t;
}
if(y>z)
{
t=y;
y=z;
z=t;
}
void main()
{
int a=3,b=4,c=5,d;
int *p1,*p2,*p3;
*p1=a,*p2=b,*p3=c;
d(p1,p2,p3);
printf("%d<%d<%d\n",p1,p2,p3);
}
}

#include<stdio.h>

int main() 

{

int a,b,c,*p1,*p2,*p3,*t;

p1=&a;

p2=&b;

p3=&c;

printf("请输入三个整数:");

scanf("%d%d%d",p1,p2,p3);

if(*p1>*p2){t=p1;p1=p2;p2=t;}

if(*p1>*p3){t=p1;p1=p3;p3=t;}

if(*p2>*p3){t=p2;p2=p3;p3=t;}

printf("%d %d %d\n",*p1,*p2,*p3);

getch();

return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-05
main()//按照你的源程序修改的,用数组+循环效果更好
{
int a=3,b=4,c=5;

int *p1,*p2,*p3;//指针的声明
p1=&a;
p2=&b;
p3=&c;//将三个数值的地址赋值给三个指针
temp(p1,p2,p3);//比较大小,将地址传递给函数
printf("%d<%d<%d\n",*p1,*p2,*p3);
}
int temp(int *x,int *y,int *z)//形参接收地址,以下是比较过程,因为参数是指针,所以底下的*X *Y *Z,就是取出指针所指向地址对应的值
{
int t;
if(*x>*y)
{
t=*x;
*x=*y;
*y=t;
}
if(*x>*z)
{
t=*x;
*x=*z;
*z=t;
}
if(*y>*z)
{
t=*y;
*y=*z;
*z=t;
}
第2个回答  2012-03-05
*p1=a,*p2=b,*p3=c;
这种赋值方法是错误的,改为p1=&a;p2=&b,p3=&c就可以了
第3个回答  2012-03-05
#include <stdio.h>
void _d(int x,int y,int z)
{
int t;
if(x>y)
{
t=x;
x=y;
y=t;
}
if(x>z)
{
t=x;
x=z;
z=t;
}
if(y>z)
{
t=y;
y=z;
z=t;
}
}
void main()
{
int a=3,b=4,c=5,d;
int *p1,*p2,*p3;
p1=&a,p2=&b,p3=&c;
_d(*p1,*p2,*p3);
printf("%d<%d<%d\n",*p1,*p2,*p3);
}本回答被网友采纳
第4个回答  推荐于2018-03-01
#include <stdio.h>
#include <stdlib.h>//标准库头文件

void _d(int *x,int *y,int *z)
{
int t;
if(*x>*y)
{
t=*x;
*x=*y;
*y=t;
}
if(*x>*z)
{
t=*x;
*x=*z;
*z=t;
}
if(*y>*z)
{
t=*y;
*y=*z;
*z=t;
}
}
void main()
{
int a=3,b=4,c=5,d;
int *p1,*p2,*p3;
//*p1=a,*p2=b,*p3=c;
p1 = &a;
p2 = &b;
p3 = &c;
_d(p1,p2,p3);
printf("%d<%d<%d\n",*p1,*p2,*p3);
}本回答被网友采纳
相似回答