输入3个数a,b,c,按大小顺序输出。 利用指针方法。

#include"stdio.h"intswap(intx,inty);main(){inta,b,c;int*p1,*p2,*p3;printf("请输入3个数,本程序... #include "stdio.h"
int swap(int x,int y);
main()
{
int a,b,c;
int *p1,*p2,*p3;
printf("请输入3个数,本程序将从小到大排列");
scanf("%d%d%d",&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
if(a>b)
swap(p1,p2);
if(a>c)
swap(p1,p3);
if(b>c)
swap(p2,p3);
printf("%d%d%d",a,b,c);
return 0;
}
int swap(int x,int y)
{
int *x,*y;
int p;
p=*x;
*x=*y;
*y=p;
}
请问哈我这个哪里错了啊~~谢谢!!!
展开
 我来答
问明6E
高粉答主

2019-05-16 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.9万
展开全部

方法一、(利用指针法)

#include<stdio.h>

void sort(int*x,int*y,int*z);

int main()

{

int a,b,c;

scanf("%d%d%d",&a,&b,&c);

sort(&a,&b,&c);

printf("%d%d%d\n",a,b,c);

return 0;

}

void sort(int*x,int*y,int*z)

{

int*n[3],i,j,t;

n[0]=x,n[1]=y,n[2]=z;

for(i=0;i<3;i++)

for(j=i+1;j<3;*n<i><*n[j]?t=*n<i>,*n<i>=*n[j],*n[j++]=t:j++);

}

方法二、(利用函数的模块化设计)

#include<stdio.h>

void input(int n[],int c);//定义输入函数

void print(int n[],int c);//定义输出函数

void btos(int v[],int c);//定义排序函数

int main()

{

int num[3];

input(num,3);

btos(num,3);

print(num,3);

return 0;

}

//输入函数

void input(int n[],int c)

{

int i;

for(i=0;i<c;i++)

scanf("%d",&n<i>);

}

//输出函数

void print(int n[],int c)

{

int i;

for(i=0;i<c;i++)

printf("%d",n<i>);

printf("\n");

}

//排序函数(起泡法

void btos(int v[],int c)

{

int i,j,temp;

for(i=0;i<c;i++)

for(j=i+1;j<c;j++)

if(v<i><v[j]){

temp=v<i>;

v<i>=v[j];

v[j]=temp;

}

}

方法三、(利用起泡法)

#include<stdio.h>

int main()

{

int v[4],i,j,temp;

for(i=0;i<3;i++)//输入3个数

scanf("%d",&v<i>);

//起泡法排序

for(i=0;i<3;i++)

for(j=0;j<3;j++)

if(v[j]<v[j+1]){

temp=v[j];

v[j]=v[j+1];

v[j+1]=temp;

}

for(i=0;i<3;i++)//输出排序顺序

printf("%d",v<i>);

printf("\n");

return 0;

}

方法四、(利用比较法选择结构)

#include<stdio.h>

int main()

{

int a,b,c;

scanf("%d%d%d",&a,&b,&c);//输入3个数

//3个数进行排序并输出

if(a>b)

if(a>c)

if(b>c)

printf("%d%d%d\n",a,b,c);

else

printf("%d%d%d\n",a,c,b);

else

printf("%d%d%d\n",c,a,b);

else

if(b>c)

if(a>c)

printf("%d%d%d\n",b,a,c);

else

printf("%d%d%d\n",b,c,a);

else

printf("%d%d%d\n",c,b,a);

return 0;

}

匿名用户
2012-05-03
展开全部
swap() 函数的形参列表参数类型写错,还有返回类型也错。
应改为:
void swap(int * x, int * y)
{
int p;
p = *x;
*x = *y;
*y = p;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
赵钱孙利
推荐于2017-11-25 · TA获得超过443个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:136万
展开全部
首先,swap()函数里得形参应为指向整型指针而且没有返回值,即定义为void swap(int *,int *)
其次,swap()函数中,两指针交换地址是借助int p;p=*x; *x=*y; *y=p;
三是,scanf()里三个参数输入时,最好有空格,以方便输入;
完整代码如下;
#include "stdio.h"
void swap(int *,int *);
main()
{
int a,b,c;
int *p1,*p2,*p3;
printf("请输入3个数,本程序将从小到大排列:");
scanf("%d %d %d",&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
if(a>b)
swap(p1,p2);
if(a>c)
swap(p1,p3);
if(b>c)
swap(p2,p3);
printf("%d %d %d\n",a,b,c);
return 0;
}
void swap(int *x,int *y)
{
int p;
p=*x;
*x=*y;
*y=p;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5685470
2012-05-03 · TA获得超过403个赞
知道小有建树答主
回答量:138
采纳率:0%
帮助的人:152万
展开全部
swap函数有误:
int swap(int x,int y)
//这儿的参数已经用了x ,y下面再不能申请相同的变量了,而且参数应该是指针
{
int *x,*y;
int p;
p=*x;
*x=*y;
*y=p;
}
改为:
int swap(int *x,int *y)
{
int p;
p=*x;
*x=*y;
*y=p;
}
而且建议楼主改一下scanf()函数, 你的是scanf("%d%d%d",&a,&b,&c);
这样输入无法判断什么时候一个数输入结束,你可以用逗号或空格作分隔符,比如:
scanf("%d,%d,%d",&a,&b,&c);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ecdc68a
2012-05-03 · TA获得超过343个赞
知道小有建树答主
回答量:444
采纳率:0%
帮助的人:243万
展开全部
swap函数出错了
参数写的是整形
用指针应该这样写
void swap(int *x,int *y)
{
int *tmp = x;
x = y;
y = tmp;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式