C语言,,输入3个数,从小到大排序,,用指针做,

我这程序错在哪里了?
#include "stdio.h"
void main()
{
int a,b,c,*p1,*p2,*p3;
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
{if(*p1<*p2)
{
p1=&a;p2=&b;}
else p2=&a;p1=&b;
}
{if(*p2>*p3)
{
p3=&a;p2=&c;}
else p2=&a;p3=&c;}
{if(*p1>*p2)
{
p1=&c;p2=&b;}
else p2=&c;p1=&b;}

printf("%d,%d,%d",*p1,*p2,*p3);

}

1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。

2、输入预处理命令和主函数:#include<stdio.h>       /*函数头:输入输出头文件*/void main()             /*空类型:主函数*/。

3、定义变量并输入3个数:int a,b,c,t;                                 /*定义变量的数据类型为整型*/

printf("输入3个数,中间用空格隔开:");       /*输出文字提示*/ scanf("%d%d%d",&a,&b,&c);                    /*输入3个数字*/。

4、判断数值大小:if(a<b)                         /*判断a是否小于b*/{t=a;a=b;b=t;}                  /*是,则a、b的值互换*/。

5、输出3个数从小到大和从大到小排列。

6、编译输出结果。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-13

#include <stdio.h>

void swep(int *a,int *b,int *c)

{

int tmp;

    if(*a>*b)

{

tmp=*a;

*a=*b;

*b=tmp;

}

if(*a>*c)

{

tmp=*a;

*a=*c;

*c=tmp;

}

if(*b>*c)

{

tmp=*b;

    *b=*c;

*c=tmp;

}

}

void main()

{

int a,b,c;

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

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

printf("%4d%4d%4d",a,b,c);

}

第2个回答  2012-06-13
#include "stdio.h"
int main()
{
int a,b,c,temp;
scanf("%d,%d,%d",&a,&b,&c);
if(a>b)
{
temp=a;
a=b;
b=temp;
}
if(b>c)
{
temp=b;
b=c;
c=temp;
}
if(a>b)
{
temp=a;
a=b;
b=temp;
}
printf("%d,%d,%d",a,b,c);
return 0;
}

其实不用指针/用一个临时变量交换更方便追问

不用指针方法有很多种,,但是这题规定必须指针做。。我为的是错在哪里了

追答

你的错误比较多,首先else后没有大括号,else后的第二个赋值语句必定会执行
另外,判断和赋值比较乱,判断用的是指针,然后给指针赋值,因为有多次判断和赋值,指针和变量已经不是简单的p1=&a;p2=&b;p3=&c;的关系了,除非你用嵌套的if语句来写,当然这样会更麻烦。

如下,不用临时变量,只用指针,相当的烦
#include "stdio.h"
void main()
{
int a,b,c,*p1,*p2,*p3;
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
{
if(*p1*p3)
{
p3=&a;
p2=&b;
p1=&c;
}
else if (*p2>*p3)
{
p1=&b;
p2=&c;
p3=&a;
}
}
}
printf("%d,%d,%d",*p1,*p2,*p3);
}

第3个回答  2013-06-13

 #include<stdio.h>
void main()
{
int a, b, c, t, *i, *j, *k;
scanf("%d%d%d", &a, &b, &c);
i = &a;
j = &b;
k = &c;
if (*i > *j)
{
t = *j;
*j = *i;
*i = t;
}
if (*i > *k)
{
t = *k;
*k = *i;
*i = t;
}
if (*j > *k)
{
t = *k;
*k = *j;
*j = t;
}
printf("%d,%d,%d", *i, *j, *k);
}


第4个回答  2012-06-13
#include "stdio.h"
void main()
{
int a,b,c,*p1,*p2,*p3;
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
if(*p1>*p2)
{
int *p=p1;
p1=p2;
p2=p;
}
if(*p2>*p3)
{
int *p=p2;
p2=p3;
p3=p;
}
if(*p1>*p2)
{
int *p=p1;
p1=p2;
p2=p;
}
printf("%本回答被网友采纳
相似回答