【不会做神马都是浮云啊】只是输入3个整数,由小到大顺序输出(需用指针方法写程序)解决方案

【不会做神马都是浮云啊】只是输入3个整数,由小到大顺序输出(需用指针方法写程序)
[code=C/C++][/code]main()
{int a[3],*p=a,i;
puts("please input three number:");
for(i=0;i<3;i++)
scanf("%d",p++);
puts("the three number are:");
for(i=0,p=a;i<3;i++)
{printf("%d",*p);p++;}
sort(p,3);
}
sort(int x[],int n)
{int i,k;
if(x[0]>x[1]) {k=x[0];x[0]=x[1];x[1]=k;}
if(x[0]>x[2]) {k=x[0];x[0]=x[2];x[2]=k;}
if(x[1]>x[2]) {k=x[1];x[1]=x[2];x[2]=k;}
puts("the new number are:");
for(i=0;i<n;i++)
printf("%d",&x[i]);
}

------解决方案--------------------
唉,贴一下吧:
#include<stdio.h>
void swap(int *p,int *q)
{
int temp;
temp=*p;
*p=*q;
*q=temp;

}


int main(void)
{
int a,b,c;
printf("please input three numbers:\n");
scanf("%d%d%d",&a,&b,&c);
if(a<b)swap(&a,&b);
if(a<c)swap(&a,&c);
if(b<c)swap(&b,&c);
printf("%d , %d , %d\n",a,b,c);
return 0;
}
楼主还是要注意了:sort函数没有声明!!!
注意代码的规范
------解决方案--------------------
C/C++ code

#include <stdio.h>
sort(int x[],int n)
{
    int i,k;
    if(x[0]>x[1]) {k=x[0];x[0]=x[1];x[1]=k;}
    if(x[0]>x[2]) {k=x[0];x[0]=x[2];x[2]=k;}
    if(x[1]>x[2]) {k=x[1];x[1]=x[2];x[2]=k;}
    puts("the new number are:");
    for(i=0;i<n;i++)
        printf("%d",x[i]);//不是打印地址
}
main()
{
    int a[3],*p=a,i;
    puts("please input three number:");
    for(i=0;i<3;i++)
        scanf("%d",p++);             
    puts("the three number are:");
    for(i=0,p=a;i<3;i++)
    {
        printf("%d",*p);
        p++;
    }
    puts("");
    sort(a,3); //p已经后移,不是指向a的开始位置
}

------解决方案--------------------
把 sort放main前边定义嘛,然后输出printf("%d",&x[i]); 时注意,不必取地址符。

就是 printf("%d",x[i]);就好 ,刚学的很容易把输入输出的格式搞错~~ 加油