两者的比较到底有什么差别?
这个程序有问题,但是不知道哪里错了?#include<stdio.h>
int main()
{void swap(int ,int );
int a[3],i;
int *p,*q,*r;
for(i=0;i<3;i++)
scanf("%d",*(a+i));
p=&a[0];
q=&a[1];
r=&a[2];
if(a[0]>a[1]) swap(p,q);
if(a[0]>a[2]) swap(p,r);
if(a[1]>a[2]) swap(q,r);
for(i=0;i<3;i++)
printf("%d",a[i]);
return 0;
}
void swap(int *p,int *q)
{int t;
t=*p;*p=*q;*q=t;
}
上边的程序是我根据下边的正确的程序改写的,想利用数组,但是上方程序总是出问题?请问大神到底有什么问题?
#include <stdio.h>
int main()
{ void swap(int *p1,int *p2);
int n1,n2,n3;
int *p1,*p2,*p3;
printf("input three integer n1,n2,n3:");
scanf("%d,%d,%d",&n1,&n2,&n3);
p1=&n1;
p2=&n2;
p3=&n3;
if(n1>n2) swap(p1,p2);
if(n1>n3) swap(p1,p3);
if(n2>n3) swap(p2,p3);
printf("Now,the order is:%d,%d,%d\n",n1,n2,n3); /* n1,n2,n3可以改成*p1,*p2,*p3 */
return 0;
}
void swap(int *p1,int *p2)
{int p;
p=*p1; *p1=*p2; *p2=p;
}