写法一、(交换指针指向的地址中存放的数据):
#include<iostream>
using namespace std;
int main()
{
int a,b,c;
int*p1,*p2,*p3;
int temp;
cout<<"输入3个整数:"<<endl;
cin>>a>>b>>c;
p1=&a;
p2=&b;
p3=&c;
if(*p1>*p2)
{
temp=*p1;
*p1=*p2;
*p2=temp;
}
if(*p1>*p3)
{
temp=*p1;
*p1=*p3;
*p3=temp;
}
if(*p2>*p3)
{
temp=*p2;
*p2=*p3;
*p3=temp;
}
cout<<'\n'
<<"按由小到大顺序输出:"<<'\n'
<<a<<'\n'
<<b<<'\n'
<<c<<'\n';
return 0;
}
写法二、(交换指针指向的地址):
#include<iostream>
using namespace std;
int main()
{
int a,b,c;
int*p1,*p2,*p3;
int*temp;
cout<<"输入3个整数:"<<endl;
cin>>a>>b>>c;
p1=&a;
p2=&b;
p3=&c;
if(*p1>*p2)
{
temp=p1;
p1=p2;
p2=temp;
}
if(*p1>*p3)
{
temp=p1;
p1=p3;
p3=temp;
}
if(*p2>*p3)
{
temp=p2;
p2=p3;
p3=temp;
}
cout<<'\n'
<<"按由小到大顺序输出:"<<'\n'
<<*p1<<'\n'
<<*p2<<'\n'
<<*p3<<'\n';
return 0;
}
写法三、用函数指针
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b,c,*p1,*p2,*p3;
printf("请输入三个整数:");
scanf("%d%d%d",&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
exchange(p1,p2,p3);
printf("%d%d%d",a,b,c);
return 0;
}
void swap(int*x,int*y)
{
int temp;
if(*x>*y)
{
temp=*x;
*x=*y;
*y=temp;
}
}
void exchange(p1,p2,p3)
{
swap(p1,p2);
swap(p1,p3);
swap(p2,p3);
}
第一,三个输入的数字用空格或者回车分隔
#include <stdio.h>
int paixu(int a[])
{
int i,j,m;
for(i=0;i<3;i++)
{
for(j=i+1;j<3;j++)
{
if(a[j]<a[i])
{
m=a[i];
a[i]=a[j];
a[j]=m;
}
}
}
}
int main(void)
{
int i,a[3],n;
printf("xxxxxxx");
for(i=0;i<3;i++)
scanf("%d",&a[i]);
paixu(a);
for(i=0;i<3;i++)
printf("%d ",a[i]);
return 0;
}
要求用指针的方法 你这不是吧
int paixu(int *a)
{
int i,j,m;
for(i=0;i<3;i++)
{
for(j=i+1;j<3;j++)
{
if(*(a+j)<*(a+i))
{
m=*(a+i);
*(a+i)=*(a+j);
*(a+j)=m;
}
}
}
}
在函数后加了return 0;还是停止工作