C语言指针求解
#include<stdio.h>intmain(){voidswap(int*p1,int*p2);inta,b,c,*p1,*p2,*p3;printf("pleas...
#include <stdio.h>
int main ()
{void swap(int *p1,int *p2);
int a,b,c,*p1,*p2,*p3;
printf("please enter three number:");
scanf("%d%d%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
swap(p1,p2);
swap(p2,p3);
swap(p1,p3);
printf("%d %d %d",*p1,*p2,*p3);
return 0;}
void swap(int *p1,int *p2)
{int *t;
if(*p1<*p2)
{t=p1;p1=p2;p2=t;}}
为什么不能按从大到小输出? 展开
int main ()
{void swap(int *p1,int *p2);
int a,b,c,*p1,*p2,*p3;
printf("please enter three number:");
scanf("%d%d%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
swap(p1,p2);
swap(p2,p3);
swap(p1,p3);
printf("%d %d %d",*p1,*p2,*p3);
return 0;}
void swap(int *p1,int *p2)
{int *t;
if(*p1<*p2)
{t=p1;p1=p2;p2=t;}}
为什么不能按从大到小输出? 展开
2个回答
展开全部
#include <stdio.h>
void swap(int *p1,int *p2);
int main ()
{
int a,b,c,*p1,*p2,*p3;
printf("please enter three number:");
scanf("%d%d%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
swap(p1,p2);
swap(p2,p3);
swap(p1,p2); //here
printf("%d %d %d",*p1,*p2,*p3);
return 0;
}
void swap(int *p1,int *p2) //这个函数更改
{
int t;
if(*p1<*p2)
{
t=*p1;*p1=*p2;*p2=t;
}
}
程序改的我好蛋疼啊,应该说你这算法本身是不对的,没人这样排序的,我想你重点应该放在swap函数中,学习传值和传地址值的区别,程序现在我大概试了下,多数情况还是可以排的,不保证全对,因为你的算法有问题。
void swap(int *p1,int *p2);
int main ()
{
int a,b,c,*p1,*p2,*p3;
printf("please enter three number:");
scanf("%d%d%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
swap(p1,p2);
swap(p2,p3);
swap(p1,p2); //here
printf("%d %d %d",*p1,*p2,*p3);
return 0;
}
void swap(int *p1,int *p2) //这个函数更改
{
int t;
if(*p1<*p2)
{
t=*p1;*p1=*p2;*p2=t;
}
}
程序改的我好蛋疼啊,应该说你这算法本身是不对的,没人这样排序的,我想你重点应该放在swap函数中,学习传值和传地址值的区别,程序现在我大概试了下,多数情况还是可以排的,不保证全对,因为你的算法有问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询