C语言编程实现:利用指针,输入3个整数,按由小到大的顺序输出。

下面是我的代码和结果 请问这是为什么怎么解决?求大神解答
2024-10-28 00:21:10
推荐回答(3个)
回答(1):

写法一、(交换指针指向的地址中存放的数据):

#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);

}

回答(2):

第一,三个输入的数字用空格或者回车分隔

#include 
int paixu(int a[])
{
int i,j,m;
for(i=0;i<3;i++)
{
for(j=i+1;j<3;j++)
{
if(a[j] {
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;
}

回答(3):

int函数得有返回值啊,兄嘚